ANFIS學習筆記(二)

SimpleMikasa發表於2020-03-23

matlab自帶ANFIS工具箱介紹

上一章主要介紹了ANFIS的起源、模型以及演算法部分,這裡介紹一下matlab自帶的ANFIS工具箱的使用,詳情可參照help center中的介紹(貌似要翻牆???)。

ANFIS工具箱語法

ANFIS語法目前有以下5種。

fis=anfis(trainingData)
fis=anfis(trainingData,options)

[fis,trainError]=anfis(___)
[fis,trainError,stepSize] = anfis(___)

[fis,trainError,stepSize,chkFIS,chkError] = anfis(trainingData,options)

注意這裡的trainingData的形式為[x,y],x為訓練樣本,y為對應的標籤。

語法說明

fis = anfis(trainingData) 生成一個生成一個單輸出的Sugeno模糊推理系統(FIS),並使用指定的輸入/輸出訓練資料調整系統引數。需要注意的是這個訓練演算法結合**最小二乘法和反向傳播梯度下降法(GD-LSE)**對訓練資料集進行建模。

fis = anfis(trainingData,options) 使用指定的訓練資料和選項對FIS進行優化。

x = (0:0.1:10)';
y = sin(2*x)./exp(x/5);

%定義ANFIS結構
genOpt = genfisOptions('GridPartition');
genOpt.NumMembershipFunctions = 5;%隸屬函式個數為5
genOpt.InputMembershipFunctionType = 'gaussmf';%使用高斯隸屬函式
inFIS = genfis(x,y,genOpt);

%配置選項
opt = anfisOptions('InitialFIS',inFIS);
opt.DisplayANFISInformation = 0;%是(1)否(0)顯示ANFIS訓練資訊
opt.DisplayErrorValues = 0;%是(1)否(0)顯示ANFIS目標訓練誤差
opt.DisplayStepSize = 0;%是(1)否(0)顯示訓練步長
opt.DisplayFinalResults = 0;%是(1)否(0)顯示訓練結果

%按照設定的選項訓練ANFIS
outFIS = anfis([x y],opt);

%圖形化顯示
plot(x,y,x,evalfis(outFIS,x))
legend('Training Data','ANFIS Output')

執行結果如下:
這個例子的結果

對於anfisOptions引數的說明:

  1. ‘InitialFIS’:隸屬函式個數,default 2|正整數|正向量|FIS structure(genfis的輸出)
  2. ‘EpochNumber’:最大迭代次數,default 10|正整數
  3. ‘ErrorGoal’:目標訓練誤差,default 0
  4. ‘InitialStepSize’:訓練步長,default 0.01
  5. ‘StepSizeDecreaseRate’:步長減小率,default 0.9
  6. ‘StepSizeIncreaseRate’:步長增長率,default 1.1

[fis,trainError,stepSize] = anfis(___)和前面類似,返回fis以及每個epoch的訓練誤差和步長(array形式)。

[fis,trainError,stepSize,chkFIS,chkError] = anfis(trainingData,options)
用訓練資料集trainingData訓練後,在opt中加入驗證資料集,返回訓練fis、訓練誤差、步長、驗證fis、驗證誤差。
加驗證資料集的具體方法:在前面程式碼中配置選項後面加上:

opt.ValidationData = chkData;%chkData為你要加的驗證資料集

至此,基礎的ANFIS介紹結束,這篇介紹matlab自帶ANFIS工具箱的參考網址如下,還是建議去看一看。

https://ww2.mathworks.cn/help/fuzzy/anfis.html#bvnmr5c-1
https://ww2.mathworks.cn/help/fuzzy/anfisoptions.html#namevaluepairs

相關文章