关于X[y==0, 0]的疑问

来源:3-12 数据加载和简单的数据探索

Echo鑫

2017-12-21

老师,我在看到X[y==0, 0]的时候,有点没理解,y怎么能成为X矩阵中的筛选条件。

X = iris.data[:, :2]和y = iris.target  一个是(150,2)矩阵 ,另一个是0 1 2 组成的一维向量,

单独分出来看的话,这是两个不同的矩阵,没有关联关系,X[y ==0,0],这个y==0的条件又怎么能成为X矩阵中的筛选条件,这个条件按理说是在X中没有匹配值的。

这是不是两个矩阵iris.data和iris.target的关联关系是在内部定义好了的,所以y才能成为X中的筛选条件?

写回答

7回答

liuyubobobo

2017-12-21

首先,X和y确实存在内部的关联的。这个内部关联是逻辑上的关联,不是程序上的关联。X是一个150行4列的矩阵,代表有150个样本,每个样本有4个特征。y是一个有150个元素的向量,其中每一个元素代表对应样本是哪一种鸢尾花。所以X的第i行即X[i]对应的鸢尾花种类为y[i]。这个逻辑是X和y之间的全部关联。


y==0返回的是一个布尔向量。这一点很关键。试试在notebook中输入y==0打印看一下,结果包含有150个布尔值。如果(y==0)[i] 等于True,表示第i个元素的取值为0(第0种鸢尾花);如果(y==0)[i] 等于False,表示第i个元素取值不为0(不是第0种鸢尾花)。


现在我希望找到第0种鸢尾花对应的X的内容。再看一下我们在第10小节最后举得例子。我们可以用布尔数组作为Fanxy Index,在矩阵中去取值。X[y==0,:]相当于是先求出了使y==0的索引都有谁(对应布尔数组中的True),然后用这些索引取出X中相应的行。

16
5
liuyubobobo
回复
与寂寞无关
这个关联是一个定义,没有实现。在机器学习算法层面的数据,不这样组织,是因为在大多数算法中,都要分开使用X和y。课程后续你就会看到:)
2019-09-19
共5条回复

慕勒0317721

2023-07-17

其实就是 target 中150个花的排序和data中的排序是相同的

0
0

刘刘刘刘刘英迪

2020-04-06

非常感谢!也是看了问题才明白,感觉这里的用法真的巧妙!


当然,前提是X和y有对应关系~~~大家加油!:)

0
0

weixin_慕数据1225228

2020-03-12

我看的时候也疑惑了, 还好找到了解答, 非常感谢

0
0

慕粉1754206542

2019-03-02

也解决了我的疑问。最重要的是理解numpy向量可通过布尔值进行索引。thx

0
0

慕姐813587

2018-03-10

明白了。感谢。

0
0

奔跑的小女子

2018-01-06

非常感谢 ,我之前也有这样的疑惑,已解决 

0
0

Python3入门机器学习 经典算法与应用  

Python3+sklearn,兼顾原理、算法底层实现和框架使用。

5839 学习 · 2437 问题

查看课程