2014-10-08 89 views
6

我使用scikit-learn库中的LinearSVC,我想知道是否可能以某种方式拉出训练后预测的模型使用的向量。尝试谷歌一段时间,但没有任何运气。有谁知道?scikit-learn,linearsvc - 如何从训练的SVM获取支持向量?

+0

我是指支持向量,''LinearSVC'实际上并不使用这些向量。 – 2014-10-09 09:20:28

+0

LinearSVC没有使用支持向量,但这个概念依然存在,并且可能仍然有用。 – 2018-01-11 23:07:19

回答

4

不幸的是,似乎没有办法做到这一点。 LinearSVC调用liblinear(see relevant code),但不检索矢量,只检索系数和截距。

一个替代方案将是使用SVC与 '线性' 的内核(LIBSVM代替基于liblinear),但也polydbfsigmoid内核支持此选项:

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_ 

输出:

[[ 0. 0.] 
[ 1. 1.]] 

liblinear可以更好地适应大量的样本,但除此之外大部分是等价的。

+0

谢谢,Elyase。如果我将使用scikit-learn中可用的其他类型的SVC,是否有可能以某种方式返回向量(或者如何使用polynomal内核正确调用它们)? – 2014-10-08 19:54:35

+0

@MaximHaytovich,是的,我已经更新了我的答案。 – elyase 2014-10-08 20:57:05

2

我不知道是否有帮助,但我正在寻找类似的东西,结论是,如果:

clf = svm.LinearSVC() 

那么这样的:

clf.decision_function(x) 

等于这样的:

clf.cof_.dot(x) + clf.intercept_ 
相关问题