使用python中的scikit包获取SVM中的负alpha值
我正在用python中的scikit包实现SVM。我在解释中的“alpha I”值时遇到困难 样本输出使用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”的
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]]