Я изучаю линейную регрессию, в частности, как получить параметры, используя 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
)