Введение
В этом практическом занятии показано, как использовать линейную регрессию для построения прямой линии, которая наилучшим образом соответствует набору данных, и как вычислить коэффициенты, сумму квадратов остатков и коэффициент детерминации. Мы будем использовать библиотеку scikit-learn для выполнения линейной регрессии на наборе данных о диабете.
Советы по использованию ВМ
После запуска виртуальной машины щелкните в левом верхнем углу, чтобы переключиться на вкладку Ноутбук и получить доступ к Jupyter Notebook для практики.
Иногда вам может потребоваться подождать несколько секунд, пока Jupyter Notebook не загрузится полностью. Проверка операций не может быть автоматизирована из-за ограничений Jupyter Notebook.
Если вы сталкиваетесь с проблемами во время обучения, не стесняйтесь обращаться к Labby. Оставьте отзыв после занятия, и мы оперативно решим проблему для вас.
Загрузка набора данных о диабете
Начнем с загрузки набора данных о диабете из 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()
Резюме
В этом практическом занятии мы узнали, как использовать линейную регрессию для подгонки прямой линии к набоору данных, и как вычислять коэффициенты, сумму квадратов остатков и коэффициент детерминации. Мы также узнали, как визуализировать предсказанные значения против фактических значений с использованием точечного графика.