我正在学习线性回归,特别是如何使用带有给出的公式的MLE来导出参数
但是,我想问一下,当X为多维时,此公式是否有效,或者当X
只是N
×1
向量时,它是否有效。因为当我使用sklearn.linear_models.LinearRegresion
实现此公式时,我得到了完全不同的答案。例如,我有以下代码,输出不同的值:
from sklearn import datasets
boston_dataset = datasets.load_boston()
features = ['TAX','LSTAT']
X = df[features]
Y = boston_dataset.target
model = LinearRegression()
model.fit(X)
print(f"Gradient: {model.coef_}")
print(f"y-intercept: {model.intercept_}")
输出
Gradient: [-0.0052125 -0.88312682]
y-intercept: 35.83500136724426
但是:
Phi = np.hstack((np.ones((len(X),1)),X))
theta = np.dot(np.dot(np.linalg.inv(np.dot(Phi.T,Phi)),Phi.T),np.expand_dims(boston_dataset.target,1))
theta
输出以下内容:
array([[ 3.58350014e+01],[-5.21249838e-03],[-8.83126823e-01]])
如您所见,对于梯度和y截距,我得到的答案完全不同。有人可以帮我实现我的问题,还是可以给我看一篇实现此公式的文章,以使用MLE(而不是sklearn
)来找到参数