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

svm_model_builder.h
1 /* file: svm_model_builder.h */
2 /*******************************************************************************
3 * Copyright 2014-2019 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 class defining the SVM model builder.
19 //--
20 */
21 
22 
23 #ifndef __SVM_MODEL_BUILDER_H__
24 #define __SVM_MODEL_BUILDER_H__
25 
26 #include "algorithms/svm/svm_model.h"
27 #include "algorithms/multi_class_classifier/multi_class_classifier_model.h"
28 
29 namespace daal
30 {
31 namespace algorithms
32 {
42 namespace svm
43 {
47 namespace interface1
48 {
60 template<typename modelFPType = DAAL_ALGORITHM_FP_TYPE>
61 class DAAL_EXPORT ModelBuilder
62 {
63 public:
64 
71  ModelBuilder(size_t nFeatures, size_t nSupportVectors): _nFeatures(nFeatures), _nSupportVectors(nSupportVectors), _modelPtr(Model::create<modelFPType>(nFeatures))
72  {
73  _supportV = _modelPtr->getSupportVectors();
74  _supportI = _modelPtr->getSupportIndices();
75  _supportCC = _modelPtr->getClassificationCoefficients();
76  _supportV->resize(nSupportVectors);
77  _supportI->resize(nSupportVectors);
78  _supportCC->resize(nSupportVectors);
79  }
80 
87  template<typename RandomIterator>
88  void setSupportVectors(RandomIterator first, RandomIterator last)
89  {
90  if((last - first) != _nSupportVectors*_nFeatures)
91  {
92  services::throwIfPossible(services::Status(services::ErrorIncorrectParameter));
93  }
94  commonSetter<RandomIterator>(_supportV, first, last);
95  }
96 
103  template<typename RandomIterator>
104  void setSupportIndices(RandomIterator first, RandomIterator last)
105  {
106  if((last - first) != _nSupportVectors)
107  {
108  services::throwIfPossible(services::Status(services::ErrorIncorrectParameter));
109  }
110  commonSetter<RandomIterator>(_supportI, first, last);
111  }
112 
119  template<typename RandomIterator>
120  void setClassificationCoefficients(RandomIterator first, RandomIterator last)
121  {
122  if((last - first) != _nSupportVectors)
123  {
124  services::throwIfPossible(services::Status(services::ErrorIncorrectParameter));
125  }
126  commonSetter<RandomIterator>(_supportCC, first, last);
127  }
128 
133  void setBias(modelFPType bias)
134  {
135  _modelPtr->setBias(bias);
136  }
137 
142  ModelPtr getModel()
143  {
144  return _modelPtr;
145  }
146 
151  services::Status getStatus()
152  {
153  return _s;
154  }
155 private:
156  ModelPtr _modelPtr;
157  services::Status _s;
158  size_t _nFeatures;
159  size_t _nSupportVectors;
160  data_management::NumericTablePtr _supportV;
161  data_management::NumericTablePtr _supportCC;
162  data_management::NumericTablePtr _supportI;
164  template<typename RandomIterator>
165  services::Status commonSetter(data_management::NumericTablePtr& p, RandomIterator first, RandomIterator last)
166  {
167  services::Status s;
168 
169  data_management::BlockDescriptor<modelFPType> pBlock;
170  p->getBlockOfRows(0, _nSupportVectors, data_management::readWrite, pBlock);
171  modelFPType* sp = pBlock.getBlockPtr();
172  while(first != last)
173  {
174  *sp = *first;
175  ++first;
176  ++sp;
177  }
178  p->releaseBlockOfRows(pBlock);
179  return s;
180  }
181 };
182 
184 } // namespace interface1
185 using interface1::ModelBuilder;
186 
187 } // namespace svm
188 } // namespace algorithms
189 } // namespace daal
190 #endif
daal::algorithms::svm::interface1::ModelBuilder::setClassificationCoefficients
void setClassificationCoefficients(RandomIterator first, RandomIterator last)
Definition: svm_model_builder.h:120
daal::algorithms::svm::interface1::ModelBuilder::getStatus
services::Status getStatus()
Definition: svm_model_builder.h:151
daal
Definition: algorithm_base_common.h:31
daal::algorithms::svm::interface1::Model
Model of the classifier trained by the svm::training::Batch algorithm
Definition: svm_model.h:101
daal::services::ErrorIncorrectParameter
Definition: error_indexes.h:97
daal::algorithms::svm::interface1::ModelBuilder::setBias
void setBias(modelFPType bias)
Definition: svm_model_builder.h:133
daal::algorithms::svm::interface1::ModelBuilder::getModel
ModelPtr getModel()
Definition: svm_model_builder.h:142
daal::algorithms::svm::interface1::ModelBuilder
Model Builder class for class SVM Model.
Definition: svm_model_builder.h:61
daal::algorithms::svm::interface1::ModelBuilder::setSupportVectors
void setSupportVectors(RandomIterator first, RandomIterator last)
Definition: svm_model_builder.h:88
daal::algorithms::svm::interface1::ModelBuilder::setSupportIndices
void setSupportIndices(RandomIterator first, RandomIterator last)
Definition: svm_model_builder.h:104
daal::algorithms::svm::interface1::ModelBuilder::ModelBuilder
ModelBuilder(size_t nFeatures, size_t nSupportVectors)
Definition: svm_model_builder.h:71

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