Python Pandas ValueError:值太多,无法解压缩np.polyfit
我正试图对我掌握的一些数据进行多项式回归。我已经成功地打了电话Python Pandas ValueError:值太多,无法解压缩np.polyfit,python,csv,pandas,Python,Csv,Pandas,我正试图对我掌握的一些数据进行多项式回归。我已经成功地打了电话 m,b=np.polyfit(x.values.flatte(),y.values.flatte(),1) 但是,当我将度增加到高于1的任何值时,我会得到以下错误: np.polyfit(x.values.flatten(), y.values.flatten(), 2) ValueError: too many values to unpack 我阅读的数据如下: x = pandas.read_csv('D3.csv', us
m,b=np.polyfit(x.values.flatte(),y.values.flatte(),1)
但是,当我将度增加到高于1的任何值时,我会得到以下错误:
np.polyfit(x.values.flatten(), y.values.flatten(), 2)
ValueError: too many values to unpack
我阅读的数据如下:
x = pandas.read_csv('D3.csv', usecols = [0])
y = pandas.read_csv('D3.csv', usecols = [3])
知道为什么会发生这种情况吗?在讨论您的问题之前,
np。polyfit
只返回两个参数:
np.polyfit
时出现:full=False和cov=True
回到您的问题:因为您没有设置cov=True
(默认情况下,full=False
),所以函数只返回一个数组。将度设置为1时,返回的数组有两个元素(ax+c
中的[a,c]
),python会在代码中自动分配m=a
和b=c
。当达到更高的阶数时,返回的数组有两个以上的元素,python会尝试将它们分配到分配之前放置的所有变量中,但由于有两个以上的元素,因此需要两个以上的变量。
也就是说,在Python 2中考虑这个小的运行:
>>> a,c = [1,2]
>>> a
1
>>> c
2
>>> a,c = [1,2,3]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: too many values to unpack
假设代码位于文件stackoverflow.py
中。电话样本:
Chip chip@ 09:15:48@ ~: python stackoverflow.py 1
[ 8. -12.]
Chip chip@ 09:15:51@ ~: python stackoverflow.py 2
[ 1.00000000e+00 -1.45528372e-14 3.11727844e-14]
Chip chip@ 09:15:56@ ~: python stackoverflow.py 3
[ -3.16472437e-16 1.00000000e+00 -2.82243562e-14 4.43123853e-14]
换句话说,所有系数都被压缩到一个数组中并返回。如果我们按如下方式进行测试:
import numpy as np
x = [1,2,3,4,5,6,7,8,9,10]
y = [2,4,5,7,8,9,8,7,2,1]
pf = np.polyfit(x,y,1)
print (pf)
pf = np.polyfit(x,y,2)
print (pf)
pf = np.polyfit(x,y,3)
print (pf)
。。。我们得到:
[-0.05454545 5.6 ]
[-0.35984848 3.90378788 -2.31666667]
[-0.02466977 0.0472028 2.02641803 -0.2 ]
。。。因此,在第一种情况下,只有两件物品需要拆包,但在其他情况下,需要拆包的物品更多
[-0.05454545 5.6 ]
[-0.35984848 3.90378788 -2.31666667]
[-0.02466977 0.0472028 2.02641803 -0.2 ]