绘制线性决策边界

Posted

技术标签:

【中文标题】绘制线性决策边界【英文标题】:Plotting a linear decision boundary 【发布时间】:2016-06-13 03:26:31 【问题描述】:

我有一组数据点 (40 x 2),我推导出了决策边界的公式,最终结果如下:

wk*X + w0 = 0

wk 是一个 1 x 2 向量,X 是来自数据点集的 2 x 1 点;本质上是X = (xi,yi),其中 i = 1,2,...,40。我有 wkw0 的值。

我正在尝试绘制线 wk*X + w0 = 0,但我不知道如何绘制实际线。过去,我通过找到数据点的最小值和最大值并将它们连接在一起来做到这一点,但这绝对不是正确的方法。

【问题讨论】:

【参考方案1】:

wk*X 只是两个向量之间的点积,因此等式变为:

w1*x + w2*y + w0 = 0

...假设一般点(x,y)。如果我们重新排列这个方程并求解y,我们得到:

y = -(w1/w2)*x - (w0/w2)

因此,这定义了斜率为-(w1/w2) 与截距-(w0/w2) 的直线方程。您所要做的就是在一定范围内定义一堆线性间隔的点,取每个点并将其代入上述方程并获得输出。您将在图中绘制所有这些输出点以及实际点本身。您使点之间的空间或分辨率足够小,这样当我们将所有点连接在一起时,我们就可以看到一条线。

要确定这条线的范围或限制,请找出您的数据中的最小和最大 x 值,在这些点之间定义一组线性间隔的点,并使用我们刚才的直线方程绘制您的直线谈到了。

假设您有一个存储在X 中的点矩阵,就像您提到的那样,并且w1w2 在向量中定义wkw0 分别定义,这样的事情可能会起作用:

x = linspace(min(X(:,1)), max(X(:,1)));
y = -(wk(1)/wk(2))*x - (w0/wk(2));
plot(X(:,1), X(:,2), 'b.', x, y);

linspace 确定从头到尾的线性间隔点数组,默认生成 100 个点。然后,我们在给定这些点的情况下创建线的输出值,并将各个点绘制为蓝色,并将线本身绘制在这些点的顶部。

【讨论】:

谢谢你的直截了当! 我是新来的,我该怎么做? 哦,开玩笑,我想通了

以上是关于绘制线性决策边界的主要内容,如果未能解决你的问题,请参考以下文章

如何使用从 cvxopt.solvers 获得的参数绘制非线性决策边界?

用于非线性决策边界的SVM图

绘制scikit-learn(sklearn)SVM决策边界/表面

使用 libsvm 绘制决策边界

绘制文本分类的决策边界

机器学习3