scikit-learn,linearsvc - 如何从训练有素的SVM中获取支持向量?

Mak*_*ich 10 python machine-learning scikit-learn

我正在使用来自scikit-learn库的LinearSVC,我想知道是否有可能以某种方式拉出我的模型在训练后使用的向量来进行预测.试图谷歌它一段时间,但没有任何运气.有谁知道?

ely*_*ase 6

不幸的是,似乎没有办法做到这一点.LinearSVC调用liblinear(参见相关代码),但不检索向量,只检索系数和截距.

一个替代方案是使用SVC与"线性"的内核(libsvm的,而不是基于liblinear),而且poly,dbfsigmoid内核支持此选项:

from sklearn import svm

X = [[0, 0], [1, 1]]
y = [0, 1]

clf = svm.SVC(kernel='linear')
clf.fit(X, y)
print clf.support_vectors_
Run Code Online (Sandbox Code Playgroud)

输出:

[[ 0.  0.]
 [ 1.  1.]]
Run Code Online (Sandbox Code Playgroud)

liblinear可以更好地扩展到大量样本,但是大多数都是等效的.


小智 6

我不确定是否有帮助,但是我在寻找类似的东西,结论是:

clf = svm.LinearSVC()
Run Code Online (Sandbox Code Playgroud)

然后这样:

clf.decision_function(x)
Run Code Online (Sandbox Code Playgroud)

等于这个:

clf.coef_.dot(x) + clf.intercept_
Run Code Online (Sandbox Code Playgroud)