如何从svm_model(在Python中)获取支持向量和rho值?

时间:2011-03-01 19:37:58

标签: python machine-learning libsvm

使用libsvm从svm_train获取svm_model后,如何从模型中获取rho和SV?我知道当我得到模型时会打印出这些值,但我不知道如何获得SV。 例如:

svm_model = svmutil.svm_train(Labels,X, svm_options)

现在,如何从svm_model获取rho值和SV?

3 个答案:

答案 0 :(得分:4)

如果您使用的是svmutil软件包,那么您可以获得支持向量,系数和rho,如下所示,

m = svmutil.svm_train( y, xs, "-s 3 -t 2" ) # EPSILON_SVR and RBF kernel
rho = m.rho[0] 
svs = m.get_SV() # Dictionary with indices 1, 2 corresponding to i-th dim on support vector
sv_coeffs = m.get_sv_coef()

答案 1 :(得分:1)

差不多一个月之后,我发现无法从如此生成的svm_model中获取rho或SV。如果有人想找到一个,请使用scikit-learn,它会给你支持向量,双截距和rho值,没有任何麻烦。此外,它比libsvm的python实现更快,并支持numpy数组和矩阵。

答案 2 :(得分:1)

如果您运行svm_train.exe安装本身附带的可执行文件libSVM,您会发现它生成模型文件作为输出XXX.model。如果使用编辑器检查此模型,可以在那里找到rho值和支持向量列表。

在C ++ / C代码中,不支持从对象中提取此信息。