Cross validation with KNN classifier in Matlab

大憨熊 提交于 2019-12-24 00:50:53

问题


I am trying to extend this answer to knn classifier:

load fisheriris;

% // convert species to double
isnum = cellfun(@isnumeric,species);
result = NaN(size(species));
result(isnum) = [species{isnum}];

% // Crossvalidation
vals = crossval(@(XTRAIN, YTRAIN, XTEST, YTEST)fun_knn(XTRAIN, YTRAIN, XTEST, YTEST), meas, result);

the fun_knn funcion is:

function testval = fun_knn(XTRAIN, YTRAIN, XTEST, YTEST)
    yknn = knnclassify(XTEST, XTRAIN, YTRAIN);      
    [~,classNet] = max(yknn,[],2);
    [~,classTest] = max(YTEST,[],2);
    [~,classTest] = find(YTEST);    
    cp = classperf(classTest, classNet);        
    testval = cp.CorrectRate;
end

I receive this error: Ground truth must have at least two classes.

Seems like the problem is that knnclassify produces empty result.I would like to use more modern funcitons like fitcknn, however I dont know how can I use training and task input for this function.

来源:https://stackoverflow.com/questions/34826822/cross-validation-with-knn-classifier-in-matlab

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!