Пакеты Python для линейной регрессии Пакет NumPy


Шаг 4. Получите результаты



бет8/13
Дата07.12.2022
өлшемі86,03 Kb.
#55707
1   ...   5   6   7   8   9   10   11   12   13
Байланысты:
3 Реализация линейной регрессии в Python

Шаг 4. Получите результаты
Получить свойства модели можно так же, как и в случае линейной регрессии:
>>> r_sq = model.score(x_, y)
>>> print('coefficient of determination:', r_sq)
coefficient of determination: 0.8908516262498564
>>> print('intercept:', model.intercept_)
intercept: 21.372321428571425
>>> print('coefficients:', model.coef_)
coefficients: [-1.32357143 0.02839286]
Опять же, .score() возвращает R^2R2. Его первым аргументом также является измененный вход x_, а не x. Значения весов связаны с .intercept_ и .coef_: .intercept_ представляет b0​, а .coef_ ссылается на массив, содержащий b1​ и b2​ соответственно.
Вы можете получить очень похожий результат с разными аргументами преобразования и регрессии:
x_ = PolynomialFeatures(degree=2, include_bias=True).fit_transform(x)
Если вы вызываете PolynomialFeatures с параметром по умолчанию include_bias = True (или просто опускаете его), вы получите новый входной массив x_ с дополнительным крайним левым столбцом, содержащим только единицы. Этот столбец соответствует перехвату. Вот как в этом случае выглядит модифицированный входной массив:
>>> print(x_)
[ [1.000e+00 5.000e+00 2.500e+01]
[1.000e+00 1.500e+01 2.250e+02]
[1.000e+00 2.500e+01 6.250e+02]
[1.000e+00 3.500e+01 1.225e+03]
[1.000e+00 4.500e+01 2.025e+03]
[1.000e+00 5.500e+01 3.025e+03] ]
Первый столбец x_ содержит единицы, второй — значения x, а третий — квадраты x.
Перехват уже включен в крайний левый столбец единиц, и вам не нужно включать его снова при создании экземпляра LinearRegression. Таким образом, вы можете указать fit_intercept = False. Вот так выглядит следующее утверждение:
>>> print(x_)
model = LinearRegression(fit_intercept=False).fit(x_, y)
Переменная model снова соответствует новому входному массиву x_. Следовательно, x_ следует передавать в качестве первого аргумента вместо x.
Этот подход дает следующие результаты, аналогичные предыдущему:
>>> print(x_)
>>> r_sq = model.score(x_, y)
>>> print('coefficient of determination:', r_sq)
coefficient of determination: 0.8908516262498565
>>> print('intercept:', model.intercept_)
intercept: 0.0
>>> print('coefficients:', model.coef_)
coefficients: [21.37232143 -1.32357143 0.02839286]
Вы видите, что теперь .intercept_ равен нулю, но .coef_ фактически содержит b0​ в качестве своего первого элемента. В остальном все то же самое.


Достарыңызбен бөлісу:
1   ...   5   6   7   8   9   10   11   12   13




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет