C++ API Reference for Intel® Data Analytics Acceleration Library 2019

multinomial_naive_bayes_model.h
1 /* file: multinomial_naive_bayes_model.h */
2 /*******************************************************************************
3 * Copyright 2014-2018 Intel Corporation.
4 *
5 * This software and the related documents are Intel copyrighted materials, and
6 * your use of them is governed by the express license under which they were
7 * provided to you (License). Unless the License provides otherwise, you may not
8 * use, modify, copy, publish, distribute, disclose or transmit this software or
9 * the related documents without Intel's prior written permission.
10 *
11 * This software and the related documents are provided as is, with no express
12 * or implied warranties, other than those that are expressly stated in the
13 * License.
14 *******************************************************************************/
15 
16 /*
17 //++
18 // Implementation of class defining Naive Bayes model.
19 //--
20 */
21 
22 #ifndef __NAIVE_BAYES_MODEL_H__
23 #define __NAIVE_BAYES_MODEL_H__
24 
25 #include "algorithms/algorithm.h"
26 #include "data_management/data/numeric_table.h"
27 #include "data_management/data/homogen_numeric_table.h"
28 #include "algorithms/classifier/classifier_model.h"
29 
30 namespace daal
31 {
32 namespace algorithms
33 {
43 namespace multinomial_naive_bayes
44 {
45 
49 namespace interface1
50 {
57 /* [Parameter source code] */
58 struct DAAL_EXPORT Parameter : public classifier::Parameter
59 {
66  Parameter(size_t nClasses, const data_management::NumericTablePtr &priorClassEstimates_ = data_management::NumericTablePtr(),
67  const data_management::NumericTablePtr &alpha_ = data_management::NumericTablePtr()) :
68  classifier::Parameter(nClasses), priorClassEstimates(priorClassEstimates_), alpha(alpha_) {}
69 
70  data_management::NumericTablePtr priorClassEstimates;
71  data_management::NumericTablePtr alpha;
73  services::Status check() const DAAL_C11_OVERRIDE;
74 };
75 /* [Parameter source code] */
76 
77 
82 class DAAL_EXPORT Model : public classifier::Model
83 {
84 public:
85  DECLARE_MODEL(Model, classifier::Model);
86 
91  Model() {}
92 
100  template<typename modelFPType>
101  DAAL_EXPORT Model(size_t nFeatures, const Parameter &parameter, modelFPType dummy);
102 
109  template<typename modelFPType>
110  DAAL_EXPORT static services::SharedPtr<Model> create(size_t nFeatures, const Parameter &parameter,
111  services::Status *stat = NULL);
112 
114  virtual ~Model() {}
115 
120  data_management::NumericTablePtr getLogP() { return _logP; }
121 
126  data_management::NumericTablePtr getLogTheta() { return _logTheta; }
127 
132  data_management::NumericTablePtr getAuxTable() { return _auxTable; }
133 
138  size_t getNumberOfFeatures() const DAAL_C11_OVERRIDE { return (_logTheta ?_logTheta->getNumberOfColumns() : 0); }
139 
140 protected:
141  data_management::NumericTablePtr _logP;
142  data_management::NumericTablePtr _logTheta;
143  data_management::NumericTablePtr _auxTable;
144 
145  template<typename modelFPType>
146  DAAL_EXPORT Model(size_t nFeatures, const Parameter &parameter, modelFPType dummy, services::Status &st);
147 
148  template<typename Archive, bool onDeserialize>
149  services::Status serialImpl(Archive *arch)
150  {
151  services::Status st = classifier::Model::serialImpl<Archive, onDeserialize>(arch);
152  if (!st)
153  return st;
154  arch->setSharedPtrObj(_logP );
155  arch->setSharedPtrObj(_logTheta);
156  arch->setSharedPtrObj(_auxTable);
157 
158  return st;
159  }
160 };
161 
162 typedef services::SharedPtr<Model> ModelPtr;
163 
168 class DAAL_EXPORT PartialModel : public classifier::Model
169 {
170 public:
171  DECLARE_SERIALIZABLE_CAST(PartialModel);
176  PartialModel();
177 
185  template<typename modelFPType>
186  DAAL_EXPORT PartialModel(size_t nFeatures, const Parameter &parameter, modelFPType dummy);
187 
195  template<typename modelFPType>
196  DAAL_EXPORT static services::SharedPtr<PartialModel> create(size_t nFeatures, const Parameter &parameter,
197  services::Status *stat = NULL);
199  virtual ~PartialModel() {}
200 
201  size_t getNObservations()
202  {
203  return _nObservations;
204  }
205 
206  void setNObservations( size_t nObservations )
207  {
208  _nObservations = nObservations;
209  }
210 
215  size_t getNumberOfFeatures() const DAAL_C11_OVERRIDE { return (_classGroupSum ? _classGroupSum->getNumberOfColumns() : 0); }
216 
221  size_t getNFeatures() const DAAL_C11_OVERRIDE { return getNumberOfFeatures(); }
222 
227  void setNFeatures(size_t nFeatures) DAAL_C11_OVERRIDE {}
228 
229  template<typename modelFPType>
230  services::Status initialize()
231  {
232  _classSize->assign((int)0);
233  _classGroupSum->assign((int)0);
234  _nObservations = 0;
235  return services::Status();
236  }
237 
238  data_management::NumericTablePtr getClassSize() { return _classSize; }
239  data_management::NumericTablePtr getClassGroupSum() { return _classGroupSum; }
240 
241 protected:
242  data_management::NumericTablePtr _classSize;
243  data_management::NumericTablePtr _classGroupSum;
244  size_t _nObservations;
245 
246  template<typename modelFPType>
247  DAAL_EXPORT PartialModel(size_t nFeatures, const Parameter &parameter,
248  modelFPType dummy, services::Status &st);
249 
250  template<typename Archive, bool onDeserialize>
251  services::Status serialImpl(Archive *arch)
252  {
253  services::Status st = classifier::Model::serialImpl<Archive, onDeserialize>(arch);
254  if (!st)
255  return st;
256  arch->set(_nObservations);
257  arch->setSharedPtrObj(_classSize);
258  arch->setSharedPtrObj(_classGroupSum);
259 
260  return st;
261  }
262 };
263 typedef services::SharedPtr<PartialModel> PartialModelPtr;
264 } // namespace interface1
265 using interface1::Parameter;
266 using interface1::Model;
267 using interface1::ModelPtr;
268 using interface1::PartialModel;
269 using interface1::PartialModelPtr;
270 
271 } // namespace multinomial_naive_bayes
273 } // namespace algorithms
274 } // namespace daal
275 #endif
daal
Definition: algorithm_base_common.h:31
daal::algorithms::multinomial_naive_bayes::interface1::Parameter::alpha
data_management::NumericTablePtr alpha
Definition: multinomial_naive_bayes_model.h:71
daal::algorithms::multinomial_naive_bayes::interface1::Model::Model
Model()
Definition: multinomial_naive_bayes_model.h:91
daal::algorithms::multinomial_naive_bayes::interface1::Parameter::Parameter
Parameter(size_t nClasses, const data_management::NumericTablePtr &priorClassEstimates_=data_management::NumericTablePtr(), const data_management::NumericTablePtr &alpha_=data_management::NumericTablePtr())
Definition: multinomial_naive_bayes_model.h:66
daal::algorithms::multinomial_naive_bayes::interface1::Model
Multinomial naive Bayes model.
Definition: multinomial_naive_bayes_model.h:82
daal::algorithms::multinomial_naive_bayes::interface1::PartialModel::getNumberOfFeatures
size_t getNumberOfFeatures() const DAAL_C11_OVERRIDE
Definition: multinomial_naive_bayes_model.h:215
daal::algorithms::multinomial_naive_bayes::interface1::PartialModel
PartialModel represents partial multinomial naive Bayes model.
Definition: multinomial_naive_bayes_model.h:168
daal::algorithms::multinomial_naive_bayes::interface1::Model::getLogP
data_management::NumericTablePtr getLogP()
Definition: multinomial_naive_bayes_model.h:120
daal::algorithms::multinomial_naive_bayes::interface1::PartialModel::getNFeatures
size_t getNFeatures() const DAAL_C11_OVERRIDE
Definition: multinomial_naive_bayes_model.h:221
daal::algorithms::multinomial_naive_bayes::interface1::Model::getNumberOfFeatures
size_t getNumberOfFeatures() const DAAL_C11_OVERRIDE
Definition: multinomial_naive_bayes_model.h:138
daal::algorithms::multinomial_naive_bayes::interface1::Parameter
Naive Bayes algorithm parameters.
Definition: multinomial_naive_bayes_model.h:58
daal::algorithms::multinomial_naive_bayes::interface1::Model::getLogTheta
data_management::NumericTablePtr getLogTheta()
Definition: multinomial_naive_bayes_model.h:126
daal::algorithms::multinomial_naive_bayes::interface1::PartialModel::setNFeatures
void setNFeatures(size_t nFeatures) DAAL_C11_OVERRIDE
Definition: multinomial_naive_bayes_model.h:227
daal::algorithms::multinomial_naive_bayes::interface1::Parameter::priorClassEstimates
data_management::NumericTablePtr priorClassEstimates
Definition: multinomial_naive_bayes_model.h:70
daal::algorithms::multinomial_naive_bayes::interface1::Model::getAuxTable
data_management::NumericTablePtr getAuxTable()
Definition: multinomial_naive_bayes_model.h:132
daal::algorithms::covariance::nObservations
Definition: covariance_types.h:76

For more complete information about compiler optimizations, see our Optimization Notice.