jubatus_core  0.1.2
Jubatus: Online machine learning framework for distributed environment
Public Member Functions | Private Member Functions | Private Attributes | List of all members
jubatus::core::clustering::clustering Class Reference

#include <clustering.hpp>

Collaboration diagram for jubatus::core::clustering::clustering:
Collaboration graph

Public Member Functions

void clear ()
 
 clustering (const std::string &name, const std::string &method, const clustering_config &cfg)
 
void do_clustering ()
 
std::vector< wplistget_core_members () const
 
wplist get_coreset () const
 
std::vector< common::sfv_tget_k_center () const
 
framework::mixableget_mixable () const
 
common::sfv_t get_nearest_center (const common::sfv_t &point) const
 
wplist get_nearest_members (const common::sfv_t &point) const
 
size_t get_revision () const
 
jubatus::util::lang::shared_ptr< storageget_storage ()
 
void pack (framework::packer &pk) const
 
bool push (const std::vector< weighted_point > &points)
 
void set_clustering_method (jubatus::util::lang::shared_ptr< clustering_method > clustering_method)
 
void set_storage (jubatus::util::lang::shared_ptr< storage > storage)
 
std::string type () const
 
void unpack (msgpack::object o)
 
virtual ~clustering ()
 

Private Member Functions

wplist get_coreset_mine () const
 
void init ()
 
void update_clusters (const wplist &points, bool batch)
 

Private Attributes

jubatus::util::lang::shared_ptr< clustering_methodclustering_method_
 
clustering_config config_
 
std::string method_
 
std::string name_
 
jubatus::util::lang::shared_ptr< mixable_storagestorage_
 

Detailed Description

Definition at line 47 of file clustering.hpp.

Constructor & Destructor Documentation

jubatus::core::clustering::clustering::clustering ( const std::string &  name,
const std::string &  method,
const clustering_config cfg 
)

Definition at line 37 of file clustering.cpp.

References jubatus::core::clustering::clustering_config::bicriteria_base_size, jubatus::core::clustering::clustering_config::bucket_length, jubatus::core::clustering::clustering_config::bucket_size, jubatus::core::clustering::clustering_config::compressed_bucket_size, jubatus::core::clustering::clustering_config::compressor_method, jubatus::core::clustering::clustering_config::forgetting_factor, jubatus::core::clustering::clustering_config::forgetting_threshold, init(), JUBATUS_EXCEPTION, and jubatus::core::clustering::clustering_config::k.

41  : config_(cfg),
42  name_(name),
43  method_(method),
44  storage_() {
45 
46  // TODO(@rimms): move to factory
47  if (method =="gmm" &&
48  cfg.compressor_method == "compressive_kmeans") {
49  throw JUBATUS_EXCEPTION(common::invalid_parameter(
50  "method = gmm, compressor_method != compressive_kmeans"));
51  }
52 
53  // TODO(@rimms): move to factory
54  if (method =="kmeans" &&
55  cfg.compressor_method == "compressive_gmm") {
56  throw JUBATUS_EXCEPTION(common::invalid_parameter(
57  "method = kmeans, compressor_method != compressive_gmm"));
58  }
59 
60  if (!(1 <= cfg.k)) {
61  throw JUBATUS_EXCEPTION(
62  common::invalid_parameter("1 <= k"));
63  }
64 
65  if (!(2 <= cfg.bucket_size)) {
66  throw JUBATUS_EXCEPTION(
67  common::invalid_parameter("2 <= bucket_size"));
68  }
69 
70  if (!(2 <= cfg.bucket_length)) {
71  throw JUBATUS_EXCEPTION(
72  common::invalid_parameter("2 <= bucket_length"));
73  }
74 
75  if (!(1 <= cfg.bicriteria_base_size &&
76  cfg.bicriteria_base_size < cfg.compressed_bucket_size)) {
77  throw JUBATUS_EXCEPTION(common::invalid_parameter(
78  "1 <= bicriteria_base_size < compressed_bucket_size"));
79  }
80 
81  if (!(cfg.compressed_bucket_size < cfg.bucket_size)) {
82  throw JUBATUS_EXCEPTION(
83  common::invalid_parameter("compressed_bucket_size < bucket_size"));
84  }
85 
86  if (!(0.0 <= cfg.forgetting_factor)) {
87  throw JUBATUS_EXCEPTION(
88  common::invalid_parameter("0.0 <= forgetting_factor"));
89  }
90 
91  if (!(0.0 <= cfg.forgetting_threshold &&
92  cfg.forgetting_threshold <= 1.0)) {
93  throw JUBATUS_EXCEPTION(common::invalid_parameter(
94  "0.0 <= forgetting_threshold <= 1.0"));
95  }
96 
97  init();
98 }
#define JUBATUS_EXCEPTION(e)
Definition: exception.hpp:79
std::string method
jubatus::util::lang::shared_ptr< mixable_storage > storage_
Definition: clustering.hpp:90

Here is the call graph for this function:

jubatus::core::clustering::clustering::~clustering ( )
virtual

Definition at line 100 of file clustering.cpp.

100  {
101 }

Member Function Documentation

void jubatus::core::clustering::clustering::clear ( )

Definition at line 189 of file clustering.cpp.

References storage_.

189  {
190  storage_->get_model()->clear();
191 }
jubatus::util::lang::shared_ptr< mixable_storage > storage_
Definition: clustering.hpp:90
void jubatus::core::clustering::clustering::do_clustering ( )

Definition at line 193 of file clustering.cpp.

References clustering_method_, and storage_.

193  {
194  clustering_method_->batch_update(storage_->get_model()->get_all());
195 }
jubatus::util::lang::shared_ptr< clustering_method > clustering_method_
Definition: clustering.hpp:89
jubatus::util::lang::shared_ptr< mixable_storage > storage_
Definition: clustering.hpp:90
std::vector< wplist > jubatus::core::clustering::clustering::get_core_members ( ) const

Definition at line 165 of file clustering.cpp.

References clustering_method_, and get_coreset().

165  {
166  return clustering_method_->get_clusters(get_coreset());
167 }
jubatus::util::lang::shared_ptr< clustering_method > clustering_method_
Definition: clustering.hpp:89

Here is the call graph for this function:

wplist jubatus::core::clustering::clustering::get_coreset ( ) const

Definition at line 145 of file clustering.cpp.

References storage_.

Referenced by get_core_members(), and get_nearest_members().

145  {
146  return storage_->get_model()->get_all();
147 }
jubatus::util::lang::shared_ptr< mixable_storage > storage_
Definition: clustering.hpp:90

Here is the caller graph for this function:

wplist jubatus::core::clustering::clustering::get_coreset_mine ( ) const
private
std::vector< common::sfv_t > jubatus::core::clustering::clustering::get_k_center ( ) const

Definition at line 149 of file clustering.cpp.

References clustering_method_.

149  {
150  return clustering_method_->get_k_center();
151 }
jubatus::util::lang::shared_ptr< clustering_method > clustering_method_
Definition: clustering.hpp:89
framework::mixable * jubatus::core::clustering::clustering::get_mixable ( ) const

Definition at line 173 of file clustering.cpp.

References storage_.

173  {
174  return storage_.get();
175 }
jubatus::util::lang::shared_ptr< mixable_storage > storage_
Definition: clustering.hpp:90
common::sfv_t jubatus::core::clustering::clustering::get_nearest_center ( const common::sfv_t point) const

Definition at line 153 of file clustering.cpp.

References clustering_method_.

153  {
154  return clustering_method_->get_nearest_center(point);
155 }
jubatus::util::lang::shared_ptr< clustering_method > clustering_method_
Definition: clustering.hpp:89
wplist jubatus::core::clustering::clustering::get_nearest_members ( const common::sfv_t point) const

Definition at line 157 of file clustering.cpp.

References clustering_method_, and get_coreset().

157  {
158  int64_t clustering_id = clustering_method_->get_nearest_center_index(point);
159  if (clustering_id == -1) {
160  return wplist();
161  }
162  return clustering_method_->get_cluster(clustering_id, get_coreset());
163 }
jubatus::util::lang::shared_ptr< clustering_method > clustering_method_
Definition: clustering.hpp:89
std::vector< weighted_point > wplist
Definition: types.hpp:55

Here is the call graph for this function:

size_t jubatus::core::clustering::clustering::get_revision ( ) const

Definition at line 169 of file clustering.cpp.

References storage_.

169  {
170  return storage_->get_model()->get_revision();
171 }
jubatus::util::lang::shared_ptr< mixable_storage > storage_
Definition: clustering.hpp:90
jubatus::util::lang::shared_ptr< storage > jubatus::core::clustering::clustering::get_storage ( )

Definition at line 119 of file clustering.cpp.

References storage_.

119  {
120  return storage_->get_model();
121 }
jubatus::util::lang::shared_ptr< mixable_storage > storage_
Definition: clustering.hpp:90
void jubatus::core::clustering::clustering::init ( )
private

Definition at line 103 of file clustering.cpp.

References config_, jubatus::core::clustering::storage_factory::create(), jubatus::core::clustering::clustering_method_factory::create(), method_, name_, set_clustering_method(), and set_storage().

Referenced by clustering().

103  {
107 }
void set_storage(jubatus::util::lang::shared_ptr< storage > storage)
Definition: clustering.cpp:109
static jubatus::util::lang::shared_ptr< storage > create(const std::string &name, const clustering_config &config)
void set_clustering_method(jubatus::util::lang::shared_ptr< clustering_method > clustering_method)
Definition: clustering.cpp:131
static jubatus::util::lang::shared_ptr< clustering_method > create(const std::string &method, const clustering_config &config)

Here is the call graph for this function:

Here is the caller graph for this function:

void jubatus::core::clustering::clustering::pack ( framework::packer pk) const

Definition at line 181 of file clustering.cpp.

References storage_.

181  {
182  storage_->get_model()->pack(pk);
183 }
jubatus::util::lang::shared_ptr< mixable_storage > storage_
Definition: clustering.hpp:90
bool jubatus::core::clustering::clustering::push ( const std::vector< weighted_point > &  points)

Definition at line 136 of file clustering.cpp.

References storage_.

136  {
137  jubatus::util::lang::shared_ptr<storage> sto = storage_->get_model();
138  for (std::vector<weighted_point>::const_iterator it = points.begin();
139  it != points.end(); ++it) {
140  sto->add(*it);
141  }
142  return true;
143 }
jubatus::util::lang::shared_ptr< mixable_storage > storage_
Definition: clustering.hpp:90
void jubatus::core::clustering::clustering::set_clustering_method ( jubatus::util::lang::shared_ptr< clustering_method clustering_method)

Definition at line 131 of file clustering.cpp.

References clustering_method_.

Referenced by init().

132  {
133  clustering_method_ = clustering_method;
134 }
jubatus::util::lang::shared_ptr< clustering_method > clustering_method_
Definition: clustering.hpp:89

Here is the caller graph for this function:

void jubatus::core::clustering::clustering::set_storage ( jubatus::util::lang::shared_ptr< storage storage)

Definition at line 109 of file clustering.cpp.

References jubatus::core::clustering::REVISION_CHANGE, storage_, jubatus::core::clustering::UPDATE, and update_clusters().

Referenced by init().

109  {
110  storage->add_event_listener(REVISION_CHANGE,
111  jubatus::util::lang::bind(&clustering::update_clusters,
112  this, jubatus::util::lang::_1, true));
113  storage->add_event_listener(UPDATE,
114  jubatus::util::lang::bind(&clustering::update_clusters,
115  this, jubatus::util::lang::_1, false));
116  storage_.reset(new mixable_storage(storage));
117 }
framework::linear_mixable_helper< storage, diff_t > mixable_storage
Definition: storage.hpp:79
void update_clusters(const wplist &points, bool batch)
Definition: clustering.cpp:123
jubatus::util::lang::shared_ptr< mixable_storage > storage_
Definition: clustering.hpp:90

Here is the call graph for this function:

Here is the caller graph for this function:

std::string jubatus::core::clustering::clustering::type ( ) const

Definition at line 177 of file clustering.cpp.

177  {
178  return "clustering";
179 }
void jubatus::core::clustering::clustering::unpack ( msgpack::object  o)

Definition at line 185 of file clustering.cpp.

References storage_.

185  {
186  storage_->get_model()->unpack(o);
187 }
jubatus::util::lang::shared_ptr< mixable_storage > storage_
Definition: clustering.hpp:90
void jubatus::core::clustering::clustering::update_clusters ( const wplist points,
bool  batch 
)
private

Definition at line 123 of file clustering.cpp.

References clustering_method_.

Referenced by set_storage().

123  {
124  if (batch) {
125  clustering_method_->batch_update(points);
126  } else {
127  clustering_method_->online_update(points);
128  }
129 }
jubatus::util::lang::shared_ptr< clustering_method > clustering_method_
Definition: clustering.hpp:89

Here is the caller graph for this function:

Member Data Documentation

jubatus::util::lang::shared_ptr<clustering_method> jubatus::core::clustering::clustering::clustering_method_
private
clustering_config jubatus::core::clustering::clustering::config_
private

Definition at line 85 of file clustering.hpp.

Referenced by init().

std::string jubatus::core::clustering::clustering::method_
private

Definition at line 87 of file clustering.hpp.

Referenced by init().

std::string jubatus::core::clustering::clustering::name_
private

Definition at line 86 of file clustering.hpp.

Referenced by init().

jubatus::util::lang::shared_ptr<mixable_storage> jubatus::core::clustering::clustering::storage_
private

The documentation for this class was generated from the following files: