fit - knn algorithm matlab code
ValidaciĆ³n cruzada con el clasificador KNN en Matlab (0)
Estoy tratando de extender esta respuesta al clasificador knn:
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);
la función fun_knn
es:
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
Recibo este error: Ground truth must have at least two classes.
Parece que el problema es que knnclassify
produce un resultado vacío. Me gustaría utilizar funcitons más modernos como fitcknn
; sin embargo, no sé cómo puedo usar el entrenamiento y la entrada de tareas para esta función.