00001 #ifndef _theplu_yat_utility_nni_
00002 #define _theplu_yat_utility_nni_
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #include "Matrix.h"
00028
00029 #include <utility>
00030 #include <vector>
00031
00032 namespace theplu {
00033 namespace yat {
00034 namespace utility {
00035
00079 class NNI
00080 {
00081 public:
00082
00087 NNI(const utility::Matrix& matrix,const utility::Matrix& weight,
00088 const unsigned int neighbours);
00089
00090 virtual ~NNI(void) {};
00091
00104 virtual unsigned int estimate(void)=0;
00105
00109 const utility::Matrix& imputed_data(void) const;
00110
00114 const std::vector<size_t>& not_imputed(void) const;
00115
00116 protected:
00121 std::vector<std::pair<size_t,double> >
00122 calculate_distances(const size_t) const;
00126 std::vector<size_t>
00127 nearest_neighbours(const size_t,
00128 const std::vector<std::pair<size_t,double> >&) const;
00132 const utility::Matrix& data_;
00133
00137 utility::Matrix imputed_data_;
00138
00142 unsigned int neighbours_;
00143
00147 std::vector<size_t> not_imputed_;
00148
00152 const utility::Matrix& weight_;
00153 };
00154
00155 }}}
00156
00157 #endif