تمرین کاربردی – می خواهیم با برخی از پارامترهای هواشناسی شامل دمای میانگین، تابش و سرعت باد، مقدار تبخیر از سطح تشتک را در ایستگاه سینوپتیک شیراز تخمین بزنیم. اطلاعات پارامترهای مذکور در فایل Monthly_Shiraz data.xls و در پوشه ANNs وجود دارد. با استفاده از اسکریپت های برنامه نویسی مربوط به ANNs این مدل سازی را انجام دهید.

ابتدا اطلاعات فایل Monthly_Shiraz data.xls را با استفاده از فرمان xlsread به محیط MATLAB فراخوانی می کنیم. داده های ورودی و خروجی را مشخص و همچنین داده های اعتبارسنجی نهایی مدل را نیز مجزا می کنیم. 

clc

clear

[num,txt] = xlsread('Monthly_Shiraz data');% It Reads data and strings

%from the excel file

Input = num(:,3:5)'; % Monthly Tmean, Sunshine and wind velocity

Evap = num(:,6)'; % Monthly Evaporation as target

Input_Eval = Input(:,end-9:end);

Input(:,end-9:end) = [];

Evap_Eval = Evap(:,end-9:end);

Evap(:,end-9:end) = [];

 

 

حال شروع به تعدیل اسکریپت استخراج شده از GUI مربوط به nftool که در بخش قبلی ایجاد گردید، می نماییم. ابتدا ماتریسهای ورودی و هدف را مشخص می کنیم.

 

inputs = Input;

targets = Evap;

 سپس الگوریتم آموزش شبکه را تعیین می کنیم. در اینجا باز هم الگوریتم آموزش Levenberg-Marquardt را انتخاب می نماییم.

trainFcn = 'trainlm';  % Levenberg-Marquardt

 

در مرحله بعدی تعداد نرون در لایه مخفی را مشخص میکنیم که مطابق با مثال قبلی برابر با 12نرون در نظر گرفته شده است.

 

hiddenLayerSize = 12;

حال شبکه را ایجاد می کنیم. شبکه پیش فرض MATLAB برای مدلسازی از نوع برازش یا رگرسیون fitnet می باشد. این شبکه از نوع پیشخور دارای دو لایه و نوع تابع انتقال tansig در لایه مخفی و نوع purline در لایه خروجی است.

 

net = fitnet(hiddenLayerSize,trainFcn);

 

حال نسبت یا درصد داده های مربوط به آموزش، راستی آزمایی و آزمون مدل را با استفاده از فرمان های ذیل تعیین نمایید.

 

net.divideParam.trainRatio = 70/100;

net.divideParam.valRatio = 15/100;

net.divideParam.testRatio = 15/100;

 

توجه داشته باشید که در اینجا و به صورت پیش فرض برای تعیین داده های مربوط به آموزش، راستی آزمایی و آزمون از روش کاملاً تصادفی انتخاب شده است که فرمان مربوط به آن dividerand می باشد. روش های دیگری نیز برای این تقسیم بندی وجود دارند. برای کسب اطلاعات بیشتر فرمان های divideint ،divideblock و divideind را در راهنمای نرم افزار جستجو کنید.

اکنون نوبت به آموزش شبکه عصبی مصنوعی می رسد که با معرفی شبکه، متغیرهای ورودی و هدف این کار میسر می گردد. در حین اجرای این ان دوباره پنجره فرآیند اجرای آموزش مدل (شکل )32
-7 ظاهر می گردد.

 

[net,tr] = train(net,inputs,targets);

 

حال اگر net را در خط فرمان MATLAB تایپ و کلید ENTER را بزنید، مشخصات net پدیدار می گردد که تمامی اطلاعات مربوط به شبکه آموزش داده شده در آن وجود دارد.

البته در نظر داشته باشید که بیشتر توابع مورد استفاده در شبکه های عصبی مصنوعی فرآیند پیش پردازش و پس پردازش داده ها و خصوصاً نرمال سازی داده ها را به صورت اتوماتیک بر داده های ورودی و خروجی اعمال می کنند.

Untitled

اعمال پیش پردازش و پس پردازش داده ها به صورت اتوماتیک

 

چنانچه بخواهید از نوع فرآیند پیش پردازش اطلاعات خصوصاً نرمال سازی داده ها شبکه اطلاع حاصل کنید فرمان ذیل را اجرا نمایید. در اینجا مشخص است که از تابع mapminmax استفاده شده که محدوده داده ها را بین و -1 نرمال می کند.

 

>> net.inputs {1}.processFcns

ans =

'mapminmax'

 

 

می توان قبل از اجرای آموزش شبکه mapminmax را با سایر روش های نرمال سازی مانند mapstd یا processpca که به ترتیب از انحراف معیار داده ها و همچنین روش مؤلفه های اصلی برای پیش پردازش داده ها استفاده می کنند، جایگزین نمود.
بعد از اجرای آموزش شبکه نوبت به ارزیابی شبکه می رسد. اگر خروجی های معادل با ورودی ها را از شبکه
net اقتباس و آن ها را در مقابل آرایه هدف قرار دهید عملکرد کلی مدل ( )Overall نشان داده می شود. در اینجا Output مقادیر تخمین زده شده و targets مقادیر واقعی است. eحاصل تفریق بین مقادیر واقعی و مشاهده شده است. 

 

Output = net(inputs);

e = gsubtract(targets,Output);

performance = perform(net,targets,Output);

 

performance نیز کارایی مدل بر اساس شاخص مورد نظر که در تنظیمات net.performFcn در نظر گرفته شده است که به صورت پیش فرض شاخص MSE یا میانگین مجذور خطا می باشد.

 

>> net.performFcn

ans =

mse

 

برای بررسی کارایی مدل از فرمان ذیل استفاده کنید.

figure, plotregression(targets,Output)

 

1

مقادیر مشاهده شده در مقابل مقادیر برآورد شده تبخیر از سطح تشتک ایستگاه شیراز

ضریب همبستگی که در عنوان نمودار نشان داده شده است نیز به صورت ذیل قابل اقتباس است.

 

R = corr(targets(:),Output(:))
ans =
0.9889

 

البته در اینجا ما فقط کارایی کلی (Overall) مدل را بررسی کردیم. برای بررسی کارایی مدل در رابطه مرحله آزمون یا Test به ترتیبی که در ادامه آمده است عمل نمایید. در اینجا testInd اندیس نمونه هایی است که برای آزمون بدون دخالت کاربر کنار گذاشته شده اند و در اینجا فقط کاربر درصد سهم آنها را تعیین نموده است. برای ترسیم نمودار پراکنش داده های آزمون در مقابل مقادیر واقعی آن از فرمان plotregression استفاده نمایید.

 

 

figure
;testInd = tr.testInd
;((tstOutputs = net(inputs(:,testInd
;(tsttargets = targets(testInd
(plotregression(tsttargets,tstOutputs

 

2

مقادیر پیش بینی شده در مقابل مقادیر واقعی تبخیر در مرحله آزمون مدل 

 همچنین اگر می خواهید تمام زیرنمودارهای مربوطه را داشته باشید بر روی دکمه رگرسیون از پنجره اجرای آموزش مدل ( Neural Network Training یا nntraintool) کلیک نمایید. البته تولید این شکل از طریق اقتباس اطلاعات اندیس های مربوط به راستی آزمایی و آزمون شبکه که در آرایه ساختمان tr قرار دارند نیز امکان پذیر است.

3

نمودار مقادیر مشاهده شده در مقابل مقادیر واقعی در فرآیندهای آموزش، راستی آزمایی، آزمون و همچنین مجموع فرآیندها

در هنگام آماده سازی داده ها مشاهده نمودید که 10 نمونه آخر تولید شده جهت ارزیابی نهایی و اعتبارسنجی مدل کنار گذاشته شد. حال با استفاده از فرمان های ذیل می توانید اعتبارسنجی نهایی مدل را نیز اعمال نمایید.

Output_Eval = net(Input_Eval);

plotregression(Evap_Eval,Output_Eval)

 4

 مقادیر پیش بینی شده در مقابل مقادیر واقعی تبخیر در فرآیند اعتبارسنجی نهایی مدل

 

 

 

 

mafahim.jpg

 Pardazesh.jpg

Attachments:
Download this file (Evaporate_estimate_Shiraz_1.m)m-file محاسبه تبخیر در ایستگاه شیراز با استفاده از شبکه های عصبی مصنوعی[m-file محاسبه تبخیر در ایستگاه شیراز با استفاده از شبکه های عصبی مصنوعی]1 kB
Download this file (Monthly_Shiraz data.xls)فایل Excel حاوی اطلاعات پارامترهای اقلیمی ایستگاه هواشناسی شیراز[فایل Excel حاوی اطلاعات پارامترهای اقلیمی ایستگاه هواشناسی شیراز]43 kB