用于绘制标记数据的八度代码

Octave code to plot labeled data

大家下午好。我正在学习 SVM 并尝试在 openclassroom.stanford.edu 完成练习。

我的问题是:绘制的Octave/Matlab代码是什么

如果我有一组2D特征点

{(x_11, x_12), (x_21, x_22), ..., (x_i1, x_i2 )},

对应的labels集合为

{1, -1, ..., -1 },

以二维方式绘制那些数据的代码是什么?

我想让 (x_i1, x_i2) 对应于 1(或 -1,随便什么)。

非常感谢:)

假设您有一个 x 坐标 X 和 y 坐标 Y 的向量,以及一个由 1 和 -1 组成的指示向量 k,您可以这样做

plot(X(k>0),Y(k>0),'b',X(k<0),Y(k<0),'g')

使用逻辑索引分别挑选出带有 k=1k=-1 的元素,或者使用 scatter 并使用 k 向量为点着色。我将 colormap 设置为具有蓝色 (k=-1) 和绿色 (k=1) 点。

colormap([0 0 1;0 1 0])
scatter(X,Y,[],k,'filled')

使用 plot:(公平地说,您也可以将标记更改为实心点)

scatter

这是我的解决方案,有效...

X = [2 2;3 4;0.5 4;3 6;5 7;7 8;6 8]
y = [0;0;0;0;1;1;1]
plot(X(y>0,1), X(y>0,2), 'rs','MarkerFaceColor', 'r', 'MarkerSize', 27, X(y==0,1), X(y==0,2),'go', 'MarkerFaceColor', 'g', 'MarkerSize', 27)
axis([0 10 0 10])

结果: