无法使用numpy.plyfit创建多项式特征进行回归 -- AttributeError: 'numpy.ndarray'对象没有属性'to_numpy

0 投票
2 回答
35 浏览
提问于 2025-04-12 14:39

请原谅我的无知,我之前从来没有用过numpy做多项式回归。

我想用“CPU_frequency”这个变量来创建多项式特征,尝试使用三种不同的多项式次数。

import numpy

X = X.to_numpy().flatten()
f1 = np.polyfit(X, Y, 1)
p1 = np.poly1d(f1)

f3 = np.polyfit(X, Y, 3)
p3 = np.poly1d(f3)

f5 = np.polyfit(X, Y, 5)
p5 = np.poly1d(f5)

结果是

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
Cell In[74], line 3
      1 import numpy
----> 3 X = X.to_numpy().flatten()
      4 f1 = np.polyfit(X, Y, 1)
      5 p1 = np.poly1d(f1)

AttributeError: 'numpy.ndarray' object has no attribute 'to_numpy'

我试着把X.改成X._,但没有成功。我还提醒了jupyter它在用numpy,通过调用import。

希望能得到一些帮助。

2 个回答

0

不要给上面@wayne的回答点赞:

在出错的那行之前,你有没有运行过print(type(X))来查看X的类型?你遇到的错误是AttributeError: 'numpy.ndarray'对象没有'to_numpy'这个属性,这说明X看起来已经是一个numpy对象了。而且,我觉得'to_numpy'这个方法不是来自numpy的。Pandas和Polars都有这个方法。所以我们现在遇到的问题就卡在这里,如果没有更多的代码信息,我们就很难提供帮助。

解决方案

重新加载数据集。

df = pd.read_csv(file_name, header=0)

[str(i) for i in ([["CPU_frequency"]])]

上面的代码可以解决问题。

1

如果你需要把数组变得平坦,可以直接在 numpy.ndarray 对象上使用 flatten() 方法。

X = X.flatten()

文档链接:https://numpy.org/doc/stable/reference/generated/numpy.ndarray.flatten.html

撰写回答