我使用knnclassify共识。我尝试使用共识在类标签中找到缺失的值。
这是我的代码;
Rb = randperm(120);
Rm = randperm(120);
labeled = labeled(Rb,:);
unlabeled = unlabeled(Rm,:);
cnt = 0;
sonuc = zeros(120,1);
for i=1:120
pred=knnclassify(unlabeled,labeled,labeledClass,10,'correlation','consensus');
if pred>=1
cnt=cnt+1;
sonuc(i)= pred;
end
end
cnt;
这是我的工作区;
我的工作区良性和恶性我的班级价值观 http://imgbox.com/EmWvlqnv
代码未返回错误但是pred在所有行中返回NaN并返回一个警告;
Warning: Some points in data have small relative standard deviations,
making them effectively constant. Correlation metric may not be appropriate
for these points.
> In pdist2 at 304
In ExhaustiveSearcher.knnsearch at 207
In knnsearch at 142
In knnclassify at 162
In CancerKNNConsensus at 11
我尝试欧几里德,余弦,城市街区和相关。 如何解决这个问题?
答案 0 :(得分:1)
错误消息告诉您某些数据具有小std和常量,这会在使用相关距离时导致一些问题。
matlab中的相关距离将首先减去数据的平均值。因此,对于常数数据向量,减去平均值将导致零向量,并且未定义常量向量与任何其他数据向量的相关性。
我建议解决此问题如下:
希望这有用。