无法分类

Unable to classify

我是 matlab 的新手,我想进行 10 次交叉验证,然后对矩阵进行分类,然后显示其 ROC。

indices = crossvalind ('KFold', labels, 10); 

cp= classperf (labels);

for i= 1:10 
   test= find (indices == i);
   train= find (indices ~= i);
   class =fitcknn (ANorm, labels);
   classperf (cp, class, test);
end

cp.errorRate;

plotroc(class,labels);

但是,我不断收到这些错误:

Error using classreg.learning.internal.DisallowVectorOps/subsref (line 16)
You cannot index into an object of class ClassificationKNN using () indexing.

Error in classperf (line 219)
gps = varargin{1}(:);

Error in M (line 108)
classperf (cp, class, test);

谁能告诉我为什么会出现这些错误?

您应该使用 predict 方法。我没有fitcknn,所以我用了ClassificationKNN.fit。您在代码中获得的 class 对象不能与 classperf 一起使用。您应该向它发送 numeric/string 标签。因此错误。

labels=[zeros(100,1);ones(100,1)];
ANorm=[1+2*randn(100,30);4+1.5*randn(100,30)];

indices = crossvalind ('KFold', labels, 10); 
cp=classperf(labels);

for i= 1:10 
   test=  (indices == i);
   train=  (indices ~= i);
   labelsTest=labels(test);
   mdl =ClassificationKNN.fit (ANorm, labels);
   labelsPredict = predict(mdl,ANorm(test,:));
   classperf(cp,labelsPredict,test);
end

cp.errorRate