[PYTHON] Régression linéaire (pour les débutants) -Édition de code-

Cette fois, je vais résumer l'implémentation (code) de la régression linéaire.

■ Procédure de régression linéaire

Nous allons procéder avec les 6 étapes suivantes.

  1. Préparation du module
  2. Préparation des données
  3. Créez un modèle
  4. Calcul de la valeur prévue
  5. Graphique résiduel
  6. Évaluation du modèle

1. Préparation du module

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

## 2. Préparation des données Après avoir acquis les données, divisez-les pour un traitement facile.
#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)

## 3. Créez un modèle Tout d'abord, créez une fonction d'exécution de régression linéaire (instance) et appliquez-la aux données d'apprentissage. Ensuite, chaque poids de la formule modèle (formule de retour) peut être obtenu par la méthode du carré minimum.

#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}$

4. Calcul de la valeur prévue

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]

## 5. Graphique résiduel Avant d'évaluer le modèle, examinons le tracé des résidus. Résiduel: différence entre la valeur prédite et la valeur de réponse correcte (y_pred --y_test)
#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
image.png 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.

6. Évaluation du modèle

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.

■ Enfin

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

Régression linéaire (pour les débutants) -Édition de code-
Ridge Return (pour les débutants) -Code Edition-
Arbre de décision (pour les débutants) -Édition de code-
Support Vector Machine (pour les débutants) -Code Edition-
Les débutants en apprentissage automatique essaient la régression linéaire
Régression linéaire
[Kaggle pour les super débutants] Titanic (retour logistique)
Paramètres Spacemacs (pour les débutants)
Régression linéaire avec statsmodels
Techniques de test de code?
Manuel python pour les débutants
Régression linéaire d'apprentissage automatique
Régression avec un modèle linéaire
OpenCV pour les débutants en Python
Pour ceux qui analysent dans l'atmosphère (modèle de régression linéaire 1)
Machine Learning: Supervision - Régression linéaire
[Pour les débutants] kaggle exercice (merucari)
Distribution Linux recommandée pour les débutants
Mémo de code personnel Python
CNN (1) pour la classification des images (pour les débutants)
Construction de l'environnement Python3 (pour les débutants)
Vue d'ensemble de Docker (pour les débutants)
Méthode de régression linéaire utilisant Numpy
Les bases de Seaborn pour les débutants ④ Pairplot
Grammaire de base Python pour les débutants
Apprendre avec l'enseignant (retour) 2 édition avancée
Pandas 100 coups pour les débutants en Python
[Python] Exemple de code pour la grammaire Python
Python #function 1 pour les super débutants
Régression linéaire en ligne en Python
#List Python pour les super débutants
~ Conseils pour les débutants de Python présentés avec amour par Pythonista ③ ~
[Pour les débutants de Kaggle] Titanic (LightGBM)
Mémorandum de commande Linux [pour les débutants]
Raccourci Linux pratique (pour les débutants)
Régression linéaire robuste avec scikit-learn
[Pour les débutants] Comment implémenter l'exemple de code O'reilly dans Google Colab