48 #ifndef __SVM_MODEL_H__
49 #define __SVM_MODEL_H__
51 #include "data_management/data/homogen_numeric_table.h"
52 #include "data_management/data/csr_numeric_table.h"
53 #include "algorithms/model.h"
54 #include "algorithms/kernel_function/kernel_function.h"
55 #include "algorithms/kernel_function/kernel_function_linear.h"
56 #include "algorithms/kernel_function/kernel_function_types.h"
57 #include "algorithms/classifier/classifier_model.h"
90 struct DAAL_EXPORT Parameter :
public classifier::Parameter
92 Parameter(
const services::SharedPtr<kernel_function::KernelIface> &kernelForParameter
93 = services::SharedPtr<kernel_function::KernelIface>(
new kernel_function::linear::Batch<>()),
95 double accuracyThreshold = 0.001,
97 size_t maxIterations = 1000000,
98 size_t cacheSize = 8000000,
99 bool doShrinking =
true,
100 size_t shrinkingStep = 1000) :
101 C(C), accuracyThreshold(accuracyThreshold), tau(tau), maxIterations(maxIterations), cacheSize(cacheSize),
102 doShrinking(doShrinking), shrinkingStep(shrinkingStep), kernel(kernelForParameter) {};
105 double accuracyThreshold;
107 size_t maxIterations;
111 size_t shrinkingStep;
112 services::SharedPtr<kernel_function::KernelIface> kernel;
114 services::Status check() const DAAL_C11_OVERRIDE;
127 class DAAL_EXPORT Model : public classifier::Model
130 DECLARE_MODEL(Model, classifier::Model);
140 template<
typename modelFPType>
141 Model(modelFPType dummy,
size_t nColumns, data_management::NumericTableIface::StorageLayout layout = data_management::NumericTableIface::aos) :
144 using namespace data_management;
145 if (layout == NumericTableIface::csrArray)
147 modelFPType *dummyPtr = NULL;
148 _SV.reset(
new CSRNumericTable(dummyPtr,NULL,NULL,nColumns));
152 _SV.reset(
new HomogenNumericTable<modelFPType>(NULL, nColumns, 0));
154 _SVCoeff.reset(
new HomogenNumericTable<modelFPType>(NULL, 1, 0));
165 template<
typename modelFPType>
166 DAAL_EXPORT
static services::SharedPtr<Model> create(
size_t nColumns,
167 data_management::NumericTableIface::StorageLayout layout = data_management::NumericTableIface::aos,
168 services::Status *stat = NULL);
174 Model() : _SV(), _SVCoeff(), _bias(0.0) {}
181 static services::SharedPtr<Model> create(services::Status *stat = NULL)
183 services::SharedPtr<Model> modelPtr(
new Model());
187 stat->add(services::ErrorMemoryAllocationFailed);
198 data_management::NumericTablePtr getSupportVectors() {
return _SV; }
204 data_management::NumericTablePtr getClassificationCoefficients() {
return _SVCoeff; }
210 virtual double getBias() {
return _bias; }
216 virtual void setBias(
double bias)
225 size_t getNumberOfFeatures() const DAAL_C11_OVERRIDE {
return (_SV ? _SV->getNumberOfColumns() : 0); }
228 data_management::NumericTablePtr _SV;
229 data_management::NumericTablePtr _SVCoeff;
232 template<
typename modelFPType>
233 DAAL_EXPORT Model(modelFPType dummy,
size_t nColumns, data_management::NumericTableIface::StorageLayout layout,
234 services::Status &st);
236 template<
typename Archive,
bool onDeserialize>
237 services::Status serialImpl(Archive *arch)
239 services::Status st = classifier::Model::serialImpl<Archive, onDeserialize>(arch);
242 arch->setSharedPtrObj(_SV);
243 arch->setSharedPtrObj(_SVCoeff);
249 typedef services::SharedPtr<Model> ModelPtr;
252 using interface1::Parameter;
253 using interface1::Model;
254 using interface1::ModelPtr;
daal::algorithms::svm::interface1::Parameter
Optional parameters.
Definition: svm_model.h:90
daal
Definition: algorithm_base_common.h:57
daal::algorithms::svm::interface1::Model
Model of the classifier trained by the svm::training::Batch algorithm
Definition: svm_model.h:127
daal::algorithms::svm::interface1::Parameter::kernel
services::SharedPtr< kernel_function::KernelIface > kernel
Definition: svm_model.h:112
daal::algorithms::svm::interface1::Model::create
static services::SharedPtr< Model > create(services::Status *stat=NULL)
Definition: svm_model.h:181
daal::algorithms::svm::interface1::Parameter::accuracyThreshold
double accuracyThreshold
Definition: svm_model.h:105
daal::algorithms::svm::interface1::Parameter::shrinkingStep
size_t shrinkingStep
Definition: svm_model.h:111
daal::services::ErrorMemoryAllocationFailed
Definition: error_indexes.h:170
daal::algorithms::svm::interface1::Parameter::tau
double tau
Definition: svm_model.h:106
daal::algorithms::svm::interface1::Model::getBias
virtual double getBias()
Definition: svm_model.h:210
daal::algorithms::svm::interface1::Parameter::doShrinking
bool doShrinking
Definition: svm_model.h:110
daal::algorithms::svm::interface1::Parameter::cacheSize
size_t cacheSize
Definition: svm_model.h:108
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:141
daal::algorithms::svm::interface1::Model::setBias
virtual void setBias(double bias)
Definition: svm_model.h:216
daal::algorithms::svm::interface1::Model::getClassificationCoefficients
data_management::NumericTablePtr getClassificationCoefficients()
Definition: svm_model.h:204
daal::algorithms::svm::interface1::Model::getSupportVectors
data_management::NumericTablePtr getSupportVectors()
Definition: svm_model.h:198
daal::algorithms::svm::interface1::Model::Model
Model()
Definition: svm_model.h:174
daal::algorithms::svm::interface1::Parameter::maxIterations
size_t maxIterations
Definition: svm_model.h:107
daal::algorithms::svm::interface1::Model::getNumberOfFeatures
size_t getNumberOfFeatures() const DAAL_C11_OVERRIDE
Definition: svm_model.h:225