无法使用numpy.plyfit创建多项式特征进行回归 -- AttributeError: 'numpy.ndarray'对象没有属性'to_numpy
请原谅我的无知,我之前从来没有用过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