我有一组数据点(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
,但我不知道如何绘制实际线。在过去,我通过查找数据点的最小值和最大值并将它们连接在一起来完成此操作,但这绝对不是正确的方法。
答案 0 :(得分:3)
wk*X
只是两个向量之间的点积,因此等式变为:
w1*x + w2*y + w0 = 0
...假设一般点(x,y)
。如果我们重新排列这个等式并求解y
,我们得到:
y = -(w1/w2)*x - (w0/w2)
因此,这定义了斜率为-(w1/w2)
且截距为-(w0/w2)
的线的等式。您所要做的就是在一定范围内定义一串线性间隔点,取每个点并将其替换为上述等式并获得输出。您可以在图中绘制所有这些输出点以及实际点本身。您可以使点之间的空间或分辨率足够小,以便在将所有点连接在一起时可视化一条线。
要确定此线的范围,请确定数据中最小和最大的x
值,在这些值之间定义一组线性间隔点,并使用线的等式绘制线条我们刚才谈到过。
这样的事情可以假设您已经提到了X
中存储的点数矩阵,并且在w1
向量中定义了w2
和wk
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
确定从开始到结束的线性间隔点阵列,默认情况下会生成100个点。然后我们创建给定这些点的线的输出值,并绘制蓝色的各个点以及这些点之上的线本身。