error using classperf

조회 수: 3 (최근 30일)
FIR
FIR 2012년 4월 11일
I have a code
data=[0.5 .3 0.6 0.5;0.2 0.3 0.5 0.9;0.1 0.7 0.2 0.8;0.5 .3 0.6 0.5;0.2 0.3 0.5 0.9;0.1 0.7 0.2 0.8]
TrainData=data(:,1:2)
TestVector=data(:,3:4)
groups=[0;1;1;0;1;1]
cvFolds = crossvalind('kfold', groups, 10); %# get indices of 10-fold CV %# get indices of 10-fold CV
cp = classperf(groups);
for i = 1:10
% testIdx = (cvFolds == i); %# get indices of test instances
% trainIdx = ~testIdx;
Training=(data(:,1:2));
TestVector=data(:,3:4)
Group=groups;
TreeObject=TreeBagger(50,Training,Group,'NVarToSample','all');
[YFIT,scores] = predict(TreeObject,TestVector);
%cp = classperf(cp, YFIT, testIdx)
cp = classperf(cp, YFIT)
end
I get error
Error using classperf (line 230)
When the class labels of the CP object are numeric, the output
of the classifier must be all non-negative integers or NaN's.
Error in yass (line 30)
cp = classperf(cp, YFIT)

채택된 답변

Ilya
Ilya 2012년 4월 11일
In your code snippet, the error is caused by TreeBagger returning predicted class labels as a cell array of strings, while the class labels (groups variable) passed to classperf are numeric. To avoid this, convert groups to a cell array of strings:
groups = cellstr(num2str(groups))
  댓글 수: 2
FIR
FIR 2012년 4월 12일
am getting the same error as before
Error using classperf (line 230)
When the class labels of the CP object are numeric, the output
of the classifier must be all non-negative integers or NaN's.
Error in ya (line 23)
cp = classperf(cp, YFIT)
Ilya
Ilya 2012년 4월 12일
Well, the error says "When the class labels of the CP object are numeric..." This means you have not converted groups to a cell array before passing to classperf.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Spectrum and Signal Analysis에 대해 자세히 알아보기

태그

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by