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

multinomial_naive_bayes_training_online.h
1 /* file: multinomial_naive_bayes_training_online.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 the interface for multinomial naive Bayes model-based training
19 // in the online processing mode
20 //--
21 */
22 
23 #ifndef __NAIVE_BAYES_TRAINING_ONLINE_H__
24 #define __NAIVE_BAYES_TRAINING_ONLINE_H__
25 
26 #include "algorithms/algorithm.h"
27 #include "multinomial_naive_bayes_training_types.h"
28 #include "algorithms/classifier/classifier_training_online.h"
29 
30 namespace daal
31 {
32 namespace algorithms
33 {
34 namespace multinomial_naive_bayes
35 {
36 namespace training
37 {
38 
39 namespace interface1
40 {
53 template<typename algorithmFPType, Method method, CpuType cpu>
54 class DAAL_EXPORT OnlineContainer : public TrainingContainerIface<online>
55 {
56 public:
62  OnlineContainer(daal::services::Environment::env *daalEnv);
64  ~OnlineContainer();
65 
72  services::Status compute() DAAL_C11_OVERRIDE;
79  services::Status finalizeCompute() DAAL_C11_OVERRIDE;
80 };
81 
95 template<typename algorithmFPType = DAAL_ALGORITHM_FP_TYPE, Method method = defaultDense>
96 class DAAL_EXPORT Online : public classifier::training::Online
97 {
98 public:
99  typedef classifier::training::Online super;
100 
101  typedef typename super::InputType InputType;
102  typedef algorithms::multinomial_naive_bayes::Parameter ParameterType;
103  typedef algorithms::multinomial_naive_bayes::training::Result ResultType;
104  typedef algorithms::multinomial_naive_bayes::training::PartialResult PartialResultType;
105 
110  Online(size_t nClasses) : parameter(nClasses)
111  {
112  initialize();
113  }
114 
121  Online(const Online<algorithmFPType, method> &other) :
122  classifier::training::Online(other), parameter(other.parameter)
123  {
124  initialize();
125  }
126 
127  virtual ~Online() {}
128 
133  virtual int getMethod() const DAAL_C11_OVERRIDE { return(int)method; }
134 
139  ResultPtr getResult()
140  {
141  return services::staticPointerCast<ResultType, classifier::training::Result>(_result);
142  }
143 
150  services::Status setResult(const ResultPtr& result)
151  {
152  DAAL_CHECK(result, services::ErrorNullResult)
153  _result = result;
154  _res = _result.get();
155  return services::Status();
156  }
157 
161  void resetResult()
162  {
163  _result.reset(new ResultType());
164  _res = NULL;
165  }
166 
171  PartialResultPtr getPartialResult() { return PartialResultType::cast(_partialResult); }
172 
178  services::SharedPtr<Online<algorithmFPType, method> > clone() const
179  {
180  return services::SharedPtr<Online<algorithmFPType, method> >(cloneImpl());
181  }
182 
183  ParameterType parameter;
185 protected:
186 
187  virtual Online<algorithmFPType, method> * cloneImpl() const DAAL_C11_OVERRIDE
188  {
189  return new Online<algorithmFPType, method>(*this);
190  }
191 
192  services::Status allocateResult() DAAL_C11_OVERRIDE
193  {
194  PartialResultPtr pres = getPartialResult();
195  ResultPtr res = services::staticPointerCast<ResultType, classifier::training::Result>(_result);
196  services::Status s = res->template allocate<algorithmFPType>(pres.get(), &parameter, (int)method);
197  _res = _result.get();
198  return s;
199  }
200 
201  services::Status allocatePartialResult() DAAL_C11_OVERRIDE
202  {
203  PartialResultPtr pres = getPartialResult();
204  services::Status s = pres->template allocate<algorithmFPType>((classifier::training::InputIface *)(&input), &parameter, (int)method);
205  _pres = _partialResult.get();
206  return s;
207  }
208 
209  services::Status initializePartialResult() DAAL_C11_OVERRIDE
210  {
211  PartialResultPtr pres = getPartialResult();
212  services::Status s = pres->template initialize<algorithmFPType>((classifier::training::InputIface *)(&input), &parameter, (int)method);
213  _pres = _partialResult.get();
214  return s;
215  }
216 
217  void initialize()
218  {
219  _ac = new __DAAL_ALGORITHM_CONTAINER(online, OnlineContainer, algorithmFPType, method)(&_env);
220  _par = &parameter;
221  _result.reset(new ResultType());
222  _partialResult.reset(new PartialResultType());
223  }
224 };
226 } // namespace interface1
227 using interface1::OnlineContainer;
228 using interface1::Online;
229 
230 } // namespace training
231 } // namespace multinomial_naive_bayes
232 } // namespace algorithms
233 } // namespace daal
234 #endif
daal::algorithms::multinomial_naive_bayes::training::interface1::Online::parameter
ParameterType parameter
Definition: multinomial_naive_bayes_training_online.h:183
daal
Definition: algorithm_base_common.h:31
daal::algorithms::multinomial_naive_bayes::training::interface1::OnlineContainer
Class containing computation methods for naive Bayes training in the online processing mode...
Definition: multinomial_naive_bayes_training_online.h:54
daal::algorithms::multinomial_naive_bayes::training::interface1::Online::Online
Online(const Online< algorithmFPType, method > &other)
Definition: multinomial_naive_bayes_training_online.h:121
daal::algorithms::multinomial_naive_bayes::training::interface1::Online::Online
Online(size_t nClasses)
Definition: multinomial_naive_bayes_training_online.h:110
daal::algorithms::multinomial_naive_bayes::training::interface1::Online::resetResult
void resetResult()
Definition: multinomial_naive_bayes_training_online.h:161
daal::algorithms::multinomial_naive_bayes::training::interface1::Online::getPartialResult
PartialResultPtr getPartialResult()
Definition: multinomial_naive_bayes_training_online.h:171
daal::algorithms::multinomial_naive_bayes::training::interface1::Online::getMethod
virtual int getMethod() const DAAL_C11_OVERRIDE
Definition: multinomial_naive_bayes_training_online.h:133
daal::online
Definition: daal_defines.h:108
daal::algorithms::multinomial_naive_bayes::training::interface1::Online::getResult
ResultPtr getResult()
Definition: multinomial_naive_bayes_training_online.h:139
daal::algorithms::multinomial_naive_bayes::training::interface1::Online::clone
services::SharedPtr< Online< algorithmFPType, method > > clone() const
Definition: multinomial_naive_bayes_training_online.h:178
daal::services::ErrorNullResult
Definition: error_indexes.h:96
daal::algorithms::TrainingContainerIface
Abstract interface class that provides virtual methods to access and run implementations of the model...
Definition: training.h:50
daal::algorithms::multinomial_naive_bayes::training::interface1::Online
Algorithm class for training naive Bayes model.
Definition: multinomial_naive_bayes_training_online.h:96
daal::algorithms::multinomial_naive_bayes::training::interface1::Online::setResult
services::Status setResult(const ResultPtr &result)
Definition: multinomial_naive_bayes_training_online.h:150

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