machine learning - Matlab KNNClassify Consensus -


i use knnclassify consensus. try find missing values in class label using consensus.

this code;

rb = randperm(120); rm = randperm(120);  labeled = labeled(rb,:); unlabeled = unlabeled(rm,:);  cnt = 0; sonuc = zeros(120,1);  i=1:120     pred=knnclassify(unlabeled,labeled,labeledclass,10,'correlation','consensus');     if pred>=1         cnt=cnt+1;         sonuc(i)= pred;     end end  cnt; 

and workspace;

my workspace benign , malignant class values http://imgbox.com/emwvlqnv

code not return error pred return nan in row , return 1 warning;

warning: points in data have small relative standard deviations, making them constant. correlation metric may not appropriate these points.  > in pdist2 @ 304   in exhaustivesearcher.knnsearch @ 207   in knnsearch @ 142   in knnclassify @ 162   in cancerknnconsensus @ 11  

i try euclidean, cosine, cityblock , correlation. how fix this?

the error message telling of data have small std , constant, cause problems when using correlation distance.

the correlation distance in matlab subtract mean of data first. constant data vector, subtracting mean result in 0 vector, , correlation of constant vector other data vector not defined.

my suggestion fix problem follows:

  1. identify these data points based on std, , remove these data small std before using knn clusfier;
  2. normalize data may help;
  3. try other distance metric.

hope helpful.


Comments

Popular posts from this blog

angularjs - ADAL JS Angular- WebAPI add a new role claim to the token -

php - CakePHP HttpSockets send array of paramms -

node.js - Using Node without global install -