使用python中的scikit包获取SVM中的负alpha值

使用python中的scikit包获取SVM中的负alpha值,python,machine-learning,svm,scikit-learn,convex-optimization,Python,Machine Learning,Svm,Scikit Learn,Convex Optimization,我正在用python中的scikit包实现SVM。我在解释中的“alpha I”值时遇到困难 样本输出 Dual_coef_ = [[ 0.04825885 0.56891844 -0.61717729]] Support Vectors = [[-1.02126202 0.2408932 ] [-0.46722079 -0.53064123] [ 0.95144703 0.57998206]] Dual_coef_u给出了“alpha i*y i”值。我们可以确认“αi*yi”的

我正在用python中的scikit包实现SVM。我在解释中的“alpha I”值时遇到困难

样本输出

Dual_coef_ = [[ 0.04825885  0.56891844 -0.61717729]]
Support Vectors = 
[[-1.02126202  0.2408932 ]
 [-0.46722079 -0.53064123]
 [ 0.95144703  0.57998206]]
Dual_coef_u给出了“alpha i*y i”值。我们可以确认“αi*yi”的总和=0(0.04825885+0.56891844-0.61717729=0)

我想找出“alpha I”值。这应该很容易,因为我们有“alpha i*yi”值。但我的阿尔法指数都是负值。 例如,点(0.95144703,0.57998206)位于线()上方。所以y=+1。如果y=+1,则α将为-0.61717729。 类似地,点(-1.0216202,0.2408932)位于线下方。所以y=-1,因此alpha=-0.04825885

为什么α值为负值? 我的解释错了吗?任何帮助都将不胜感激


供参考, 对于支持向量分类器(SVC)

给定两类训练向量i=1,…,n,以及SVC解决以下原始问题的向量:

它的双重属性是


其中“e”是所有1的向量,C>0是上界,Q是n乘n的半正定矩阵,是核。这里,函数将训练向量映射到一个更高(可能是无限)维空间。

我认为你只是错误地解释了y。我猜这条线上面是y=-1,下面是y=+1

你为什么认为是相反的呢

对于两类问题,我认为是“第一类”。i、 e.数字最小的一个为+1,另一个为-1。
这是一个LibSVM约定。

这可能是一个LibSVM约定,但它不符合scikit学习约定。我们总是按照类标签的Python/NumPy顺序来排序类。我也不完全确定;)我在某处做了一些标志交换。。。lostboy_19:您使用的是哪个版本的sklearn?我可以在最近的
master
@AndreasMueller上复制这个版本,谢谢您的回复。我使用的是0.11版本。我几个月前下载的。我真的怀疑y=-1是否在直线以上。我认为根据数学推导,w.x+b=+1位于直线上方,w.x+b=-1位于直线下方。我在图像平面的意义上使用了“上方”。该图像没有说明w指向哪个方向。我是建议它往下点。
Dual_coef_ = [[ 0.04825885  0.56891844 -0.61717729]]
Support Vectors = 
[[-1.02126202  0.2408932 ]
 [-0.46722079 -0.53064123]
 [ 0.95144703  0.57998206]]