Python 不使用GEKKO的多元非线性回归

Python 不使用GEKKO的多元非线性回归,python,non-linear-regression,Python,Non Linear Regression,因此,我有三列独立的变量x,y,和z。一个因变量sy。我正试着用一个模型来描述这个。我从这篇文章中复制了代码,但我得到了以下错误: ValueError:没有足够的值来解包(预期为7,得到4) 你能帮我做这个吗 我试图拟合的模型是sy=a+b*x+c*x^2+d*y+e*y^2+f*z+g*z^2。有没有办法得到模型的调整后的R平方值?要修正错误并得到结果,代码的第十行需要修改如下: import numpy as np import pandas as pd #import the exce

因此,我有三列独立的变量
x
y
,和
z
。一个因变量
sy
。我正试着用一个模型来描述这个。我从这篇文章中复制了代码,但我得到了以下错误:

ValueError:没有足够的值来解包(预期为7,得到4)

你能帮我做这个吗


我试图拟合的模型是
sy=a+b*x+c*x^2+d*y+e*y^2+f*z+g*z^2
。有没有办法得到模型的调整后的R平方值?

要修正错误并得到结果,代码的第十行需要修改如下:

import numpy as np
import pandas as pd

#import the excel file
dataset = pd.read_excel('data.xlsx')


#set all the independent variable as 'x', 'y', and 'z' and the dependent variable as 'sy'
x = dataset.iloc[:,0]
y = dataset.iloc[:,1]
z = dataset.iloc[:,2]
sy = dataset.iloc[:,3]

A = np.column_stack([np.ones(len(x)), x, x**2, y, y**2, z, z**2])

#"B" will be "sy" array
B = sy

#Solving Ax = B
a, b, c, d, e, f, g = np.linalg.lstsq(A,B)
#result, _, _, _, _, _ = np.linalg.lstsq(A,B)
#a, b, c, d, e, f, g = result

这成功了!非常感谢你!请您解释一下为什么我需要将
[0]
放在末尾?方法np.linalg.lstsq()返回几个值作为ndarray,模型的解(结果)是第一个元素。
a, b, c, d, e, f, g = np.linalg.lstsq(A,B)[0]