gpt4 book ai didi

python-3.x - 支持向量分类器的决策边界图(距分离超平面的距离)

转载 作者:行者123 更新时间:2023-11-30 09:06:00 25 4
gpt4 key购买 nike

我正在阅读 Aurélien Géron 所著的《使用 Scikit-Learn 和 TensorFlow 进行机器学习实践》一书。下面的代码是用 Python 3 编写的。

在该章节的 GitHub 页面上。支持向量机问题的 5 种解决方案有以下代码用于绘制 SVC 决策边界 ( https://github.com/ageron/handson-ml/blob/master/05_support_vector_machines.ipynb ):

def plot_svc_decision_boundary(svm_clf, xmin, xmax):
w = svm_clf.coef_[0]
b = svm_clf.intercept_[0]

# At the decision boundary, w0*x0 + w1*x1 + b = 0
# => x1 = -w0/w1 * x0 - b/w1
x0 = np.linspace(xmin, xmax, 200)
decision_boundary = -w[0]/w[1] * x0 - b/w[1]

margin = 1/w[1]
gutter_up = decision_boundary + margin
gutter_down = decision_boundary - margin

svs = svm_clf.support_vectors_
plt.scatter(svs[:, 0], svs[:, 1], s=180, facecolors='#FFAAAA')
plt.plot(x0, decision_boundary, "k-", linewidth=2)
plt.plot(x0, gutter_up, "k--", linewidth=2)
plt.plot(x0, gutter_down, "k--", linewidth=2)

我的问题是为什么边距定义为1/w[1]?我相信边距应该是1/sqrt(w[0]^2+w[1]^2)。也就是说,边距是 2/L_2_norm(weight_vector) 的一半,即 1/L_2_norm(weight_vector)。请参阅https://math.stackexchange.com/questions/1305925/why-does-the-svm-margin-is-frac2-mathbfw .

这是代码中的错误吗?

最佳答案

给定:

decision boundary: w0*x0 + w1*x1 + b = 0

gutter_up: w0*x0 + w1*x1 + b = 1, i.e. w0*x0 + w1*(x1 - 1/w1) + b = 0

gutter_down: w0*x0 + w1*x1 + b = -1, i.e. w0*x0 + w1*(x1 + 1/w1) + b = 0

对应于决策边界线中的(x0, x1),(x0, x1 +1/w1)和(x0, x1 -1/w1)是点在 gutter_up/down 线上。

Figure 5-2. Sensitivity to feature scales

关于python-3.x - 支持向量分类器的决策边界图(距分离超平面的距离),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51778970/

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