首页 > 解决方案 > 无法解释 matplotlib 绘图

问题描述

我从其中一个培训课程中获得了以下代码。

from sklearn.datasets import make_moons

X, y = make_moons(n_samples=1000, noise=0.1, random_state=0)
plt.plot(X[y==0, 0], X[y==0, 1], 'ob', alpha=0.5)
plt.plot(X[y==1, 0], X[y==1, 1], 'xr', alpha=0.5)
plt.legend(['0', '1'])

我无法理解以下内容。

  1. X,y 将被分配 1000 个数据点?我们将如何区分 X 和 y 之间的值

  2. plt.plot(X[y==0, 0], X[y==0, 1] & plt.plot(X[y==1, 0], X[y==1, 1] 我们是什么在这里试试?我不明白 X[y==0, 0], X[y==0, 1] 和 X[y==1, 0], X[y==1, 1]。

有人可以帮我理解上面的代码吗?

标签: matplotlib

解决方案


很抱歉,这些都是非常基本的问题,在开始学习更高级的内容之前,您可能需要复习一下您的 Python 知识。

  • 查看文档make_moons返回一个元组 (X,y),它被解压缩到变量 X 和 y 中。允许您编写的逻辑相同:

    a,b = 1,2

产生 2 个变量a,分别b等于12

  • X是一个维度矩阵,(1000,2)语法为X[:,0]您提供第一列和X[:,1]第二列。此外,代码仅选择行,例如,y==0y是一个 shape 向量(1000,)y==0返回一个 shape 向量,(1000,)其中每个元素要么是要么True取决于False元素是否等于 0。因此X[y==0, 0]仅返回 0 的第一列X和等于 0 的行。在https://docs.scipy.org/doc/numpy/reference/arrays.indexing.htmly阅读有关数组索引的更多信息

推荐阅读