jubatus_core  0.1.2
Jubatus: Online machine learning framework for distributed environment
Static Public Member Functions | List of all members
jubatus::core::classifier::classifier_factory Class Reference

#include <classifier_factory.hpp>

Collaboration diagram for jubatus::core::classifier::classifier_factory:
Collaboration graph

Static Public Member Functions

static jubatus::util::lang::shared_ptr< classifier_basecreate_classifier (const std::string &name, const common::jsonconfig::config &param, jubatus::util::lang::shared_ptr< storage::storage_base > storage)
 

Detailed Description

Definition at line 44 of file classifier_factory.hpp.

Member Function Documentation

shared_ptr< classifier_base > jubatus::core::classifier::classifier_factory::create_classifier ( const std::string &  name,
const common::jsonconfig::config param,
jubatus::util::lang::shared_ptr< storage::storage_base storage 
)
static

Definition at line 89 of file classifier_factory.cpp.

References jubatus::core::nearest_neighbor::create_nearest_neighbor(), jubatus::core::unlearner::create_unlearner(), JUBATUS_EXCEPTION, jubatus::core::common::jsonconfig::config::type(), and unlearner.

92  {
93  jubatus::util::lang::shared_ptr<unlearner::unlearner_base> unlearner;
94  shared_ptr<classifier_base> res;
95  if (name == "perceptron") {
96  // perceptron doesn't have parameter
97  if (param.type() != jubatus::util::text::json::json::Null) {
98  unlearner_config conf = config_cast_check<unlearner_config>(param);
99  unlearner = create_unlearner(conf);
100  }
101  res.reset(new perceptron(storage));
102  } else if (name == "PA" || name == "passive_aggressive") {
103  // passive_aggressive doesn't have parameter
104  if (param.type() != jubatus::util::text::json::json::Null) {
105  unlearner_config conf = config_cast_check<unlearner_config>(param);
106  unlearner = create_unlearner(conf);
107  }
108  res.reset(new passive_aggressive(storage));
109  } else if (name == "PA1" || name == "passive_aggressive_1") {
110  if (param.type() == jubatus::util::text::json::json::Null) {
111  throw JUBATUS_EXCEPTION(
112  common::config_exception() << common::exception::error_message(
113  "parameter block is not specified in config"));
114  }
115  unlearning_classifier_config conf
116  = config_cast_check<unlearning_classifier_config>(param);
117  unlearner = create_unlearner(conf);
118  res.reset(new passive_aggressive_1(conf, storage));
119  } else if (name == "PA2" || name == "passive_aggressive_2") {
120  if (param.type() == jubatus::util::text::json::json::Null) {
121  throw JUBATUS_EXCEPTION(
122  common::config_exception() << common::exception::error_message(
123  "parameter block is not specified in config"));
124  }
125  unlearning_classifier_config conf
126  = config_cast_check<unlearning_classifier_config>(param);
127  unlearner = create_unlearner(conf);
128  res.reset(new passive_aggressive_2(conf, storage));
129  } else if (name == "CW" || name == "confidence_weighted") {
130  if (param.type() == jubatus::util::text::json::json::Null) {
131  throw JUBATUS_EXCEPTION(
132  common::config_exception() << common::exception::error_message(
133  "parameter block is not specified in config"));
134  }
135  unlearning_classifier_config conf
136  = config_cast_check<unlearning_classifier_config>(param);
137  unlearner = create_unlearner(conf);
138  res.reset(new confidence_weighted(conf, storage));
139  } else if (name == "AROW" || name == "arow") {
140  if (param.type() == jubatus::util::text::json::json::Null) {
141  throw JUBATUS_EXCEPTION(
142  common::config_exception() << common::exception::error_message(
143  "parameter block is not specified in config"));
144  }
145  unlearning_classifier_config conf
146  = config_cast_check<unlearning_classifier_config>(param);
147  unlearner = create_unlearner(conf);
148  res.reset(new arow(conf, storage));
149  } else if (name == "NHERD" || name == "normal_herd") {
150  if (param.type() == jubatus::util::text::json::json::Null) {
151  throw JUBATUS_EXCEPTION(
152  common::config_exception() << common::exception::error_message(
153  "parameter block is not specified in config"));
154  }
155  unlearning_classifier_config conf
156  = config_cast_check<unlearning_classifier_config>(param);
157  unlearner = create_unlearner(conf);
158  res.reset(new normal_herd(conf, storage));
159  } else if (name == "NN" || name == "nearest_neighbor") {
160  if (param.type() == jubatus::util::text::json::json::Null) {
161  throw JUBATUS_EXCEPTION(
162  common::config_exception() << common::exception::error_message(
163  "parameter block is not specified in config"));
164  }
165  nearest_neighbor_classifier_config conf
166  = config_cast_check<nearest_neighbor_classifier_config>(param);
167  unlearner = create_unlearner(conf);
168  shared_ptr<storage::column_table> table(new storage::column_table);
169  shared_ptr<nearest_neighbor::nearest_neighbor_base>
170  nearest_neighbor_engine(nearest_neighbor::create_nearest_neighbor(
171  conf.method, conf.parameter, table, ""));
172  res.reset(
173  new nearest_neighbor_classifier(nearest_neighbor_engine,
174  conf.nearest_neighbor_num,
175  conf.local_sensitivity));
176  } else {
177  throw JUBATUS_EXCEPTION(
178  common::unsupported_method("classifier(" + name + ")"));
179  }
180 
181  if (unlearner) {
182  res->set_label_unlearner(unlearner);
183  }
184  return res;
185 }
shared_ptr< unlearner_base > create_unlearner(const std::string &name, const common::jsonconfig::config &config)
jubatus::util::data::optional< std::string > unlearner
#define JUBATUS_EXCEPTION(e)
Definition: exception.hpp:79
error_info< struct error_message_, std::string > error_message
Definition: exception.hpp:59
shared_ptr< nearest_neighbor_base > create_nearest_neighbor(const std::string &name, const common::jsonconfig::config &config, shared_ptr< storage::column_table > table, const std::string &id)

Here is the call graph for this function:


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