如何从svm_model获取支持向量和rho值(在Python中)?
我用libsvm训练得到了svm_model,接下来我想知道怎么从这个模型中获取rho值和支持向量(SVs)。我知道这些值在模型输出时会显示出来,但我不知道怎么提取支持向量。
例如:
svm_model = svmutil.svm_train(Labels,X, svm_options)
那么,如何从svm_model中获取rho值和支持向量呢?
3 个回答
1
如果你运行随 libSVM
安装包一起提供的可执行文件 svm_train.exe
,你会发现它会生成一个模型文件,名字是 XXX.model
。如果你用编辑器打开这个模型文件,你会看到里面有一些 rho 值和支持向量的列表。
看起来在 C++/C 代码中,并没有办法直接从这个对象中提取这些信息。
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
经过将近一个月的尝试,我发现从生成的svm_model中根本无法获取rho值或SVs(支持向量)。如果有人想找这些东西,可以使用scikit-learn这个库,它可以轻松提供支持向量、对偶截距和rho值。而且,它的速度比libsvm在Python中的实现要快,并且支持numpy数组和矩阵。