Примечание
Перейти к концу для загрузки полного примера кода. или для запуска этого примера в вашем браузере через 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()

Заключение
Обученная модель соответствует оценщику, который минимизирует среднеквадратическую ошибку между предсказанными и истинными целевыми значениями на обучающих данных. Таким образом, мы получаем оценку условного среднего целевой переменной при данных.
Обратите внимание, что в более высоких измерениях минимизация только квадратичной ошибки может привести к переобучению. Поэтому для предотвращения этой проблемы часто используются методы регуляризации, такие как те, что реализованы в Ridge или Lasso.
Общее время выполнения скрипта: (0 минут 0,158 секунды)
Связанные примеры
© 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