Octave代码用于绘制标记数据

问题描述 投票:0回答:2

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

我的问题是:Octave / Matlab代码如何绘制如下

如果我有一组2D特征点

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

并且相应的标签集是

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

如图所示,以2D方式绘制这些数据的代码是什么?

我想使(x_i1,x_i2)对应于1(或-1,无论如何)。

非常感谢你 :)

matlab plot octave svm
2个回答
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


0
投票

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

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])

结果:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.