关于svm_train的参数问题
2015-05-07 10:42
369 查看
初次使用svm,不知道svm_train的参数该怎么设置,svm_train源码的注释里虽然有相关解释,但是看得云里雾里,如下:
Train an SVM model from data (y, x) or an svm_problem prob using
'options' or an svm_parameter param.
If '-v' is specified in 'options' (i.e., cross validation)
either accuracy (ACC) or mean-squared error (MSE) is returned.
options:
-s svm_type : set type of SVM (default 0)
0 -- C-SVC(multi-class classification)
1 -- nu-SVC(multi-class classification)
2 -- one-class SVM
3 -- epsilon-SVR(regression)
4 -- nu-SVR(regression)
-t kernel_type : set type of kernel function (default 2)
0 -- linear: u'*v
1 -- polynomial: (gamma*u'*v + coef0)^degree
2 -- radial basis function: exp(-gamma*|u-v|^2)
3 -- sigmoid: tanh(gamma*u'*v + coef0)
4 -- precomputed kernel (kernel values in training_set_file)
-d degree : set degree in kernel function (default 3)
-g gamma : set gamma in kernel function (default 1/num_features)
-r coef0 : set coef0 in kernel function (default 0)
-c cost : set the parameter C of C-SVC, epsilon-SVR, and nu-SVR (default 1)
-n nu : set the parameter nu of nu-SVC, one-class SVM, and nu-SVR (default 0.5)
-p epsilon : set the epsilon in loss function of epsilon-SVR (default 0.1)
-m cachesize : set cache memory size in MB (default 100)
-e epsilon : set tolerance of termination criterion (default 0.001)
-h shrinking : whether to use the shrinking heuristics, 0 or 1 (default 1)
-b probability_estimates : whether to train a SVC or SVR model for probability estimates, 0 or 1 (default 0)
-wi weight : set the parameter C of class i to weight*C, for C-SVC (default 1)
-v n: n-fold cross validation mode
-q : quiet mode (no outputs)
在网上百度了很多例子,仿照别人的写,可仍然是报错
后来,看了svm_train的源代码,
[python] view
plaincopy
prob, param = None, None
if isinstance(arg1, (list, tuple)):
assert isinstance(arg2, (list, tuple))
y, x, options = arg1, arg2, arg3
param = svm_parameter(options)
prob = svm_problem(y, x, isKernel=(param.kernel_type == PRECOMPUTED))
elif isinstance(arg1, svm_problem):
prob = arg1
if isinstance(arg2, svm_parameter):
param = arg2
else:
param = svm_parameter(arg2)
if prob == None or param == None:
raise TypeError("Wrong types for the arguments")</span>
发现之所以错,是因为每次都是跳到最后一个if而不是我想要的第一个。由于对python还不是很熟,谷歌之后才知道isinstance方法第一个参数为对象,第二个为类型名或类型名的一个列表。其返回值为布尔型。若对象的类型与参数二的类型相同则返回True。若参数二为一个元组,则若对象类型与元组中类型名之一相同即返回True。即第一个参数要是list或者tuple类型才可以。
代码修改后,便输出了我想要的结果
为这个问题弄了一天,不知道该高兴还是伤心
PS:另外,通过查看parse_options函数源代码发现,第三个参数可以写成list形式,也可以写成str形式
Train an SVM model from data (y, x) or an svm_problem prob using
'options' or an svm_parameter param.
If '-v' is specified in 'options' (i.e., cross validation)
either accuracy (ACC) or mean-squared error (MSE) is returned.
options:
-s svm_type : set type of SVM (default 0)
0 -- C-SVC(multi-class classification)
1 -- nu-SVC(multi-class classification)
2 -- one-class SVM
3 -- epsilon-SVR(regression)
4 -- nu-SVR(regression)
-t kernel_type : set type of kernel function (default 2)
0 -- linear: u'*v
1 -- polynomial: (gamma*u'*v + coef0)^degree
2 -- radial basis function: exp(-gamma*|u-v|^2)
3 -- sigmoid: tanh(gamma*u'*v + coef0)
4 -- precomputed kernel (kernel values in training_set_file)
-d degree : set degree in kernel function (default 3)
-g gamma : set gamma in kernel function (default 1/num_features)
-r coef0 : set coef0 in kernel function (default 0)
-c cost : set the parameter C of C-SVC, epsilon-SVR, and nu-SVR (default 1)
-n nu : set the parameter nu of nu-SVC, one-class SVM, and nu-SVR (default 0.5)
-p epsilon : set the epsilon in loss function of epsilon-SVR (default 0.1)
-m cachesize : set cache memory size in MB (default 100)
-e epsilon : set tolerance of termination criterion (default 0.001)
-h shrinking : whether to use the shrinking heuristics, 0 or 1 (default 1)
-b probability_estimates : whether to train a SVC or SVR model for probability estimates, 0 or 1 (default 0)
-wi weight : set the parameter C of class i to weight*C, for C-SVC (default 1)
-v n: n-fold cross validation mode
-q : quiet mode (no outputs)
在网上百度了很多例子,仿照别人的写,可仍然是报错
后来,看了svm_train的源代码,
[python] view
plaincopy
prob, param = None, None
if isinstance(arg1, (list, tuple)):
assert isinstance(arg2, (list, tuple))
y, x, options = arg1, arg2, arg3
param = svm_parameter(options)
prob = svm_problem(y, x, isKernel=(param.kernel_type == PRECOMPUTED))
elif isinstance(arg1, svm_problem):
prob = arg1
if isinstance(arg2, svm_parameter):
param = arg2
else:
param = svm_parameter(arg2)
if prob == None or param == None:
raise TypeError("Wrong types for the arguments")</span>
发现之所以错,是因为每次都是跳到最后一个if而不是我想要的第一个。由于对python还不是很熟,谷歌之后才知道isinstance方法第一个参数为对象,第二个为类型名或类型名的一个列表。其返回值为布尔型。若对象的类型与参数二的类型相同则返回True。若参数二为一个元组,则若对象类型与元组中类型名之一相同即返回True。即第一个参数要是list或者tuple类型才可以。
代码修改后,便输出了我想要的结果
为这个问题弄了一天,不知道该高兴还是伤心
PS:另外,通过查看parse_options函数源代码发现,第三个参数可以写成list形式,也可以写成str形式
相关文章推荐
- 关于svm_train的参数问题
- 关于CString剖析,“strcmp”: 不能将参数1从“CString”转换为“const char *”问题
- 关于CString剖析,“strcmp”: 不能将参数1从“CString”转换为“const char *”问题
- 关于struts2标签中 #parameters.XXX获取参数的问题
- 关于train_val.prototxt中参数详解
- 关于tomcat7 配置 maxPostSize="0" 时,后台无法接收前台参数的问题
- 关于连接字符串中IMEX参数的一个问题
- 关于存储过程的参数和ASP优化问题
- 关于把二维数组做参数的问题
- 关于C#函数对象参数传递的问题
- 回答Keyword1983朋友关于RTEMS网络 rtems_xxxx_attach 参数问题
- 关于linux字符驱动编写接口函数的参数传递问题
- 关于rs.Open sql,conn语句的参数问题
- 关于oracle存储过程调用问题。execute method error : DataAccessException,或者时参数个数或类型错误,等等
- 关于 HTTP GET/POST 请求参数长度最大值的问题
- libsvm代码阅读:关于svm_train函数分析
- 关于后台接收参数为null的问题之ajax--contentType
- Extjs搜索 重置搜索框 关于页码问题 向后台传递排序参数 向后台传递参数
- 关于请求方式为GET的form表单,action属性后不能带参数的问题
- 急需解决------关于在两个窗体之间传递参数的问题---------解决了