C++ API Reference for Intel® Data Analytics Acceleration Library 2020 Update 1

svm_model_builder.h
1 /* file: svm_model_builder.h */
2 /*******************************************************************************
3 * Copyright 2014-2020 Intel Corporation
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 *******************************************************************************/
17 
18 /*
19 //++
20 // Implementation of the class defining the SVM model builder.
21 //--
22 */
23 
24 
25 #ifndef __SVM_MODEL_BUILDER_H__
26 #define __SVM_MODEL_BUILDER_H__
27 
28 #include "algorithms/svm/svm_model.h"
29 #include "algorithms/multi_class_classifier/multi_class_classifier_model.h"
30 
31 namespace daal
32 {
33 namespace algorithms
34 {
44 namespace svm
45 {
49 namespace interface1
50 {
62 template<typename modelFPType = DAAL_ALGORITHM_FP_TYPE>
63 class DAAL_EXPORT ModelBuilder
64 {
65 public:
66 
73  ModelBuilder(size_t nFeatures, size_t nSupportVectors): _nFeatures(nFeatures), _nSupportVectors(nSupportVectors), _modelPtr(Model::create<modelFPType>(nFeatures))
74  {
75  _supportV = _modelPtr->getSupportVectors();
76  _supportI = _modelPtr->getSupportIndices();
77  _supportCC = _modelPtr->getClassificationCoefficients();
78  _supportV->resize(nSupportVectors);
79  _supportI->resize(nSupportVectors);
80  _supportCC->resize(nSupportVectors);
81  }
82 
89  template<typename RandomIterator>
90  void setSupportVectors(RandomIterator first, RandomIterator last)
91  {
92  if((last - first) != _nSupportVectors*_nFeatures)
93  {
94  services::throwIfPossible(services::Status(services::ErrorIncorrectParameter));
95  }
96  commonSetter<RandomIterator>(_supportV, first, last);
97  }
98 
105  template<typename RandomIterator>
106  void setSupportIndices(RandomIterator first, RandomIterator last)
107  {
108  if((last - first) != _nSupportVectors)
109  {
110  services::throwIfPossible(services::Status(services::ErrorIncorrectParameter));
111  }
112  commonSetter<RandomIterator>(_supportI, first, last);
113  }
114 
121  template<typename RandomIterator>
122  void setClassificationCoefficients(RandomIterator first, RandomIterator last)
123  {
124  if((last - first) != _nSupportVectors)
125  {
126  services::throwIfPossible(services::Status(services::ErrorIncorrectParameter));
127  }
128  commonSetter<RandomIterator>(_supportCC, first, last);
129  }
130 
135  void setBias(modelFPType bias)
136  {
137  _modelPtr->setBias(bias);
138  }
139 
144  ModelPtr getModel()
145  {
146  return _modelPtr;
147  }
148 
153  services::Status getStatus()
154  {
155  return _s;
156  }
157 private:
158  ModelPtr _modelPtr;
159  services::Status _s;
160  size_t _nFeatures;
161  size_t _nSupportVectors;
162  data_management::NumericTablePtr _supportV;
163  data_management::NumericTablePtr _supportCC;
164  data_management::NumericTablePtr _supportI;
166  template<typename RandomIterator>
167  services::Status commonSetter(data_management::NumericTablePtr& p, RandomIterator first, RandomIterator last)
168  {
169  services::Status s;
170 
171  data_management::BlockDescriptor<modelFPType> pBlock;
172  p->getBlockOfRows(0, _nSupportVectors, data_management::readWrite, pBlock);
173  modelFPType* sp = pBlock.getBlockPtr();
174  while(first != last)
175  {
176  *sp = *first;
177  ++first;
178  ++sp;
179  }
180  p->releaseBlockOfRows(pBlock);
181  return s;
182  }
183 };
184 
186 } // namespace interface1
187 using interface1::ModelBuilder;
188 
189 } // namespace svm
190 } // namespace algorithms
191 } // namespace daal
192 #endif
daal::algorithms::svm::interface1::ModelBuilder::setSupportVectors
void setSupportVectors(RandomIterator first, RandomIterator last)
Definition: svm_model_builder.h:90
daal::algorithms::svm::interface1::ModelBuilder
Model Builder class for class SVM Model.
Definition: svm_model_builder.h:63
daal::algorithms::svm::interface1::ModelBuilder::ModelBuilder
ModelBuilder(size_t nFeatures, size_t nSupportVectors)
Definition: svm_model_builder.h:73
daal::algorithms::svm::interface1::ModelBuilder::setSupportIndices
void setSupportIndices(RandomIterator first, RandomIterator last)
Definition: svm_model_builder.h:106
daal::algorithms::svm::interface1::ModelBuilder::setBias
void setBias(modelFPType bias)
Definition: svm_model_builder.h:135
daal::algorithms::svm::interface1::ModelBuilder::setClassificationCoefficients
void setClassificationCoefficients(RandomIterator first, RandomIterator last)
Definition: svm_model_builder.h:122
daal::services::ErrorIncorrectParameter
Definition: error_indexes.h:99
daal::algorithms::svm::interface1::ModelBuilder::getModel
ModelPtr getModel()
Definition: svm_model_builder.h:144
daal::algorithms::svm::interface1::Model
Model of the classifier trained by the svm::training::Batch algorithm
Definition: svm_model.h:151
daal::algorithms::svm::interface1::ModelBuilder::getStatus
services::Status getStatus()
Definition: svm_model_builder.h:153

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