Spec-Zone.ru › scikit-learn

Примечание

Перейти к концу для загрузки полного примера кода. или для запуска этого примера в вашем браузере через JupyterLite или Binder

Пример обычных наименьших квадратов

В этом примере показано, как использовать модель обычных наименьших квадратов (OLS), называемую LinearRegression в scikit-learn.

Для этой цели мы используем один признак из набора данных о диабете и пытаемся предсказать прогрессирование диабета с помощью этой линейной модели. Поэтому мы загружаем набор данных о диабете и разделяем его на обучающий и тестовый наборы.

Затем мы обучаем модель на обучающем наборе, оцениваем ее производительность на тестовом наборе и, наконец, визуализируем результаты на тестовом наборе.

# Authors: The scikit-learn developers
# SPDX-License-Identifier: BSD-3-Clause

Загрузка и подготовка данных

Загрузите набор данных о диабете. Для простоты мы оставляем только один признак в данных. Затем мы разделяем данные и целевую переменную на обучающий и тестовый наборы.

from sklearn.datasets import load_diabetes
from sklearn.model_selection import train_test_split

X, y = load_diabetes(return_X_y=True)
X = X[:, [2]]  # Use only one feature
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=20, shuffle=False)

Линейная регрессионная модель

Мы создаем линейную регрессионную модель и обучаем ее на обучающих данных. Обратите внимание, что по умолчанию к модели добавляется свободный член. Мы можем контролировать это поведение, задавая параметр fit_intercept.

from sklearn.linear_model import LinearRegression

regressor = LinearRegression().fit(X_train, y_train)

Оценка модели

Мы оцениваем производительность модели на тестовом наборе, используя среднеквадратическую ошибку и коэффициент детерминации.

from sklearn.metrics import mean_squared_error, r2_score

y_pred = regressor.predict(X_test)

print(f"Mean squared error: {mean_squared_error(y_test, y_pred):.2f}")
print(f"Coefficient of determination: {r2_score(y_test, y_pred):.2f}")
Mean squared error: 2548.07
Coefficient of determination: 0.47

Визуализация результатов

Наконец, мы визуализируем результаты на обучающих и тестовых данных.

import matplotlib.pyplot as plt

fig, ax = plt.subplots(ncols=2, figsize=(10, 5), sharex=True, sharey=True)

ax[0].scatter(X_train, y_train, label="Train data points")
ax[0].plot(
    X_train,
    regressor.predict(X_train),
    linewidth=3,
    color="tab:orange",
    label="Model predictions",
)
ax[0].set(xlabel="Feature", ylabel="Target", title="Train set")
ax[0].legend()

ax[1].scatter(X_test, y_test, label="Test data points")
ax[1].plot(X_test, y_pred, linewidth=3, color="tab:orange", label="Model predictions")
ax[1].set(xlabel="Feature", ylabel="Target", title="Test set")
ax[1].legend()

fig.suptitle("Linear Regression")

plt.show()
Linear Regression, Train set, Test set

Заключение

Обученная модель соответствует оценщику, который минимизирует среднеквадратическую ошибку между предсказанными и истинными целевыми значениями на обучающих данных. Таким образом, мы получаем оценку условного среднего целевой переменной при данных.

Обратите внимание, что в более высоких измерениях минимизация только квадратичной ошибки может привести к переобучению. Поэтому для предотвращения этой проблемы часто используются методы регуляризации, такие как те, что реализованы в Ridge или Lasso.

Общее время выполнения скрипта: (0 минут 0,158 секунды)

Launch binder
Launch JupyterLite

Download Jupyter notebook: plot_ols.ipynb

Download Python source code: plot_ols.py

Download zipped: plot_ols.zip

Связанные примеры

График предсказаний индивидуальной и голосования регрессии

График перекрестно-валидированных предсказаний

Неотрицательные наименьшие квадраты

Регрессия с помощью градиентного бустинга

© 2007–2025 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.6/auto_examples/linear_model/plot_ols.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API