Octave语法中的绘图

9
pos = find(y==1);
neg = find(y==0);

plot(X(pos, 1), X(pos, 2), "k+", "LineWidth", 2, 'MarkerSize', 7);
plot(X(neg, 1), X(neg, 2), "ko", "MarkerFaceColor", 'y', 'MarkerSize', 7);

我了解find函数可以给我们返回y==1和y==0的数据索引。但我不确定下面函数中的X(pos,1)和X(pos,2)是做什么的。能有人解释一下这个plot函数是怎么工作的吗?

3个回答

10

posneg是向量,其索引满足条件y==1(分别为y == 0) 。y似乎是长度为n的向量,X似乎是一个nx2矩阵。X(pos,1)表示在满足条件y==1的行中,第一列的所有元素。

y = [ 2 3 1 4 0 1 2 6 0 4]
X = [55 19;54 96;19 85;74 81;94 34;82 80;79 92;57 36;70 81;69 4]
X(find(y==1), 1)

提供

ans =
   19
   82

请注意这里不需要使用find函数,

X(y==1, 1)

足够了


Andy,这里的“k+”和“ko”的含义是什么?我在哪里可以找到相关文档? - Ashutosh Chamoli
1
这是有关编程的内容,涉及颜色和标记样式设置。在您的情况下,分别为黑色和十字架圆圈。请参考链接:https://octave.org/doc/v4.2.0/Advanced-Plotting.html#Advanced-Plotting - Andy
谢谢提供文档,但我仍然找不到“k+”和“ko”的提及。 - Ashutosh Chamoli
@AshutoshChamoli 这里有一个包含所有线型、颜色和标记样式的列表 https://octave.org/doc/v4.2.0/Two_002dDimensional-Plots.html#Two_002dDimensional-Plots - Andy
@Andy 在 plot(X(neg, 1), X(neg, 2), "ko", "MarkerFaceColor", 'y', 'MarkerSize', 7); 这行代码中,'y' 是什么意思呢?因为它不是一个固定的值。 - Aminur Rahman Ashik
@AminurRahmanAshik请查看上面的链接。 'y'是“yellow”的简短颜色代码。 - Andy

0

这里X是一个nx2的矩阵,pos是一个m向量,其中包含矩阵X中y==1的索引。

由于X(pos,1)是一个m x 1的矩阵,其值为矩阵X的第一行中x==1的值,X(pos,2)同理。

使用plot(X(pos, 1), X(pos, 2), "k+", "LineWidth", 2, 'MarkerSize', 7);绘制图形,将得到一个带有'+'点的图形,其x坐标为X(pos,1) [矩阵X中x==1的第一行的值],y坐标为X(pos,2) [矩阵X中x==1的第二行的值]。

同样地,使用plot(X(neg, 1), X(neg, 2), "ko", "MarkerFaceColor", 'y', 'MarkerSize', 7);将得到一个带有黄色点的图形,其x坐标为X(neg,1) [矩阵X中x==0的第一行的值],y坐标为X(neg,2) [矩阵X中x==0的第二行的值]。

您也可以直接使用y==1代替pos


0

代码:

pos = find(y == 1); neg = find(y == 0);
% Plot Examples
plot(X(pos, 1), X(pos, 2), 'k+','LineWidth', 2,'MarkerSize', 7);
plot(X(neg, 1), X(neg, 2), 'ko', 'MarkerFaceColor', 'y', 'MarkerSize', 7);

答案:简单来说,X(pos,1)存储所有y == 1时X的第一列的值,而X(pos,2)则存储所有y == 1时X的第二列的值。类似地,X(neg,1),X(neg,2)将存储X的第一、第二列的值,其中y == 0。现在我在此处包含一些输出以更好地理解。这是我的数据集。

34.62365962451697,78.0246928153624,0

61.10666453684766,96.51142588489624,1

30.28671076822607,43.89499752400101,0

35.84740876993872,72.90219802708364,0

60.18259938620976,86.30855209546826,1

79.0327360507101,75.3443764369103,1

Changing in code can see with yellow colored lines.

output

查看X(pos,1)“y == 1时X的第一列”,X(pos,2)“y == 1时X的第二列”,X(neg,1)“y == 0时X的第一列”和X(neg,2)“y == 0时X的第二列”

您可以将X(pos,2)绘制在X(pos,1)上,同样地,将X(neg,2)绘制在X(neg,1)上。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接