2016-01-24 3 views
2

Использование нечеткой панели инструментов в Matlab, я пытаюсь вычислить ошибку в наборе проверки. Первая перекрестная проверка используется для разделения исходных данных обучения в наборе обучения и тестирования (проверки). Однако в этой фазе проверки я хотел бы получить ошибку также для разных параметров в функции genfis3. Я хотел бы изменить четвертый вход в этой функции от 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) 

ответ

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)