fitcknn fit code matlab machine-learning neural-network classification cross-validation

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.