我真的不明白我的(简单)代码有什么问题......
我只想测试多元线性回归(......!)。
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 方式,但我仍然得到无意义的系数(略有不同但仍然很愚蠢)
(它与单变量线性回归一起工作,比如 Y = 2*X + 5,我会得到非常接近真实值的系数和截距)
请您参考如下方法:
谢谢大家!
我有一段时间没有进行线性回归,当然是因为 X 不可逆(在 R 中,它给了我 'nan')。
所以这不是一个聪明的问题......
再次感谢!
