22 #ifndef __SVM_MODEL_H__
23 #define __SVM_MODEL_H__
25 #include "data_management/data/homogen_numeric_table.h"
26 #include "data_management/data/csr_numeric_table.h"
27 #include "algorithms/model.h"
28 #include "algorithms/kernel_function/kernel_function.h"
29 #include "algorithms/kernel_function/kernel_function_linear.h"
30 #include "algorithms/kernel_function/kernel_function_types.h"
31 #include "algorithms/classifier/classifier_model.h"
64 struct DAAL_EXPORT Parameter :
public classifier::Parameter
66 Parameter(
const services::SharedPtr<kernel_function::KernelIface> &kernelForParameter
67 = services::SharedPtr<kernel_function::KernelIface>(
new kernel_function::linear::Batch<>()),
69 double accuracyThreshold = 0.001,
71 size_t maxIterations = 1000000,
72 size_t cacheSize = 8000000,
73 bool doShrinking =
true,
74 size_t shrinkingStep = 1000) :
75 C(C), accuracyThreshold(accuracyThreshold), tau(tau), maxIterations(maxIterations), cacheSize(cacheSize),
76 doShrinking(doShrinking), shrinkingStep(shrinkingStep), kernel(kernelForParameter) {};
79 double accuracyThreshold;
86 algorithms::kernel_function::KernelIfacePtr kernel;
88 services::Status check() const DAAL_C11_OVERRIDE;
101 class DAAL_EXPORT Model : public classifier::Model
104 DECLARE_MODEL(Model, classifier::Model);
114 template<
typename modelFPType>
115 Model(modelFPType dummy,
size_t nColumns, data_management::NumericTableIface::StorageLayout layout = data_management::NumericTableIface::aos) :
118 using namespace data_management;
119 if (layout == NumericTableIface::csrArray)
121 modelFPType *dummyPtr = NULL;
122 _SV.reset(
new CSRNumericTable(dummyPtr,NULL,NULL,nColumns));
126 _SV.reset(
new HomogenNumericTable<modelFPType>(NULL, nColumns, 0));
128 _SVCoeff.reset(
new HomogenNumericTable<modelFPType>(NULL, 1, 0));
129 _SVIndices.reset(
new HomogenNumericTable<int>(NULL, 1, 0));
140 template<
typename modelFPType>
141 DAAL_EXPORT
static services::SharedPtr<Model> create(
size_t nColumns,
142 data_management::NumericTableIface::StorageLayout layout = data_management::NumericTableIface::aos,
143 services::Status *stat = NULL);
149 Model() : _SV(), _SVIndices(), _SVCoeff(), _bias(0.0) {}
156 static services::SharedPtr<Model> create(services::Status *stat = NULL)
158 services::SharedPtr<Model> modelPtr(
new Model());
162 stat->add(services::ErrorMemoryAllocationFailed);
173 data_management::NumericTablePtr getSupportVectors() {
return _SV; }
179 data_management::NumericTablePtr getSupportIndices() {
return _SVIndices; }
185 data_management::NumericTablePtr getClassificationCoefficients() {
return _SVCoeff; }
191 virtual double getBias() {
return _bias; }
197 virtual void setBias(
double bias)
206 size_t getNumberOfFeatures() const DAAL_C11_OVERRIDE {
return (_SV ? _SV->getNumberOfColumns() : 0); }
209 data_management::NumericTablePtr _SV;
210 data_management::NumericTablePtr _SVCoeff;
212 data_management::NumericTablePtr _SVIndices;
214 template<
typename modelFPType>
215 DAAL_EXPORT Model(modelFPType dummy,
size_t nColumns, data_management::NumericTableIface::StorageLayout layout,
216 services::Status &st);
218 template<
typename Archive,
bool onDeserialize>
219 services::Status serialImpl(Archive *arch)
221 services::Status st = classifier::Model::serialImpl<Archive, onDeserialize>(arch);
224 arch->setSharedPtrObj(_SV);
225 arch->setSharedPtrObj(_SVCoeff);
228 arch->setSharedPtrObj(_SVIndices);
233 typedef services::SharedPtr<Model> ModelPtr;
236 using interface1::Parameter;
237 using interface1::Model;
238 using interface1::ModelPtr;
daal::algorithms::svm::interface1::Parameter
Optional parameters.
Definition: svm_model.h:64
daal
Definition: algorithm_base_common.h:31
daal::algorithms::svm::interface1::Model::getSupportIndices
data_management::NumericTablePtr getSupportIndices()
Definition: svm_model.h:179
daal::algorithms::svm::interface1::Model
Model of the classifier trained by the svm::training::Batch algorithm
Definition: svm_model.h:101
daal::algorithms::svm::interface1::Model::create
static services::SharedPtr< Model > create(services::Status *stat=NULL)
Definition: svm_model.h:156
daal::algorithms::svm::interface1::Parameter::accuracyThreshold
double accuracyThreshold
Definition: svm_model.h:79
daal::algorithms::svm::interface1::Parameter::shrinkingStep
size_t shrinkingStep
Definition: svm_model.h:85
daal::services::ErrorMemoryAllocationFailed
Definition: error_indexes.h:146
daal::algorithms::svm::interface1::Parameter::tau
double tau
Definition: svm_model.h:80
daal::algorithms::svm::interface1::Model::getBias
virtual double getBias()
Definition: svm_model.h:191
daal::algorithms::svm::interface1::Parameter::doShrinking
bool doShrinking
Definition: svm_model.h:84
daal::algorithms::svm::interface1::Parameter::cacheSize
size_t cacheSize
Definition: svm_model.h:82
daal::algorithms::svm::interface1::Model::Model
Model(modelFPType dummy, size_t nColumns, data_management::NumericTableIface::StorageLayout layout=data_management::NumericTableIface::aos)
Definition: svm_model.h:115
daal::algorithms::svm::interface1::Parameter::kernel
algorithms::kernel_function::KernelIfacePtr kernel
Definition: svm_model.h:86
daal::algorithms::svm::interface1::Model::setBias
virtual void setBias(double bias)
Definition: svm_model.h:197
daal::algorithms::svm::interface1::Model::getClassificationCoefficients
data_management::NumericTablePtr getClassificationCoefficients()
Definition: svm_model.h:185
daal::algorithms::svm::interface1::Model::getSupportVectors
data_management::NumericTablePtr getSupportVectors()
Definition: svm_model.h:173
daal::algorithms::svm::interface1::Model::Model
Model()
Definition: svm_model.h:149
daal::algorithms::svm::interface1::Parameter::maxIterations
size_t maxIterations
Definition: svm_model.h:81
daal::algorithms::svm::interface1::Model::getNumberOfFeatures
size_t getNumberOfFeatures() const DAAL_C11_OVERRIDE
Definition: svm_model.h:206