49 #ifndef __NAIVE_BAYES_TRAINING_DISTRIBUTED_H__
50 #define __NAIVE_BAYES_TRAINING_DISTRIBUTED_H__
52 #include "algorithms/algorithm.h"
53 #include "multinomial_naive_bayes_training_types.h"
59 namespace multinomial_naive_bayes
79 template<ComputeStep step,
typename algorithmFPType, Method method, CpuType cpu>
80 class DAAL_EXPORT DistributedContainer;
86 template<
typename algorithmFPType, Method method, CpuType cpu>
87 class DAAL_EXPORT DistributedContainer<step2Master, algorithmFPType, method, cpu> :
public TrainingContainerIface<distributed>
95 DistributedContainer(daal::services::Environment::env *daalEnv);
97 ~DistributedContainer();
105 services::Status compute() DAAL_C11_OVERRIDE;
112 services::Status finalizeCompute() DAAL_C11_OVERRIDE;
127 template<ComputeStep step,
typename algorithmFPType = DAAL_ALGORITHM_FP_TYPE, Method method = defaultDense>
128 class DAAL_EXPORT Distributed {};
143 template<
typename algorithmFPType, Method method>
144 class DAAL_EXPORT Distributed<step1Local, algorithmFPType, method> :
public Online<algorithmFPType, method>
151 Distributed(
size_t nClasses) : Online<algorithmFPType, method>::Online(nClasses) {}
159 Distributed(
const Distributed<step1Local, algorithmFPType, method> &other) :
160 Online<algorithmFPType, method>(other)
168 services::SharedPtr<Distributed<step1Local, algorithmFPType, method> > clone()
const
170 return services::SharedPtr<Distributed<step1Local, algorithmFPType, method> >(cloneImpl());
174 virtual Distributed<step1Local, algorithmFPType, method> * cloneImpl() const DAAL_C11_OVERRIDE
176 return new Distributed<step1Local, algorithmFPType, method>(*this);
193 template<
typename algorithmFPType, Method method>
194 class DAAL_EXPORT Distributed<step2Master, algorithmFPType, method> :
public Training<distributed>
198 DistributedInput input;
204 Distributed(
size_t nClasses) : parameter(nClasses)
215 Distributed(
const Distributed<step2Master, algorithmFPType, method> &other) :
216 Training<distributed>(other), input(other.input), parameter(other.parameter)
221 virtual ~Distributed() {}
227 virtual int getMethod() const DAAL_C11_OVERRIDE {
return(
int)method; }
233 services::Status setPartialResult(
const PartialResultPtr& partialResult)
235 DAAL_CHECK(partialResult, services::ErrorNullPartialResult);
236 _partialResult = partialResult;
237 _pres = _partialResult.get();
238 return services::Status();
245 PartialResultPtr getPartialResult() {
return _partialResult; }
253 services::Status setResult(
const ResultPtr& result)
255 DAAL_CHECK(result, services::ErrorNullResult)
257 _res = _result.get();
258 return services::Status();
265 ResultPtr getResult()
267 return Result::cast(_result);
275 services::Status checkFinalizeComputeParams() DAAL_C11_OVERRIDE
277 PartialResultPtr partialResult = getPartialResult();
278 DAAL_CHECK(partialResult, services::ErrorNullResult);
280 DAAL_CHECK_STATUS(s, partialResult->check(_par, method));
281 ResultPtr result = getResult();
282 DAAL_CHECK(result, services::ErrorNullResult);
283 DAAL_CHECK_STATUS(s, result->check(_pres, _par, method));
292 services::SharedPtr<Distributed<step2Master, algorithmFPType, method> > clone()
const
294 return services::SharedPtr<Distributed<step2Master, algorithmFPType, method> >(cloneImpl());
298 PartialResultPtr _partialResult;
301 virtual Distributed<step2Master, algorithmFPType, method> * cloneImpl() const DAAL_C11_OVERRIDE
303 return new Distributed<step2Master, algorithmFPType, method>(*this);
306 services::Status allocateResult() DAAL_C11_OVERRIDE
308 PartialResultPtr pres = getPartialResult();
309 ResultPtr res = getResult();
310 services::Status s = res->template allocate<algorithmFPType>(pres.get(), ¶meter, (int)method);
311 _res = _result.get();
315 services::Status allocatePartialResult() DAAL_C11_OVERRIDE
317 PartialResultPtr pres = getPartialResult();
318 services::Status s = pres->template allocate<algorithmFPType>((classifier::training::InputIface *)(&input), ¶meter, (int)method);
319 _pres = _partialResult.get();
323 services::Status initializePartialResult() DAAL_C11_OVERRIDE
325 return services::Status();
330 _ac =
new __DAAL_ALGORITHM_CONTAINER(distributed, DistributedContainer, step2Master, algorithmFPType, method)(&_env);
333 _result.reset(
new Result());
334 _partialResult.reset(
new PartialResult());
339 using interface1::DistributedContainer;
340 using interface1::Distributed;
daal::algorithms::multinomial_naive_bayes::training::interface1::Distributed< step2Master, algorithmFPType, method >::setResult
services::Status setResult(const ResultPtr &result)
Definition: multinomial_naive_bayes_training_distributed.h:253
daal
Definition: algorithm_base_common.h:57
daal::algorithms::multinomial_naive_bayes::training::interface1::Distributed< step1Local, algorithmFPType, method >::clone
services::SharedPtr< Distributed< step1Local, algorithmFPType, method > > clone() const
Definition: multinomial_naive_bayes_training_distributed.h:168
daal::algorithms::multinomial_naive_bayes::training::interface1::Distributed< step2Master, algorithmFPType, method >::getPartialResult
PartialResultPtr getPartialResult()
Definition: multinomial_naive_bayes_training_distributed.h:245
daal::algorithms::multinomial_naive_bayes::training::interface1::Distributed< step1Local, algorithmFPType, method >
Algorithm class for training Naive Bayes partial model in the distributed processing mode...
Definition: multinomial_naive_bayes_training_distributed.h:144
daal::services::ErrorNullPartialResult
Definition: error_indexes.h:131
daal::algorithms::multinomial_naive_bayes::training::interface1::Distributed< step2Master, algorithmFPType, method >::setPartialResult
services::Status setPartialResult(const PartialResultPtr &partialResult)
Definition: multinomial_naive_bayes_training_distributed.h:233
daal::algorithms::multinomial_naive_bayes::training::interface1::Distributed< step2Master, algorithmFPType, method >::getResult
ResultPtr getResult()
Definition: multinomial_naive_bayes_training_distributed.h:265
daal::algorithms::multinomial_naive_bayes::training::interface1::Distributed< step1Local, algorithmFPType, method >::Distributed
Distributed(size_t nClasses)
Definition: multinomial_naive_bayes_training_distributed.h:151
daal::algorithms::multinomial_naive_bayes::training::interface1::Distributed< step2Master, algorithmFPType, method >::getMethod
virtual int getMethod() const DAAL_C11_OVERRIDE
Definition: multinomial_naive_bayes_training_distributed.h:227
daal::algorithms::kmeans::init::interface1::Distributed
class DAAL_EXPORT Distributed
Computes initial clusters for the K-Means algorithm in the distributed processing mode...
Definition: kmeans_init_distributed.h:281
daal::distributed
Definition: daal_defines.h:132
daal::algorithms::multinomial_naive_bayes::training::interface1::Distributed< step2Master, algorithmFPType, method >::Distributed
Distributed(size_t nClasses)
Definition: multinomial_naive_bayes_training_distributed.h:204
daal::algorithms::multinomial_naive_bayes::training::interface1::Distributed< step2Master, algorithmFPType, method >
Algorithm class for training naive Bayes final model on the second step in the distributed processing...
Definition: multinomial_naive_bayes_training_distributed.h:194
daal::algorithms::multinomial_naive_bayes::training::interface1::Distributed< step2Master, algorithmFPType, method >::parameter
Parameter parameter
Definition: multinomial_naive_bayes_training_distributed.h:197
daal::algorithms::multinomial_naive_bayes::training::interface1::Distributed< step2Master, algorithmFPType, method >::Distributed
Distributed(const Distributed< step2Master, algorithmFPType, method > &other)
Definition: multinomial_naive_bayes_training_distributed.h:215
daal::algorithms::multinomial_naive_bayes::training::interface1::DistributedContainer
class DAAL_EXPORT DistributedContainer
Class containing methods to compute naive Bayes training results in the distributed processing mode...
Definition: multinomial_naive_bayes_training_distributed.h:80
daal::algorithms::multinomial_naive_bayes::training::interface1::Distributed< step1Local, algorithmFPType, method >::Distributed
Distributed(const Distributed< step1Local, algorithmFPType, method > &other)
Definition: multinomial_naive_bayes_training_distributed.h:159
daal::step1Local
Definition: daal_defines.h:142
daal::step2Master
Definition: daal_defines.h:143
daal::algorithms::multinomial_naive_bayes::training::interface1::Distributed< step2Master, algorithmFPType, method >::clone
services::SharedPtr< Distributed< step2Master, algorithmFPType, method > > clone() const
Definition: multinomial_naive_bayes_training_distributed.h:292
daal::algorithms::multinomial_naive_bayes::training::interface1::Distributed
Algorithm class for training naive Bayes model in the distributed processing mode.
Definition: multinomial_naive_bayes_training_distributed.h:128
daal::services::ErrorNullResult
Definition: error_indexes.h:122
daal::algorithms::multinomial_naive_bayes::training::interface1::Distributed< step2Master, algorithmFPType, method >::input
DistributedInput input
Definition: multinomial_naive_bayes_training_distributed.h:198
daal::algorithms::TrainingContainerIface
Abstract interface class that provides virtual methods to access and run implementations of the model...
Definition: training.h:76
daal::algorithms::multinomial_naive_bayes::training::interface1::Online
Algorithm class for training naive Bayes model.
Definition: multinomial_naive_bayes_training_online.h:122
daal::algorithms::Training
Provides methods to train models that depend on the data provided. For example, these methods enable ...
Definition: training.h:86
daal::algorithms::multinomial_naive_bayes::training::interface1::Distributed< step2Master, algorithmFPType, method >::checkFinalizeComputeParams
services::Status checkFinalizeComputeParams() DAAL_C11_OVERRIDE
Definition: multinomial_naive_bayes_training_distributed.h:275