绘制线性决策边界

Plotting a linear decision boundary

我有一组数据点 (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 但我不知道如何绘制实际线。过去,我通过找到数据点的最小值和最大值并将它们连接在一起来完成此操作,但这绝对不是正确的方法。

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

w1*x + w2*y + w0 = 0

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

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

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

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

假设您有一个存储在 X 中的点矩阵,并且 w1w2 在向量 [=22] 中定义,这样的事情可能会起作用=]和w0分别定义:

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确定一个线性spaced的点数组,从头到尾,默认生成100个点。然后我们根据这些点创建线的输出值,我们用蓝色绘制各个点以及在这些点之上的线本身。