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       ]