2

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

wk*X + w0 = 0

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

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

4

1 回答 1

4

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 个点。然后,我们在给定这些点的情况下创建线的输出值,并将各个点绘制为蓝色,并将线本身绘制在这些点的顶部。

于 2016-02-29T22:11:12.927 回答