【问题标题】:Multivariate Nonlinear Regression without using GEKKO不使用 GEKKO 的多元非线性回归
【发布时间】:2020-06-22 01:44:35
【问题描述】:
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

所以,我有三列独立变量xyz。一个因变量sy。我正在尝试为此建立一个模型。我从这篇文章中复制了代码,但出现以下错误:

ValueError: not enough values to unpack (expected 7, got 4)

你能帮我解决这个问题吗?

我要拟合的模型是sy = a + b*x + c*x^2 + d*y + e*y^2 + f*z + g*z^2。有什么方法可以得到模型的调整后的 R-Squared 值?

【问题讨论】:

    标签: python non-linear-regression


    【解决方案1】:

    要修复错误并获得结果,您的代码的第 10 行需要修改如下:

    a, b, c, d, e, f, g = np.linalg.lstsq(A,B)[0]
    

    【讨论】:

    • 这成功了!非常感谢!你能解释一下为什么我需要把[0]放在最后吗?
    • 方法np.linalg.lstsq()返回几个值作为ndarray,模型的解(结果)是第一个元素。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-15
    • 1970-01-01
    • 1970-01-01
    • 2019-01-30
    • 1970-01-01
    • 2016-12-19
    • 2020-10-09
    相关资源
    最近更新 更多