Guest User

Untitled

a guest
May 31st, 2018
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.74 KB | None | 0 0
  1. void KnnAccuracy(const arma::mat& dataset,const arma::Row<size_t>& labels, size_t k)
  2. {
  3.   arma::Row<size_t> uniqueLabels = arma::unique(labels);
  4.  
  5.   arma::Mat<size_t> neighbors;
  6.   arma::mat distances;
  7.  
  8.   neighbor::KNN knn;
  9.  
  10.   knn.Train(dataset);
  11.   knn.Search(k, neighbors, distances);
  12.  
  13.   //Keep count.
  14.   double count = 0.0;
  15.  
  16.   for (size_t i = 0; i < dataset.n_cols; i++)
  17.   {
  18.     arma::Row<size_t> Map;
  19.     Map.zeros(uniqueLabels.n_cols);
  20.  
  21.     for (size_t j=0; j < k; j++)
  22.       Map(labels(neighbors(j,i)))++;
  23.  
  24.     arma::vec ind = arma::conv_to<arma::vec>::from(arma::find(Map == arma::max(Map)));
  25.     if (ind(0) == labels(i))
  26.         count++;
  27.   }
  28.  
  29.   std::cout << "Accuracy : " << (count / dataset.n_cols) * 100  << std::endl;
  30. }
Add Comment
Please, Sign In to add comment