2

Matlab のファジー ツールボックスを使用して、検証セットのエラーを計算しようとしています。最初の相互検証は、最初のトレーニング データをトレーニング セットとテスト (検証) セットに分割するために使用されます。ただし、この検証フェーズでは、genfis3 関数のさまざまなパラメーター設定に対してもエラーを取得したいと考えています。この関数の 4 番目の入力を 2 から 10 まで変化させ、平均誤差を計算したいと思います。

fismat3 = genfis3(X1,Y1,'sugeno',2);

コード全体:

 [m,~]=size(dataTrain);
    CVO = cvpartition(m,'k',10);
    err = zeros(CVO.NumTestSets,1);

    for i = 1:CVO.NumTestSets
     trIdx = CVO.training(i);
     teIdx = CVO.test(i);
     X1=Xtrain(trIdx,:);
     X2=Xtrain(teIdx,:);
     Y1=Ytrain(trIdx,:);
     Y2=Ytrain(teIdx,:);

     fismat3 = genfis3(X1,Y1,'sugeno',2);
     fismat3 = anfis([X1,Y1],fismat3);
     out1=evalfis(X2,fismat3);
     ee=Y2-out1;
     err(i)=mean(abs(ee));
end
Error32 = mean(err)
4

1 に答える 1

0

理解した:

[m,~]=size(dataTrain);
CVO = cvpartition(m,'k',10);
err = zeros(CVO.NumTestSets,9);%9 denotes the amount of different parameter setting you want to validate
out = zeros(CVO.NumTestSets,1);
ee = zeros(CVO.NumTestSets,1);
for i = 1:CVO.NumTestSets %voor iedere test en training set
     trIdx = CVO.training(i); %selecteer index training data
     teIdx = CVO.test(i); %selecteer index test data
     X1=Xtrain(trIdx,:); %Creer training input variabelen
     X2=Xtrain(teIdx,:); %Creer test input variabelen
     Y1=Ytrain(trIdx,:); % Creer training output variable
     Y2=Ytrain(teIdx,:); % Creer test output variable

for j = 2:10     
     fismat3 = genfis3(X1,Y1,'sugeno',j); %creer voor iedere test en training set een andere genfis 3
     fismat3 = anfis([X1,Y1],fismat3); %optimaliseer using anfis
     out1=evalfis(X2,fismat3);          
     ee=Y2-out1;
     err(i,j-1)=mean(abs(ee));
end

end

Error = mean(err)
于 2016-01-24T19:17:11.820 に答える