构建SAT与GPA线性回归时Series.reshape报属性错误如何解决
报错原因
AttributeError: 'Series' object has no attribute 'reshape'
出现该报错的核心原因是:data.SAT取出来的是pandas的Series(一维序列)类型,reshape()是Numpy数组专属的方法,Pandas Series本身没有内置该方法。
解决方案
以下两种方案任选其一即可解决问题:
- 方案1:先将Series转为Numpy数组后再调用reshape
可以用.values属性或者更规范的.to_numpy()方法先转成数组,再修改维度:
y = data.GPA # 写法1:兼容所有pandas版本 x = data.SAT.values.reshape(-1, 1) # 写法2:pandas 0.24及以上版本推荐,语义更清晰 x = data.SAT.to_numpy().reshape(-1, 1)
- 方案2:取列时直接生成2D结构的DataFrame
用双重方括号取SAT列,得到的是DataFrame(本身就是二维结构),不需要额外reshape,更简便:
y = data.GPA x = data[['SAT']]
两种方案得到的x都可以直接输入scikit-learn的线性回归模型进行训练,无需额外处理。
内容的提问来源于stack exchange,提问作者Usman Oladapo
相关产品推荐
相关产品推荐

