Что такое coef_ от sklearn LinearRegression? и как интерпретировать формулу из нее - PullRequest
2 голосов
/ 13 февраля 2020

Когда я использую LinearRegression в sklearn, я буду делать

m = 100
X = 6*np.random.rand(m,1)-3
y = 0.5*X**2 + X+2 + np.random.randn(m,1)
lin_reg = LinearRegression()
lin_reg.fit(X,y)
y_pred_1 = lin_reg.predict(X)
y_pred_1 = [_[0] for _ in y_pred_1]

, и когда я строю графики (X, y) и (X, y_pred_1), это кажется правильным.

I хотел создать формулу для линии наилучшего соответствия:

y= (lin_reg.coef_)x + lin_reg.intercept_

Вручную я вставил значения в полученную формулу, используя coef_, intercept_ и сравнил ее с прогнозируемым значением из lin_reg .predict (value), которые одинаковы, так что lin_reg.predict фактически использует формулу, которую я сделал выше, используя coef, intercept.

Моя проблема заключается в том, как создать формулу для простой полиномиальной регрессии?

Я бы сделал

poly_features = PolynomialFeatures(degree=2, include_bias=False)
X_poly_2 = poly_features.fit_transform(X)

poly_reg_2 = LinearRegression()
poly_reg_2.fit(X_poly_2, y)

, тогда poly_reg_2.coef_ даст мне array([[0.93189329, 0.43283304]]) и poly_reg_2.intercept_ = array([2.20637695]).

Поскольку это «простая» полиномиальная регрессия, она должна выглядеть примерно так:

y = x ^ 2 + x + b, где x - одна и та же переменная.

из poly_reg_2.coef_, какой из них x ^ 2, а какой нет?

1 Ответ

3 голосов
/ 13 февраля 2020

Благодаря https://www.youtube.com/watch?v=Hwj_9wMXDVo я получил понимание и узнал, как интерпретировать формулу для полиномиальной регрессии.

То есть poly_reg_2.coef_ = array([[0.93189329, 0.43283304]])

вы знаете, что простая линейная регрессия выглядит как
y = b + m1x

Тогда полиномиальная регрессия с 2 степенями выглядит как
y = b + m1x + m2 (x ^ 2)

и 3 степени:
y = b + m1x + m2 (x ^ 2) + m3 (x ^ 3)

и и так далее, поэтому для моего случая два коэффициента равны m1 и m2 в порядке.

и, наконец, моя формула становится такой:

y = b + 0,93189329x + 0,43283304 (x ^ 2).

...