Cette fois, je vais résumer l'implémentation (code) de la régression linéaire.
Nous allons procéder avec les 6 étapes suivantes.
Tout d'abord, importez les modules requis.
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
#Module pour lire le jeu de données
from sklearn.datasets import load_boston
#Module qui sépare les données d'entraînement et les données de test
from sklearn.model_selection import train_test_split
#Module qui effectue une régression linéaire (méthode du carré minimum)
from sklearn.linear_model import LinearRegression
#Module pour évaluer par erreur quadratique moyenne (MSE)
from sklearn.metrics import mean_squared_error
#Facteur de décision (r2_Module à évaluer par score)
from sklearn.metrics import r2_score
#Lecture de l'ensemble de données Boston
boston = load_boston()
#Diviser en variable objective et variable explicative
X, y = boston.data, boston.target
#Divisez en données d'entraînement et en données de test
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.3)
#Créer une instance de régression linéaire
lr = LinearRegression()
#Trouvez chaque poids par la méthode des moindres carrés
lr.fit(X_train, y_train)
#Section de sortie
print(lr.intercept_)
#Coefficient de régression de sortie (gradient)
print(lr.coef_)
Résultat de sortie
lr.intercept_: 22.38235838998073
lr.coef_: [-1.30942592e-01 3.93397530e-02 3.34152241e-02 2.69312969e+00
-1.77337676e+01 3.95093181e+00 -1.16396424e-03 -1.51204896e+00
3.36066399e-01 -1.37052283e-02 -9.54346277e-01 8.23484120e-03
-5.17616471e-01]
lr.intercept_: section (poids $ w_0 $) lr.coef_: coefficient de régression / gradient (poids $ w_1 $ ~ $ w_ {13} $)
Par conséquent, les valeurs numériques concrètes de la formule modèle suivante (formule de retour) ont été obtenues.
$ y = w_0 + w_1x_1+w_2x_2+ \cdots + w_{12}x_{12} + w_{13}x_{13}$
Placez les données de test (X_test) dans la formule du modèle créée précédemment et obtenez la valeur prédite (y_pred).
y_pred = lr.predict(X_test)
y_pred
Résultat de sortie
y_pred: [34.21868721 14.30330361 18.5687412 19.17046762 22.60218908 31.75197222
13.56424899 19.9953213 36.91942317 ..... 25.08561495, 13.68910956]
#Création d'objets de dessin et de sous-tracés
fig, ax = plt.subplots()
#Graphique résiduel
ax.scatter(y_pred, y_pred - y_test, marker = 'o')
# y =Tracez la ligne droite rouge de 0
ax.hlines(y = 0, xmin = -10, xmax = 50, linewidth = 2, color = 'red')
#Définir l'étiquette de l'axe
ax.set_xlabel('y_pred')
ax.set_ylabel('y_pred - y_test')
#Titre du graphique ajouté
ax.set_title('Residual Plot')
plt.show()
Résultat de sortie
Les données sont bien équilibrées au-dessus et en dessous de la ligne rouge (y_pred --y_test = 0).
Il peut être confirmé qu'il n'y a pas de biais important dans la sortie de la valeur prédite.
Dans la régression linéaire, l'évaluation est effectuée à l'aide des deux indicateurs suivants.
・ Erreur quadratique moyenne (MSE) ・ Coefficient de décision (r2_score)
#Erreur quadratique moyenne (MSE)
print(mean_squared_error(y_test, y_pred))
#Coefficient de décision
print(r2_score(y_test, y_pred))
Résultat de sortie
MSE: 19.858434053618794
r2_score: 0.7579111486552739
À partir de ce qui précède, nous avons pu évaluer à l'aide de deux indicateurs.
En régression linéaire, nous allons créer et évaluer un modèle basé sur les étapes 1 à 6 ci-dessus.
Cette fois, pour les débutants, je n'ai résumé que l'implémentation (code). En regardant le timing dans le futur, je voudrais écrire un article sur la théorie (formule mathématique).
Merci pour la lecture.
Recommended Posts