cf.hpp
Go to the documentation of this file.00001
00025 #ifndef __MLPACK_METHODS_CF_CF_HPP
00026 #define __MLPACK_METHODS_CF_CF_HPP
00027
00028 #include <mlpack/core.hpp>
00029 #include <mlpack/methods/neighbor_search/neighbor_search.hpp>
00030 #include <set>
00031 #include <map>
00032 #include <iostream>
00033
00034 namespace mlpack {
00035 namespace cf {
00036
00068 class CF
00069 {
00070 public:
00079 CF(const size_t numRecs,const size_t numUsersForSimilarity,
00080 arma::mat& data);
00081
00089 CF(const size_t numRecs, arma::mat& data);
00090
00097 CF(arma::mat& data);
00098
00100 void NumRecs(size_t recs)
00101 {
00102 if (recs < 1)
00103 {
00104 Log::Warn << "CF::NumRecs(): invalid value (< 1) "
00105 "ignored." << std::endl;
00106 return;
00107 }
00108 this->numRecs = recs;
00109 }
00110
00112 size_t NumRecs()
00113 {
00114 return numRecs;
00115 }
00116
00118 void NumUsersForSimilarity(size_t num)
00119 {
00120 if (num < 1)
00121 {
00122 Log::Warn << "CF::NumUsersForSimilarity(): invalid value (< 1) "
00123 "ignored." << std::endl;
00124 return;
00125 }
00126 this->numUsersForSimilarity = num;
00127 }
00128
00130 size_t NumUsersForSimilarity()
00131 {
00132 return numUsersForSimilarity;
00133 }
00134
00136 const arma::mat& W() const { return w; }
00138 const arma::mat& H() const { return h; }
00140 const arma::mat& Rating() const { return rating; }
00142 const arma::mat& Data() const { return data; }
00144 const arma::sp_mat& CleanedData() const { return cleanedData; }
00145
00151 void GetRecommendations(arma::Mat<size_t>& recommendations);
00152
00159 void GetRecommendations(arma::Mat<size_t>& recommendations,
00160 arma::Col<size_t>& users);
00161
00169 void GetRecommendations(arma::Mat<size_t>& recommendations,
00170 arma::Col<size_t>& users, size_t num);
00171
00181 void GetRecommendations(arma::Mat<size_t>& recommendations,
00182 arma::Col<size_t>& users, size_t num,
00183 size_t neighbours);
00184
00185 private:
00187 size_t numRecs;
00189 size_t numUsersForSimilarity;
00191 arma::mat w;
00193 arma::mat h;
00195 arma::mat rating;
00197 arma::mat data;
00199 arma::sp_mat cleanedData;
00201 void CleanData();
00202
00212 void InsertNeighbor(const size_t queryIndex,
00213 const size_t pos,
00214 const size_t neighbor,
00215 const double value,
00216 arma::Mat<size_t>& recommendations,
00217 arma::mat& values) const;
00218
00219 };
00220
00221 };
00222 };
00223
00224 #endif