//
// This file is auto-generated. Please don't modify it!
//
package org.opencv.ml;
import org.opencv.core.Mat;
// C++: class CvSVM
/**
* <p>Support Vector Machines.</p>
*
* <p>Note:</p>
* <ul>
* <li> (Python) An example of digit recognition using SVM can be found at
* opencv_source/samples/python2/digits.py
* <li> (Python) An example of grid search digit recognition using SVM can be
* found at opencv_source/samples/python2/digits_adjust.py
* <li> (Python) An example of video digit recognition using SVM can be found
* at opencv_source/samples/python2/digits_video.py
* </ul>
*
* @see <a href="http://docs.opencv.org/modules/ml/doc/support_vector_machines.html#cvsvm">org.opencv.ml.CvSVM : public CvStatModel</a>
*/
public class CvSVM extends CvStatModel {
protected CvSVM(long addr) { super(addr); }
public static final int
C_SVC = 100,
NU_SVC = 101,
ONE_CLASS = 102,
EPS_SVR = 103,
NU_SVR = 104,
LINEAR = 0,
POLY = 1,
RBF = 2,
SIGMOID = 3,
C = 0,
GAMMA = 1,
P = 2,
NU = 3,
COEF = 4,
DEGREE = 5;
//
// C++: CvSVM::CvSVM()
//
/**
* <p>Default and training constructors.</p>
*
* <p>The constructors follow conventions of "CvStatModel.CvStatModel". See
* "CvStatModel.train" for parameters descriptions.</p>
*
* @see <a href="http://docs.opencv.org/modules/ml/doc/support_vector_machines.html#cvsvm-cvsvm">org.opencv.ml.CvSVM.CvSVM</a>
*/
public CvSVM()
{
super( CvSVM_0() );
return;
}
//
// C++: CvSVM::CvSVM(Mat trainData, Mat responses, Mat varIdx = cv::Mat(), Mat sampleIdx = cv::Mat(), CvSVMParams params = CvSVMParams())
//
/**
* <p>Default and training constructors.</p>
*
* <p>The constructors follow conventions of "CvStatModel.CvStatModel". See
* "CvStatModel.train" for parameters descriptions.</p>
*
* @param trainData a trainData
* @param responses a responses
* @param varIdx a varIdx
* @param sampleIdx a sampleIdx
* @param params a params
*
* @see <a href="http://docs.opencv.org/modules/ml/doc/support_vector_machines.html#cvsvm-cvsvm">org.opencv.ml.CvSVM.CvSVM</a>
*/
public CvSVM(Mat trainData, Mat responses, Mat varIdx, Mat sampleIdx, CvSVMParams params)
{
super( CvSVM_1(trainData.nativeObj, responses.nativeObj, varIdx.nativeObj, sampleIdx.nativeObj, params.nativeObj) );
return;
}
/**
* <p>Default and training constructors.</p>
*
* <p>The constructors follow conventions of "CvStatModel.CvStatModel". See
* "CvStatModel.train" for parameters descriptions.</p>
*
* @param trainData a trainData
* @param responses a responses
*
* @see <a href="http://docs.opencv.org/modules/ml/doc/support_vector_machines.html#cvsvm-cvsvm">org.opencv.ml.CvSVM.CvSVM</a>
*/
public CvSVM(Mat trainData, Mat responses)
{
super( CvSVM_2(trainData.nativeObj, responses.nativeObj) );
return;
}
//
// C++: void CvSVM::clear()
//
public void clear()
{
clear_0(nativeObj);
return;
}
//
// C++: int CvSVM::get_support_vector_count()
//
public int get_support_vector_count()
{
int retVal = get_support_vector_count_0(nativeObj);
return retVal;
}
//
// C++: int CvSVM::get_var_count()
//
/**
* <p>Returns the number of used features (variables count).</p>
*
* @see <a href="http://docs.opencv.org/modules/ml/doc/support_vector_machines.html#cvsvm-get-var-count">org.opencv.ml.CvSVM.get_var_count</a>
*/
public int get_var_count()
{
int retVal = get_var_count_0(nativeObj);
return retVal;
}
//
// C++: float CvSVM::predict(Mat sample, bool returnDFVal = false)
//
/**
* <p>Predicts the response for input sample(s).</p>
*
* <p>If you pass one sample then prediction result is returned. If you want to get
* responses for several samples then you should pass the <code>results</code>
* matrix where prediction results will be stored.</p>
*
* <p>The function is parallelized with the TBB library.</p>
*
* @param sample Input sample for prediction.
* @param returnDFVal Specifies a type of the return value. If <code>true</code>
* and the problem is 2-class classification then the method returns the
* decision function value that is signed distance to the margin, else the
* function returns a class label (classification) or estimated function value
* (regression).
*
* @see <a href="http://docs.opencv.org/modules/ml/doc/support_vector_machines.html#cvsvm-predict">org.opencv.ml.CvSVM.predict</a>
*/
public float predict(Mat sample, boolean returnDFVal)
{
float retVal = predict_0(nativeObj, sample.nativeObj, returnDFVal);
return retVal;
}
/**
* <p>Predicts the response for input sample(s).</p>
*
* <p>If you pass one sample then prediction result is returned. If you want to get
* responses for several samples then you should pass the <code>results</code>
* matrix where prediction results will be stored.</p>
*
* <p>The function is parallelized with the TBB library.</p>
*
* @param sample Input sample for prediction.
*
* @see <a href="http://docs.opencv.org/modules/ml/doc/support_vector_machines.html#cvsvm-predict">org.opencv.ml.CvSVM.predict</a>
*/
public float predict(Mat sample)
{
float retVal = predict_1(nativeObj, sample.nativeObj);
return retVal;
}
//
// C++: void CvSVM::predict(Mat samples, Mat& results)
//
/**
* <p>Predicts the response for input sample(s).</p>
*
* <p>If you pass one sample then prediction result is returned. If you want to get
* responses for several samples then you should pass the <code>results</code>
* matrix where prediction results will be stored.</p>
*
* <p>The function is parallelized with the TBB library.</p>
*
* @param samples Input samples for prediction.
* @param results Output prediction responses for corresponding samples.
*
* @see <a href="http://docs.opencv.org/modules/ml/doc/support_vector_machines.html#cvsvm-predict">org.opencv.ml.CvSVM.predict</a>
*/
public void predict_all(Mat samples, Mat results)
{
predict_all_0(nativeObj, samples.nativeObj, results.nativeObj);
return;
}
//
// C++: bool CvSVM::train(Mat trainData, Mat responses, Mat varIdx = cv::Mat(), Mat sampleIdx = cv::Mat(), CvSVMParams params = CvSVMParams())
//
/**
* <p>Trains an SVM.</p>
*
* <p>The method trains the SVM model. It follows the conventions of the generic
* "CvStatModel.train" approach with the following limitations:</p>
* <ul>
* <li> Only the <code>CV_ROW_SAMPLE</code> data layout is supported.
* <li> Input variables are all ordered.
* <li> Output variables can be either categorical (<code>params.svm_type=CvSVM.C_SVC</code>
* or <code>params.svm_type=CvSVM.NU_SVC</code>), or ordered (<code>params.svm_type=CvSVM.EPS_SVR</code>
* or <code>params.svm_type=CvSVM.NU_SVR</code>), or not required at all
* (<code>params.svm_type=CvSVM.ONE_CLASS</code>).
* <li> Missing measurements are not supported.
* </ul>
*
* <p>All the other parameters are gathered in the "CvSVMParams" structure.</p>
*
* @param trainData a trainData
* @param responses a responses
* @param varIdx a varIdx
* @param sampleIdx a sampleIdx
* @param params a params
*
* @see <a href="http://docs.opencv.org/modules/ml/doc/support_vector_machines.html#cvsvm-train">org.opencv.ml.CvSVM.train</a>
*/
public boolean train(Mat trainData, Mat responses, Mat varIdx, Mat sampleIdx, CvSVMParams params)
{
boolean retVal = train_0(nativeObj, trainData.nativeObj, responses.nativeObj, varIdx.nativeObj, sampleIdx.nativeObj, params.nativeObj);
return retVal;
}
/**
* <p>Trains an SVM.</p>
*
* <p>The method trains the SVM model. It follows the conventions of the generic
* "CvStatModel.train" approach with the following limitations:</p>
* <ul>
* <li> Only the <code>CV_ROW_SAMPLE</code> data layout is supported.
* <li> Input variables are all ordered.
* <li> Output variables can be either categorical (<code>params.svm_type=CvSVM.C_SVC</code>
* or <code>params.svm_type=CvSVM.NU_SVC</code>), or ordered (<code>params.svm_type=CvSVM.EPS_SVR</code>
* or <code>params.svm_type=CvSVM.NU_SVR</code>), or not required at all
* (<code>params.svm_type=CvSVM.ONE_CLASS</code>).
* <li> Missing measurements are not supported.
* </ul>
*
* <p>All the other parameters are gathered in the "CvSVMParams" structure.</p>
*
* @param trainData a trainData
* @param responses a responses
*
* @see <a href="http://docs.opencv.org/modules/ml/doc/support_vector_machines.html#cvsvm-train">org.opencv.ml.CvSVM.train</a>
*/
public boolean train(Mat trainData, Mat responses)
{
boolean retVal = train_1(nativeObj, trainData.nativeObj, responses.nativeObj);
return retVal;
}
//
// C++: bool CvSVM::train_auto(Mat trainData, Mat responses, Mat varIdx, Mat sampleIdx, CvSVMParams params, int k_fold = 10, CvParamGrid Cgrid = CvSVM::get_default_grid(CvSVM::C), CvParamGrid gammaGrid = CvSVM::get_default_grid(CvSVM::GAMMA), CvParamGrid pGrid = CvSVM::get_default_grid(CvSVM::P), CvParamGrid nuGrid = CvSVM::get_default_grid(CvSVM::NU), CvParamGrid coeffGrid = CvSVM::get_default_grid(CvSVM::COEF), CvParamGrid degreeGrid = CvSVM::get_default_grid(CvSVM::DEGREE), bool balanced = false)
//
/**
* <p>Trains an SVM with optimal parameters.</p>
*
* <p>The method trains the SVM model automatically by choosing the optimal
* parameters <code>C</code>, <code>gamma</code>, <code>p</code>,
* <code>nu</code>, <code>coef0</code>, <code>degree</code> from "CvSVMParams".
* Parameters are considered optimal when the cross-validation estimate of the
* test set error is minimal.</p>
*
* <p>If there is no need to optimize a parameter, the corresponding grid step
* should be set to any value less than or equal to 1. For example, to avoid
* optimization in <code>gamma</code>, set <code>gamma_grid.step = 0</code>,
* <code>gamma_grid.min_val</code>, <code>gamma_grid.max_val</code> as arbitrary
* numbers. In this case, the value <code>params.gamma</code> is taken for
* <code>gamma</code>.</p>
*
* <p>And, finally, if the optimization in a parameter is required but the
* corresponding grid is unknown, you may call the function "CvSVM.get_default_grid".
* To generate a grid, for example, for <code>gamma</code>, call
* <code>CvSVM.get_default_grid(CvSVM.GAMMA)</code>.</p>
*
* <p>This function works for the classification (<code>params.svm_type=CvSVM.C_SVC</code>
* or <code>params.svm_type=CvSVM.NU_SVC</code>) as well as for the regression
* (<code>params.svm_type=CvSVM.EPS_SVR</code> or <code>params.svm_type=CvSVM.NU_SVR</code>).
* If <code>params.svm_type=CvSVM.ONE_CLASS</code>, no optimization is made and
* the usual SVM with parameters specified in <code>params</code> is executed.</p>
*
* @param trainData a trainData
* @param responses a responses
* @param varIdx a varIdx
* @param sampleIdx a sampleIdx
* @param params a params
* @param k_fold Cross-validation parameter. The training set is divided into
* <code>k_fold</code> subsets. One subset is used to test the model, the others
* form the train set. So, the SVM algorithm is executed <code>k_fold</code>
* times.
* @param Cgrid a Cgrid
* @param gammaGrid Iteration grid for the corresponding SVM parameter.
* @param pGrid Iteration grid for the corresponding SVM parameter.
* @param nuGrid Iteration grid for the corresponding SVM parameter.
* @param coeffGrid Iteration grid for the corresponding SVM parameter.
* @param degreeGrid Iteration grid for the corresponding SVM parameter.
* @param balanced If <code>true</code> and the problem is 2-class
* classification then the method creates more balanced cross-validation subsets
* that is proportions between classes in subsets are close to such proportion
* in the whole train dataset.
*
* @see <a href="http://docs.opencv.org/modules/ml/doc/support_vector_machines.html#cvsvm-train-auto">org.opencv.ml.CvSVM.train_auto</a>
*/
public boolean train_auto(Mat trainData, Mat responses, Mat varIdx, Mat sampleIdx, CvSVMParams params, int k_fold, CvParamGrid Cgrid, CvParamGrid gammaGrid, CvParamGrid pGrid, CvParamGrid nuGrid, CvParamGrid coeffGrid, CvParamGrid degreeGrid, boolean balanced)
{
boolean retVal = train_auto_0(nativeObj, trainData.nativeObj, responses.nativeObj, varIdx.nativeObj, sampleIdx.nativeObj, params.nativeObj, k_fold, Cgrid.nativeObj, gammaGrid.nativeObj, pGrid.nativeObj, nuGrid.nativeObj, coeffGrid.nativeObj, degreeGrid.nativeObj, balanced);
return retVal;
}
/**
* <p>Trains an SVM with optimal parameters.</p>
*
* <p>The method trains the SVM model automatically by choosing the optimal
* parameters <code>C</code>, <code>gamma</code>, <code>p</code>,
* <code>nu</code>, <code>coef0</code>, <code>degree</code> from "CvSVMParams".
* Parameters are considered optimal when the cross-validation estimate of the
* test set error is minimal.</p>
*
* <p>If there is no need to optimize a parameter, the corresponding grid step
* should be set to any value less than or equal to 1. For example, to avoid
* optimization in <code>gamma</code>, set <code>gamma_grid.step = 0</code>,
* <code>gamma_grid.min_val</code>, <code>gamma_grid.max_val</code> as arbitrary
* numbers. In this case, the value <code>params.gamma</code> is taken for
* <code>gamma</code>.</p>
*
* <p>And, finally, if the optimization in a parameter is required but the
* corresponding grid is unknown, you may call the function "CvSVM.get_default_grid".
* To generate a grid, for example, for <code>gamma</code>, call
* <code>CvSVM.get_default_grid(CvSVM.GAMMA)</code>.</p>
*
* <p>This function works for the classification (<code>params.svm_type=CvSVM.C_SVC</code>
* or <code>params.svm_type=CvSVM.NU_SVC</code>) as well as for the regression
* (<code>params.svm_type=CvSVM.EPS_SVR</code> or <code>params.svm_type=CvSVM.NU_SVR</code>).
* If <code>params.svm_type=CvSVM.ONE_CLASS</code>, no optimization is made and
* the usual SVM with parameters specified in <code>params</code> is executed.</p>
*
* @param trainData a trainData
* @param responses a responses
* @param varIdx a varIdx
* @param sampleIdx a sampleIdx
* @param params a params
*
* @see <a href="http://docs.opencv.org/modules/ml/doc/support_vector_machines.html#cvsvm-train-auto">org.opencv.ml.CvSVM.train_auto</a>
*/
public boolean train_auto(Mat trainData, Mat responses, Mat varIdx, Mat sampleIdx, CvSVMParams params)
{
boolean retVal = train_auto_1(nativeObj, trainData.nativeObj, responses.nativeObj, varIdx.nativeObj, sampleIdx.nativeObj, params.nativeObj);
return retVal;
}
@Override
protected void finalize() throws Throwable {
delete(nativeObj);
}
// C++: CvSVM::CvSVM()
private static native long CvSVM_0();
// C++: CvSVM::CvSVM(Mat trainData, Mat responses, Mat varIdx = cv::Mat(), Mat sampleIdx = cv::Mat(), CvSVMParams params = CvSVMParams())
private static native long CvSVM_1(long trainData_nativeObj, long responses_nativeObj, long varIdx_nativeObj, long sampleIdx_nativeObj, long params_nativeObj);
private static native long CvSVM_2(long trainData_nativeObj, long responses_nativeObj);
// C++: void CvSVM::clear()
private static native void clear_0(long nativeObj);
// C++: int CvSVM::get_support_vector_count()
private static native int get_support_vector_count_0(long nativeObj);
// C++: int CvSVM::get_var_count()
private static native int get_var_count_0(long nativeObj);
// C++: float CvSVM::predict(Mat sample, bool returnDFVal = false)
private static native float predict_0(long nativeObj, long sample_nativeObj, boolean returnDFVal);
private static native float predict_1(long nativeObj, long sample_nativeObj);
// C++: void CvSVM::predict(Mat samples, Mat& results)
private static native void predict_all_0(long nativeObj, long samples_nativeObj, long results_nativeObj);
// C++: bool CvSVM::train(Mat trainData, Mat responses, Mat varIdx = cv::Mat(), Mat sampleIdx = cv::Mat(), CvSVMParams params = CvSVMParams())
private static native boolean train_0(long nativeObj, long trainData_nativeObj, long responses_nativeObj, long varIdx_nativeObj, long sampleIdx_nativeObj, long params_nativeObj);
private static native boolean train_1(long nativeObj, long trainData_nativeObj, long responses_nativeObj);
// C++: bool CvSVM::train_auto(Mat trainData, Mat responses, Mat varIdx, Mat sampleIdx, CvSVMParams params, int k_fold = 10, CvParamGrid Cgrid = CvSVM::get_default_grid(CvSVM::C), CvParamGrid gammaGrid = CvSVM::get_default_grid(CvSVM::GAMMA), CvParamGrid pGrid = CvSVM::get_default_grid(CvSVM::P), CvParamGrid nuGrid = CvSVM::get_default_grid(CvSVM::NU), CvParamGrid coeffGrid = CvSVM::get_default_grid(CvSVM::COEF), CvParamGrid degreeGrid = CvSVM::get_default_grid(CvSVM::DEGREE), bool balanced = false)
private static native boolean train_auto_0(long nativeObj, long trainData_nativeObj, long responses_nativeObj, long varIdx_nativeObj, long sampleIdx_nativeObj, long params_nativeObj, int k_fold, long Cgrid_nativeObj, long gammaGrid_nativeObj, long pGrid_nativeObj, long nuGrid_nativeObj, long coeffGrid_nativeObj, long degreeGrid_nativeObj, boolean balanced);
private static native boolean train_auto_1(long nativeObj, long trainData_nativeObj, long responses_nativeObj, long varIdx_nativeObj, long sampleIdx_nativeObj, long params_nativeObj);
// native support for java finalize()
private static native void delete(long nativeObj);
}