为何代码X=boston.data[:, None, 6]能将X缩减为每行1个元素?
拆解代码:如何让每行仅保留1个元素
先从数据集本身说起:
boston = datasets.load_boston()是加载经典的波士顿房价数据集,boston.data是一个二维数组——行对应单个样本(比如一套房子),列对应不同的特征(比如犯罪率、房间数量等,一共13个特征)。
重点看核心的一行X = boston.data[:, None, 6],拆成三部分理解:
- 第一个
::表示保留所有样本行,不丢弃任何一个房子的数据。 None:这是numpy的小技巧,给数组新增一个维度,把原来的「行×特征」二维结构,临时变成「行×1×特征」的三维结构。- 最后的
6:表示只取第7个特征(编程里索引从0开始数,0是第一个特征,6就是第七个)。
这么组合起来,最终得到的X是一个「样本数 × 1」的二维数组——也就是每个样本(每行)里只装了这一个特征值,完美匹配y = boston.target的维度(y是一维数组,每个元素对应一个样本的房价)。
要是直接写X = boston.data[:,6],得到的是一维数组,很多机器学习模型会因为输入维度不符合要求报错,加个None就把它转成了模型能识别的二维结构。
内容的提问来源于stack exchange,提问作者Anita Durg
相关产品推荐
相关产品推荐

