Пример линейной регрессии

Machine LearningMachine LearningBeginner
Практиковаться сейчас

This tutorial is from open-source community. Access the source code

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

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

Советы по использованию ВМ

После запуска виртуальной машины щелкните в левом верхнем углу, чтобы переключиться на вкладку Ноутбук и получить доступ к Jupyter Notebook для практики.

Иногда вам может потребоваться подождать несколько секунд, пока Jupyter Notebook не загрузится полностью. Проверка операций не может быть автоматизирована из-за ограничений Jupyter Notebook.

Если вы сталкиваетесь с проблемами во время обучения, не стесняйтесь обращаться к Labby. Оставьте отзыв после занятия, и мы оперативно решим проблему для вас.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL sklearn(("Sklearn")) -.-> sklearn/ModelSelectionandEvaluationGroup(["Model Selection and Evaluation"]) ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) sklearn/ModelSelectionandEvaluationGroup -.-> sklearn/metrics("Metrics") ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills sklearn/metrics -.-> lab-49231{{"Пример линейной регрессии"}} ml/sklearn -.-> lab-49231{{"Пример линейной регрессии"}} end

Загрузка набора данных о диабете

Начнем с загрузки набора данных о диабете из scikit-learn и выбора только одного признака из набора данных.

import numpy as np
from sklearn import datasets

## Load the diabetes dataset
diabetes_X, diabetes_y = datasets.load_diabetes(return_X_y=True)

## Use only one feature
diabetes_X = diabetes_X[:, np.newaxis, 2]

Разделение набора данных

Далее мы разделяем набор данных на обучающую и тестовую выборки. Мы будем использовать 80% данных для обучения и 20% для тестирования.

## Split the data into training/testing sets
diabetes_X_train = diabetes_X[:-20]
diabetes_X_test = diabetes_X[-20:]

## Split the targets into training/testing sets
diabetes_y_train = diabetes_y[:-20]
diabetes_y_test = diabetes_y[-20:]

Обучение модели

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

from sklearn import linear_model

## Create linear regression object
regr = linear_model.LinearRegression()

## Train the model using the training sets
regr.fit(diabetes_X_train, diabetes_y_train)

Получение предсказаний

Теперь мы можем использовать обученную модель для получения предсказаний на тестовой выборке.

## Make predictions using the testing set
diabetes_y_pred = regr.predict(diabetes_X_test)

Вычисление метрик

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

from sklearn.metrics import mean_squared_error, r2_score

## The coefficients
print("Coefficients: \n", regr.coef_)

## The mean squared error
print("Mean squared error: %.2f"
      % mean_squared_error(diabetes_y_test, diabetes_y_pred))

## The coefficient of determination: 1 is perfect prediction
print("Coefficient of determination: %.2f"
      % r2_score(diabetes_y_test, diabetes_y_pred))

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

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

import matplotlib.pyplot as plt

## Plot outputs
plt.scatter(diabetes_X_test, diabetes_y_test, color="black")
plt.plot(diabetes_X_test, diabetes_y_pred, color="blue", linewidth=3)

plt.xticks(())
plt.yticks(())

plt.show()

Резюме

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