999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

一種回聲狀態神經網絡分類挖掘教學演示模型

2016-02-19 09:36:25王華秋
計算機時代 2016年2期

王華秋

DOI:10.16644/j.cnki.cn33-1094/tp.2016.02.024

摘 ?要: 回聲狀態神經網絡分類算法是一種重要的數據挖掘方法,是處理大數據分類的重要工具。但該算法原理比較抽象,從公式推導的角度很難讓學生深刻理解,因此提出利用MATLAB數學軟件實現回聲狀態神經網絡分類算法,將其編譯成.NET平臺的COM組件,由Visual C#.NET集成開發環境下的應用程序調用編譯后的MATLAB的COM組件,實現回聲狀態神經網絡的分類模型。

關鍵詞: 回聲狀態神經網絡; 分類模型; MATLAB組件; Windows應用程序

中圖分類號:G642 ? ? ? ? ?文獻標志碼:A ? ? 文章編號:1006-8228(2016)02-82-04

A teaching demonstration model of classification mining

based on echo state neural network

Wang Huaqiu

(Computer Science and Engineering College, Chongqing University of Technology, Chongqing 400054, China)

Abstract: Echo state neural network classification algorithm is an important data mining method, which is an important tool to deal with classification of Big data. But the principle of the algorithm is abstract and complex, and it is very difficult for the students to understand the essence of the algorithm from the angle of formula derivation. In this paper, echo state neural network classification algorithm is realized by MATLAB mathematics software, and is compiled into COM component on .NET platform. The compiled COM component is called by an application program, which is developed in Visual C#.NET integrated environment, to realize the echo state neural network classification model.

Key words: echo state neural network; classification model; MATLAB component; Windows application program

0 引言

回聲狀態神經網絡(ESN)由Jaeger于2001年提出[1],其特點在于將隨機稀疏連接的神經元構成的儲備池作為隱藏層,用以對輸入進行高維的、非線性的表示。回聲狀態神經網絡常用于解決數據分類決策問題,Alexandre等[2]提出面向靜態模式分類的回聲狀態網絡方法。彭喜元等[3]在此基礎上提出了隨機子空間多儲備池分類模型,提高了傳統回聲狀態網絡分類模型的泛化能力及分類性能,郭嘉等[4]在Alexandre基礎上提出了基于相應簇的回聲狀態網絡靜態分類方法,將儲備池子簇與需分類數據類別數量建立對應關系,能夠更好地滿足對不同數據有針對性的分類需求。

神經網絡分類算法是數據挖掘的一種重要方法,是教學中的重點環節,由于回聲狀態神經網絡分類算法比較復雜,單從公式推導的角度講解,學生會難以真正理解,因此需要編程實現這些算法,讓學生有一個直觀的認識,這種分類算法需用到多種數學公式,用高級語言編程代碼量較大,學生依然難于理解,為了用少量的代碼編寫復雜的分類算法程序,本文采用專業數學軟件MATLAB實現了回聲狀態神經網絡分類算法。但由于MATLAB軟件主要是處理數學公式,進行復雜的矩陣運算,因此專業性較強,對于非數學專業用戶來說輸入矩陣復雜、輸出結果抽象,較難理解[5],而且MATLAB是純粹的數學計算工具,操作界面繁瑣,造成用戶使用不方便[6]。本文采用混合編程技術,即使用.NET編程環境,通過COM組件跨平臺調用的方式集成MATLAB自定義DLL組件,構建既能夠進行專業的數學分析和數學計算,又具有友好的操作界面,方便非專業人員使用的分類模型。

1 總體思路

首先,在MATLAB R2010b中新建.NET Aseembly類型的工程,編寫實現分類算法的m文件,編譯生成相應的COM組件。在Visual Studio 2010應用程序中引用MATLAB R2010b組件MWArray和實現分類算法的自定義組件,結合頁面輸入將數據參數傳遞給自定義組件,就可進行分析計算,并將結果返回到界面中。系統的技術架構如圖1所示。

2 回聲狀態網絡分類模型

ESN是一種新型的遞歸神經網絡,由輸入層、儲備池、輸出層組成,其結構如圖2所示。

假設該網絡中輸入層有K個輸入,儲備池有N個內部連接單元,輸出層有L個輸出,儲備池內部單元狀態更新方程如公式⑴所示:

x(n+1)=f(Winu(n+1)+Wx(n)) ?⑴

其中,x(n)=(x1(n),…,xN(n))T表示回聲狀態網絡的狀態變量,y(n)=(y1(n),…,yL(n))T表示目標輸出,u(n)=(u1(n),…,uK(n))T表示輸入。f表示儲備池處理單元處理函數,本文選擇雙曲正切函數tanh。Win表示輸入單元與儲備池處理單元的連接權值,W為儲備池內處理單元之間的連接權值,其中Win、W無須訓練,經初試給定后不再發生改變。

回聲狀態網絡分類模型在訓練某特征數據對應的狀態變量x(n)時保持輸入數據不變,當狀態變量的變化量‖x(n)-x(n-1)‖小于閾值δ時,表示狀態變量趨于穩定,該特征數據對應的狀態變量訓練完成。

關鍵代碼如下:

X1=zeros(N,n);

Yt=I_OUT;

for t=1:n

u=I_1(:,t);

x1=zeros(N,1);

x11=zeros(N,1)+1;

his=200;

error=0;

while(sum(abs(x1-x11))>1&&error<2)

if(sum(abs(x1-x11))-his>0)

error=error+1;

his=sum(abs(x1-x11));

x11=x1;

x1=tanh(Win1*[1;u] + W1*x1);

else

error=0;

his=sum(abs(x1-x11));

x11=x1;

x1=tanh(Win1*[1;u] + W1*x1);

end

end

X1(:,t)=x1;

end

分類輸出如公式⑵所示:

y(n+1)=Woutf(u(n+1),x(n+1)) ?⑵

其中,Wout表示儲備池與輸出單元的連接權值為輸出層到儲備池的連接權值,通過狀態變量計算得到,f為輸出單元處理函數。

關鍵語句如下:

x1=tanh(Win1*[1;u]+W1*x1);

y=Wout1*x1;

3 生成COM組件

在MATLAB R2010b中編譯生成.NET使用的COM組件的步驟如下:

⑴ 新建Deployment Project,名稱為DM.prj,選擇Type為.NET Assembly。

⑵ 新建m文件,將實現回聲狀態神經網絡分類算法的語句寫入其中。

⑶ 在MATLAB R2010b窗口右側的.NET Assembly對話框中,依次選擇Add class和Add files添加ESNClassificationTrain.m和ESNClassificationTest.m文件。通過build 按鈕即可進行編譯。編譯完成后會在安裝目錄C:\Program Files\MATLAB\R2010b\

bin\DM\distrib下生成DM.dll和DMNative.dll文件。

4 分類模型的實現

在VS2010中調用MATLAB R2010b中的dll文件實現分類模型步驟如下。

⑴ 在VS2010中新建項目,使用C#語言建立Windows應用程序。

⑵ 在VS2010中設計友好的交互界面。

⑶ 在設計界面中,添加原始數據表格DataGridView,根據原始數據量的大小確定儲備池有N個內部連接單元個數,這是惟一需要設置的參數。在表格右邊加入三個TextBox控件,分別存放目標分類結果,實際分類結果和分類正確標志。在Button控件的Clicked 事件中,加入代碼,實現IRIS數據庫的回聲狀態網絡分類。這樣即可方便用戶參看原始數據,又可觀察分類效果,實現了良好的界面展示。

⑷ 添加引用組件:在.NET編程環境中,MATLAB程序輸入、處理、輸出的數字數據只能是MWNumericArray類型的矩陣。所以需引用MWarray.dll組件,該組件的位置在MATLAB的安裝目錄\MATLAB\R2010b\toolbox\dotnetbuilder\bin\win32\

v2.0下。另外,還需添加上述的自定義組件DM.dll和DMNative.dll。

在代碼中加入以下語句,即可在程序中調用相應組件。

using MathWorks.MATLAB.NET.Arrays;

using MathWorks.MATLAB.NET.Utility;

using DM;

⑸ 由于MWarray.dll是64位的組件,而Windows應用程序編譯生成的程序是32位的。因此要需要在工程屬性中將應用程序生成的目標平臺設置為x64。

⑹ 根據界面輸入,提取相應的判斷矩陣,數據格式的轉換是需要解決的主要問題。

關鍵語句如下:

//定義二維數組,用于存儲輸入、輸出數據。

double[,] I_1=new double[dt.Columns.Count-1, dt.Rows.Count];

double[,] I_OUT=new double[ay.Count -1, dt.Rows.Count];

//定義MATLAB類型的矩陣變量

MWNumericArray arrI_1=null;

//強制類型轉換,以便作為參數傳遞給MATLAB生成的COM組件

arrI_1=(MWNumericArray)(I_1);

MWNumericArray arrI_OUT=null;

arrI_OUT=(MWNumericArray)(I_OUT);

⑺ 調用DM組件實現分類決策。添加“IRIS數據分類”按鈕,在click事件中寫入代碼,調用MATLAB生成的組件,實現分類決策。這里以IRIS鳶尾花數據作為分類算法的數據來源,數據集包含150個數據集,分為三類,每類50個數據,每個數據包含4個屬性,三類分別為:setosa,versicolor,virginica,數據包含4個獨立的屬性,這些屬性變量測量植物的花朵,比如萼片和花瓣的長度等。

關鍵代碼如下:

ESN e1=new ESN(); //初始化一個對象

MWArray[] argsOut1=null; //用于存儲多個輸出結果

int numArgsOut1=3;

int N=40;

argsOut1=e1.ESNClassificationTrain(numArgsOut1,arrI_

1,arrI_OUT,N); //調用MATLAB中寫好的函數ESNClassificationTrain,此函數的功能是根據數據訓練分類模型,得到3組輸出參數,即Win,W和Wout。

MWArray[] argsOut2=null; //用于存儲多個輸出結果

int numArgsOut2=3;

argsOut2=e1.ESNClassificationTest(numArgsOut2,

(MWArray)argsOut1.GetValue(0), (MWArray)argsOut1

.GetValue(1), (MWArray)argsOut1.GetValue(2),arrI_1,

arrI_OUT,N); //調用MATLAB中寫好的函數ESNClassificationTest,此函數的功能是根據判斷數據的分類結果,得到3組輸出參數,即目標分類結果,實際分類結果和分類錯誤標識。

//輸出的MWArray[]類型轉換為double[,]

double[,] targetOut=new double[1,argsOut2[0]

.NumberOfElements];

targetOut=(double[,])argsOut2[0].ToArray();

double[,] realOut=new double[1,argsOut2[1]

.NumberOfElements];

realOut=(double[,])argsOut2[1].ToArray();

double[,] correctID=new double[1,argsOut2[2]

.NumberOfElements];

correctID=(double[,])argsOut2[2].ToArray();

//將目標值,實際值和錯誤標識顯示在控件中

for (int i=0; i<targetOut.Length; i++)

{

textBox1.Text+=targetOut[0,i].ToString()+"\r\n";

textBox5.Text+=realOut[0,i].ToString()+"\r\n";

if(correctID[0,i]!=0)

textBox6.Text+=i.ToString()+"出錯"+"\r\n";

else

textBox6.Text+=""+"\r\n";

}

最終實現的分類模型運行結果如圖3所示。

5 總結

回聲狀態神經網絡分類比較復雜,傳統的公式推導令人難以理解,用高級語言編程又難以用簡潔代碼實現,為了用簡易的計算機代碼反映復雜的數學公式,本文利用MATLAB與.NET混合編程實現基于回聲狀態神經網絡分類挖掘實驗演示系統,體現了MATLAB專業數學軟件功能強大、計算簡單的優勢,通過.NET平臺調用編譯后的MATLAB的COM組件,通過界面的直觀設計,簡化用戶操作,提高了程序的可操作性。本文使用的實例是回聲狀態神經網絡分類模型,今后在實際應用中可自行構建具體目標的指標體系實現分類決策。

參考文獻(References):

[1] Jaeger H. The “Echo State” Approach to Analysing and

Training Recurrent Neural Networks[R]. German National Reasearch Center for Information Technology,2001.

[2] Alexandre L A, Embrechts M J, Linton J. ?Benchmarking

Reservoir Computing on Time-independent Classification Tasks[C].In: Proceedings of the 2009 International Joint Conference on Neural Networks, Atlanta GA, USA,2009:89-93

[3] 彭喜元,郭嘉,王建民.基于隨機子空間與多儲備池的分類方

法[J].儀器儀表學報,2011.32(11):2487-2492

[4] 郭嘉,雷苗,彭喜元.基于相應簇回聲狀態網絡靜態分類方法[J].

電子學報,2011.39(3):14-18

[5] 蔣順業,蘭洋.C#與Matlab混合編程在預警系統中的應用[J].

軟件,2013.34(4):83-84

[6] 田鵬,姜印平.MATLAB與C#混合編程在ASP.NET數值計

算中的分析與實現[J].天津理工大學學報,2014.30(4):41-45

主站蜘蛛池模板: 亚洲精品国产日韩无码AV永久免费网 | 国产二级毛片| 欧美国产精品不卡在线观看| 婷婷亚洲最大| 久久国产精品77777| 国产精品久久久久久久久kt| 青草精品视频| 亚洲天堂精品视频| 欧美亚洲国产精品久久蜜芽| 国产全黄a一级毛片| 91九色视频网| 秘书高跟黑色丝袜国产91在线 | 欧美亚洲一二三区| av大片在线无码免费| 国产成人高清亚洲一区久久| 黄色三级毛片网站| 亚洲无码A视频在线| 999国产精品| 国产精品欧美激情| 国产女主播一区| 久久夜夜视频| 亚洲精品无码在线播放网站| 超级碰免费视频91| 偷拍久久网| 日本人妻一区二区三区不卡影院| 欧美亚洲欧美| 亚洲va视频| 最新国产精品鲁鲁免费视频| 亚洲欧美不卡中文字幕| 国产天天射| a级毛片免费播放| 亚洲欧美在线看片AI| 草草影院国产第一页| 色妞www精品视频一级下载| 欧美精品成人| 青青草原国产一区二区| 欧美日本二区| 精品1区2区3区| 有专无码视频| 广东一级毛片| 午夜福利在线观看成人| 国产精品林美惠子在线播放| 免费xxxxx在线观看网站| 老色鬼久久亚洲AV综合| 中国国产高清免费AV片| 青青青国产视频手机| 国产97视频在线观看| 久久精品女人天堂aaa| 精品国产成人国产在线| 国产在线欧美| 成色7777精品在线| 国产91熟女高潮一区二区| 亚洲精品无码AV电影在线播放| 久久人与动人物A级毛片| 国产精品入口麻豆| 高清码无在线看| 波多野结衣第一页| 亚洲va视频| 久久鸭综合久久国产| 日日碰狠狠添天天爽| 日本不卡免费高清视频| 久视频免费精品6| 成人亚洲天堂| 国产免费网址| 国产成人综合在线视频| 国产一区二区三区精品久久呦| 99热国产这里只有精品无卡顿"| 亚洲区一区| 日韩123欧美字幕| 久久伊人操| 亚洲欧美日韩综合二区三区| 国产成人精品高清不卡在线| 国产a网站| 为你提供最新久久精品久久综合| 欧美在线三级| a色毛片免费视频| 67194成是人免费无码| 五月天久久综合国产一区二区| 国内精品伊人久久久久7777人| 中文一级毛片| 91极品美女高潮叫床在线观看| 欧美精品啪啪一区二区三区|