24 #ifndef __SVM_MODEL_H__
25 #define __SVM_MODEL_H__
27 #include "data_management/data/homogen_numeric_table.h"
28 #include "data_management/data/csr_numeric_table.h"
29 #include "algorithms/model.h"
30 #include "algorithms/kernel_function/kernel_function.h"
31 #include "algorithms/kernel_function/kernel_function_linear.h"
32 #include "algorithms/kernel_function/kernel_function_types.h"
33 #include "algorithms/classifier/classifier_model.h"
66 struct DAAL_EXPORT Parameter :
public classifier::interface1::Parameter
68 Parameter(
const services::SharedPtr<kernel_function::KernelIface> &kernelForParameter
69 = services::SharedPtr<kernel_function::KernelIface>(
new kernel_function::linear::Batch<>()),
71 double accuracyThreshold = 0.001,
73 size_t maxIterations = 1000000,
74 size_t cacheSize = 8000000,
75 bool doShrinking =
true,
76 size_t shrinkingStep = 1000) :
77 C(C), accuracyThreshold(accuracyThreshold), tau(tau), maxIterations(maxIterations), cacheSize(cacheSize),
78 doShrinking(doShrinking), shrinkingStep(shrinkingStep), kernel(kernelForParameter) {};
81 double accuracyThreshold;
88 algorithms::kernel_function::KernelIfacePtr kernel;
90 services::Status check() const DAAL_C11_OVERRIDE;
111 struct DAAL_EXPORT Parameter :
public classifier::Parameter
113 Parameter(
const services::SharedPtr<kernel_function::KernelIface> &kernelForParameter
114 = services::SharedPtr<kernel_function::KernelIface>(
new kernel_function::linear::Batch<>()),
116 double accuracyThreshold = 0.001,
118 size_t maxIterations = 1000000,
119 size_t cacheSize = 8000000,
120 bool doShrinking =
true,
121 size_t shrinkingStep = 1000) :
122 C(C), accuracyThreshold(accuracyThreshold), tau(tau), maxIterations(maxIterations), cacheSize(cacheSize),
123 doShrinking(doShrinking), shrinkingStep(shrinkingStep), kernel(kernelForParameter) {};
126 double accuracyThreshold;
128 size_t maxIterations;
132 size_t shrinkingStep;
133 algorithms::kernel_function::KernelIfacePtr kernel;
135 services::Status check() const DAAL_C11_OVERRIDE;
151 class DAAL_EXPORT Model :
public classifier::Model
154 DECLARE_MODEL(Model, classifier::Model);
164 template<
typename modelFPType>
165 Model(modelFPType dummy,
size_t nColumns, data_management::NumericTableIface::StorageLayout layout = data_management::NumericTableIface::aos) :
168 using namespace data_management;
169 if (layout == NumericTableIface::csrArray)
171 modelFPType *dummyPtr = NULL;
172 _SV.reset(
new CSRNumericTable(dummyPtr,NULL,NULL,nColumns));
176 _SV.reset(
new HomogenNumericTable<modelFPType>(NULL, nColumns, 0));
178 _SVCoeff.reset(
new HomogenNumericTable<modelFPType>(NULL, 1, 0));
179 _SVIndices.reset(
new HomogenNumericTable<int>(NULL, 1, 0));
190 template<
typename modelFPType>
191 DAAL_EXPORT
static services::SharedPtr<Model> create(
size_t nColumns,
192 data_management::NumericTableIface::StorageLayout layout = data_management::NumericTableIface::aos,
193 services::Status *stat = NULL);
199 Model() : _SV(), _SVIndices(), _SVCoeff(), _bias(0.0) {}
206 static services::SharedPtr<Model> create(services::Status *stat = NULL)
208 services::SharedPtr<Model> modelPtr(
new Model());
212 stat->add(services::ErrorMemoryAllocationFailed);
223 data_management::NumericTablePtr getSupportVectors() {
return _SV; }
229 data_management::NumericTablePtr getSupportIndices() {
return _SVIndices; }
235 data_management::NumericTablePtr getClassificationCoefficients() {
return _SVCoeff; }
241 virtual double getBias() {
return _bias; }
247 virtual void setBias(
double bias)
256 size_t getNumberOfFeatures() const DAAL_C11_OVERRIDE {
return (_SV ? _SV->getNumberOfColumns() : 0); }
259 data_management::NumericTablePtr _SV;
260 data_management::NumericTablePtr _SVCoeff;
262 data_management::NumericTablePtr _SVIndices;
264 template<
typename modelFPType>
265 DAAL_EXPORT Model(modelFPType dummy,
size_t nColumns, data_management::NumericTableIface::StorageLayout layout,
266 services::Status &st);
268 template<
typename Archive,
bool onDeserialize>
269 services::Status serialImpl(Archive *arch)
271 services::Status st = classifier::Model::serialImpl<Archive, onDeserialize>(arch);
274 arch->setSharedPtrObj(_SV);
275 arch->setSharedPtrObj(_SVCoeff);
278 arch->setSharedPtrObj(_SVIndices);
283 typedef services::SharedPtr<Model> ModelPtr;
286 using interface2::Parameter;
287 using interface1::Model;
288 using interface1::ModelPtr;
daal::algorithms::svm::interface1::Parameter::kernel
algorithms::kernel_function::KernelIfacePtr kernel
Definition: svm_model.h:88
daal::algorithms::svm::interface1::Model::create
static services::SharedPtr< Model > create(services::Status *stat=NULL)
Definition: svm_model.h:206
daal::algorithms::svm::interface2::Parameter::cacheSize
size_t cacheSize
Definition: svm_model.h:129
daal::algorithms::svm::interface1::Parameter::maxIterations
size_t maxIterations
Definition: svm_model.h:83
daal::algorithms::svm::interface2::Parameter::doShrinking
bool doShrinking
Definition: svm_model.h:131
daal::algorithms::svm::interface2::Parameter::tau
double tau
Definition: svm_model.h:127
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:165
daal::algorithms::svm::interface1::Parameter::accuracyThreshold
double accuracyThreshold
Definition: svm_model.h:81
daal::algorithms::svm::interface1::Parameter::shrinkingStep
size_t shrinkingStep
Definition: svm_model.h:87
daal::algorithms::svm::interface1::Model::getClassificationCoefficients
data_management::NumericTablePtr getClassificationCoefficients()
Definition: svm_model.h:235
daal::algorithms::svm::interface1::Model::setBias
virtual void setBias(double bias)
Definition: svm_model.h:247
daal::algorithms::svm::interface1::Model::getNumberOfFeatures
size_t getNumberOfFeatures() const DAAL_C11_OVERRIDE
Definition: svm_model.h:256
daal::algorithms::svm::interface1::Model::getSupportIndices
data_management::NumericTablePtr getSupportIndices()
Definition: svm_model.h:229
daal::algorithms::svm::interface1::Model::getBias
virtual double getBias()
Definition: svm_model.h:241
daal::algorithms::svm::interface1::Parameter::doShrinking
bool doShrinking
Definition: svm_model.h:86
daal::algorithms::svm::interface2::Parameter::kernel
algorithms::kernel_function::KernelIfacePtr kernel
Definition: svm_model.h:133
daal::algorithms::svm::interface1::Parameter::cacheSize
size_t cacheSize
Definition: svm_model.h:84
daal::algorithms::svm::interface1::Model::Model
Model()
Definition: svm_model.h:199
daal::algorithms::svm::interface2::Parameter::shrinkingStep
size_t shrinkingStep
Definition: svm_model.h:132
daal::algorithms::classifier::interface1::Parameter
Base class for the parameters of the classification algorithm.
Definition: classifier_model.h:69
daal::algorithms::svm::interface2::Parameter::maxIterations
size_t maxIterations
Definition: svm_model.h:128
daal::algorithms::svm::interface1::Model::getSupportVectors
data_management::NumericTablePtr getSupportVectors()
Definition: svm_model.h:223
daal::algorithms::svm::interface1::Parameter
Optional parameters.
Definition: svm_model.h:66
daal::services::ErrorMemoryAllocationFailed
Definition: error_indexes.h:150
daal::algorithms::svm::interface2::Parameter::accuracyThreshold
double accuracyThreshold
Definition: svm_model.h:126
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::Parameter::tau
double tau
Definition: svm_model.h:82