使用numpy.polyfit构建回归多项式特征报错:numpy.ndarray无to_numpy属性
解决numpy多项式回归中的AttributeError问题
问题根源
报错的核心原因是X已经是numpy.ndarray类型,而to_numpy()是pandas对象(DataFrame/Series)专属的方法,numpy数组本身没有这个属性,因此调用时触发AttributeError。
修正后的代码
import numpy as np # 社区通用别名,统一写法更规范 # X已是numpy数组,直接调用flatten()扁平化即可 X_flat = X.flatten() # 一阶多项式拟合 f1 = np.polyfit(X_flat, Y, 1) p1 = np.poly1d(f1) # 三阶多项式拟合 f3 = np.polyfit(X_flat, Y, 3) p3 = np.poly1d(f3) # 五阶多项式拟合 f5 = np.polyfit(X_flat, Y, 5) p5 = np.poly1d(f5)
额外提示
- 导入numpy时优先用
import numpy as np,这是行业通用写法,避免代码中混用numpy和np。 - 若不确定变量类型,可先执行
print(type(X))确认,提前规避这类方法调用错误。 - 只有当
X是pandas的Series/DataFrame时,才需要用X.to_numpy().flatten()转换为numpy数组并扁平化。
内容的提问来源于stack exchange,提问作者Englishman Bob
相关产品推荐
相关产品推荐

