gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-30 01:23:29 26 4
gpt4 key购买 nike

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

import numpy as np
import pylab as pl
from sklearn import svm

# we create 40 separable points
np.random.seed(0)
X = np.r_[np.random.randn(20, 2) - [2, 2], np.random.randn(20, 2) + [2, 2]]
Y = [0] * 20 + [1] * 20

# fit the model
clf = svm.SVC(kernel='linear')
clf.fit(X, Y)
print clf.support_vectors_
#support_vectors_ prints the support vectors
print clf.dual_coef_
#dual_coef_ gives us the "alpha i, y i" value for all support vectors

示例输出

Dual_coef_ = [[ 0.04825885  0.56891844 -0.61717729]]
Support Vectors =
[[-1.02126202 0.2408932 ]
[-0.46722079 -0.53064123]
[ 0.95144703 0.57998206]]

Dual_coef_ 为我们提供了“alpha i * y i”值。我们可以确认“alpha i * y i”的总和 = 0 (0.04825885 + 0.56891844 - 0.61717729 = 0)

我想找出“alpha i”值。这应该很容易,因为我们有“alpha i * y i”值。但我得到所有的“alpha i's”都是负面的。例如,点 (0.95144703, 0.57998206) 位于线 ( see link ) 上方。所以 y = +1。如果 y = +1,alpha 将为 -0.61717729。同样,点 (-1.02126202, 0.2408932) 位于线下方。所以 y = -1,因此 alpha = -0.04825885。

为什么我得到的 alpha 值是负数?我的解释错了吗?任何帮助将不胜感激。


供您引用,

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

给定两个类中的训练向量 i=1,..., n 和一个向量 使得 ,SVC 解决了以下原始问题:

enter image description here

它的对偶是

enter image description here

其中 'e' 是全 1 的向量,C > 0 是上界,Q 是 n x n 正半定矩阵,enter image description hereenter image description here是内核。这里训练向量被函数 映射到更高(可能是无限)维空间。

最佳答案

我认为您只是错误地解释了 y。我猜在线上方是 y=-1,下方是 y=+1。

为什么你认为是相反的?

对于二等问题,我认为是“一等”。即数字最小的是+1,另一个是-1。这是 LibSVM 约定。

关于python - 在 python 中使用 scikit 包在 SVM 中获取负 alpha 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12746976/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com