Ignore:
Timestamp:
Feb 25, 2008, 3:32:35 PM (14 years ago)
Author:
Markus Ringnér
Message:

Refs #335, fixed for NCC, working on KNN

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/yat/classifier/NCC.h

    r1124 r1142  
    198198          if(class_averager[c].sum_w()==0) {
    199199            centroids_nan_=true;
    200             (*centroids_)(i,c) = std::numeric_limits<double>::quiet_NaN();
    201200          }
    202           else {
    203             (*centroids_)(i,c) = class_averager[c].mean();
    204           }
     201          (*centroids_)(i,c) = class_averager[c].mean();
    205202        }
    206203      }
     
    262259                                         utility::Matrix& prediction) const
    263260  {
    264     MatrixLookup unweighted_centroids(*centroids_);
    265     for(size_t j=0; j<test.columns();j++) {       
    266       DataLookup1D in(test,j,false);
    267       for(size_t k=0; k<centroids_->columns();k++) {
    268         DataLookup1D centroid(unweighted_centroids,k,false);           
    269         utility::yat_assert<std::runtime_error>(in.size()==centroid.size());
    270         prediction(k,j) = distance_(in.begin(), in.end(), centroid.begin());
    271       }
    272     }
    273   }
    274 
     261    MatrixLookup centroids(*centroids_);
     262    for(size_t j=0; j<test.columns();j++)
     263      for(size_t k=0; k<centroids_->columns();k++)
     264        prediction(k,j) = distance_(test.begin_column(j), test.end_column(j),
     265                                    centroids.begin_column(k));
     266  }
     267 
    275268  template <typename Distance>
    276269  void NCC<Distance>::predict_weighted(const MatrixLookupWeighted& test,
     
    278271  {
    279272    MatrixLookupWeighted weighted_centroids(*centroids_);
    280     for(size_t j=0; j<test.columns();j++) {       
    281       DataLookupWeighted1D in(test,j,false);
    282       for(size_t k=0; k<centroids_->columns();k++) {
    283         DataLookupWeighted1D centroid(weighted_centroids,k,false);
    284         utility::yat_assert<std::runtime_error>(in.size()==centroid.size());
    285         prediction(k,j) = distance_(in.begin(), in.end(), centroid.begin());
    286       }
    287     }
     273    for(size_t j=0; j<test.columns();j++)
     274      for(size_t k=0; k<centroids_->columns();k++)
     275        prediction(k,j) = distance_(test.begin_column(j), test.end_column(j),
     276                                    weighted_centroids.begin_column(k));
    288277  }
    289278
Note: See TracChangeset for help on using the changeset viewer.