首页 > 解决方案 > 多元回归 Python

问题描述

我真的不明白我的(简单)代码有什么问题......

我只想测试一个多元线性回归(....!)。

 import pandas as pd
 import numpy as np
 import scipy.stats as st
 import sklearn
 n = 1000

 X1 = linspace(2, 8.5, n)
 X2 = linspace(-4, 2.9, n)
 X3 = linspace(-1, 16, n)

 X = np.transpose( [X1, X2, X3] )

 Y = 2*X1 + 3.2*X2 -1.2*X3  +  4  + st.norm.rvs(size = n, loc = 0, scale = 0.6)

 X = pd.DataFrame( X , columns = ["X1", "X2", "X3"])
 Y = pd.DataFrame(Y, columns = ["Y"])

 #Create linear regression object:
 my_reg = sklearn.linear_model.LinearRegression()

 #Train:
 my_reg.fit(X, Y)

 print('Coefficients: \n', my_reg.coef_)
 print('Constant: \n', my_reg.intercept_)

我得到了一些愚蠢的结果,比如系数是 [ 0.25127347 0.26673645 0.65717676] ...

我也尝试过 OLS 方式,但我仍然得到无意义的 coef(略有不同但仍然很愚蠢)

(它适用于单变量线性回归,例如 Y = 2*X + 5,我会得到 coef 和截距非常接近真实的)

标签: pythonregression

解决方案


谢谢大家!

我有一段时间没有执行线性回归,当然这是因为 X 不可逆(在 R 中,它给了我“nan”)。

所以这不是一个聪明的问题......

再次感谢!


推荐阅读