2. Analyse multivariée définie dans Python 1-1. Analyse de régression simple (scikit-learn)

Au cours des dernières années, avec l'intérêt croissant pour l'IA et le big data, nous en sommes venus à entendre des méthodes analytiques telles que les k-means comme approche d'apprentissage automatique. Toutes ces méthodes sont des ** méthodes d'analyse multivariée ** utilisées dans les domaines des affaires et des universités depuis des décennies depuis l'ère Showa. L'une des méthodes les plus courantes est l '** analyse de régression **. Alors, tout d'abord, implémentons ** une analyse de régression simple ** à l'aide de scikit-learn, une bibliothèque d'apprentissage automatique. (En règle générale, écrivez le code et vérifiez le résultat sur Google Colaboratory)

** analyse de régression simple </ font> **

L'analyse régressive peut être divisée en ** analyse de régression simple ** pour deux variables et ** analyse de régression multiple ** pour trois variables ou plus. Tout d'abord, considérons ** une analyse de régression simple **. L'analyse de régression simple dérive la loi de ** linéaire ** ou ** non linéaire ** dans les données (phénomène) ....., pour le dire clairement, $ y $ lorsque $ x $ augmente. Révèle également la règle d'augmentation / diminution à taux constant. 002_001_007.PNG

Une analyse de régression simple ** linéaire ** très simple est exprimée par l'équation suivante. 002_001_013.PNG Cette équation est appelée ** équation de régression (équation de régression simple) **. Une fois que vous avez choisi $ a $ et $ b $, vous pouvez tracer une ligne droite. Ensuite, $ x $ peut expliquer $ y $, ou $ x $ peut être utilisé pour prédire $ y $. Puisque la variable $ y $ est expliquée par la variable $ x $, la cible $ y $ est la ** variable objective ** (variable dépendante), et le $ x $ qui l'explique est la ** variable explicative ** (indépendante). Cela s'appelle une variable). $ A $, qui indique la pente de la droite de régression, est appelé le ** coefficient de régression **, et $ b $, qui indique l'intersection avec l'axe $ y $, est appelé la ** section **. Autrement dit, le but d'une analyse de régression simple est de trouver le coefficient de régression a et la section b.

** ⑴ Importer la bibliothèque **

#Bibliothèque requise pour le calcul numérique
import numpy as np
import pandas as pd
#Package pour dessiner des graphiques
import matplotlib.pyplot as plt
# scikit-Modèle linéaire d'apprentissage
from sklearn import linear_model

** ⑵ Lisez les données et vérifiez le contenu **

df = pd.read_csv("https://raw.githubusercontent.com/karaage0703/machine-learning-study/master/data/karaage_data.csv")
df

002_001_001.PNG

** ⑶ Convertir les variables x et y en type Numpy Array **

La variable df, où les données sont stockées, se présente sous la forme d'une trame de données Pandas. Ceci est converti au type Array de Numpy et stocké dans les variables x et y pour un calcul ultérieur.

x = df.loc[:, ['x']].values
y = df['y'].values

002_001_002.PNG La variable $ x $ a été stockée sous forme de données bidimensionnelles en découpant les éléments de [toutes les lignes, x colonnes] avec la fonction loc des pandas, en les convertissant en un tableau Numpy avec des valeurs. La variable $ y $ est extraite en tant que données unidimensionnelles en spécifiant le nom de colonne $ y $ et convertie en un tableau Numpy de la même manière.

** ⑷ Tracez les données sur le diagramme de dispersion **

Utilisez le package de dessin matplotlib pour spécifier (variable x, variable y, «type de marqueur») dans l'argument de la fonction «plot».

plt.plot(x, y, "o")

002_001_003.PNG

** À partir de là, nous utiliserons le modèle de régression linéaire de la bibliothèque de machine learning scikit-learn pour calculer le coefficient de régression $ a $ et la section $ b $. ** **

** ⑸ Appliquer les variables x et y au modèle de régression linéaire **

#Chargez le modèle de régression linéaire et utilisez-le comme fonction clf
clf = linear_model.LinearRegression()
#Variante x pour la fonction clf,Appliquer y
clf.fit(x, y)

** ⑹ Calculer le coefficient / section de régression **

Le coefficient de régression peut être obtenu avec "coef_" et la section peut être obtenue avec "intercept_".

#Coefficient de régression
a = clf.coef_
#Section
b = clf.intercept_

002_001_005.PNG

** ⑺ Calculez le coefficient de décision **

Ensuite, obtenez le facteur de décision comme score (variable x, variable y).

#Coefficient de décision
r = clf.score(x, y)

002_001_006.PNG

** facteur de décision </ font> **

Le coefficient de détermination est un indice qui exprime la ** précision obtenue de l'équation de régression **. La précision dans ce cas est "dans quelle mesure l'équation de régression peut expliquer la distribution des données". Le facteur de décision est défini comme suit: 002_001_014.PNG Les données réellement observées sont appelées ** valeur mesurée **. Comme vous pouvez le voir sur le diagramme de dispersion, les valeurs mesurées sont dispersées sur les coordonnées. Comme cela est résumé en une seule ligne droite, certaines des informations de la distribution originale sont rejetées. Cette partie rejetée, c'est-à-dire l'erreur associée à l'équation de régression, est appelée ** résiduelle ** et peut être exprimée sous la forme d'une fraction comme suit. 002_001_008.PNG Le dénominateur est la variance de la variable objective $ y $, qui est la valeur mesurée, et le numérateur est équilibré au-dessus et au-dessous avec la variance de la valeur prédite $ \ hat {y} $ par l'équation de régression et la réduction du résidu. En d'autres termes, le coefficient de détermination est le pourcentage de la variance de la valeur mesurée qui correspond à la variance de la valeur prédite. Puisqu'il s'agit d'un rapport, le coefficient de détermination $ R ^ 2 $ prend toujours une valeur entre 0 et 1, et plus il est proche de 1, meilleure est la précision de l'équation de régression.

** ⑻ Définissez la valeur x pour tracer une ligne de régression **

Tout d'abord, la valeur $ x $ qui est la source de la ligne de régression est générée à l'aide de la fonction linspace de Numpy. Spécifiez (point de départ, point de fin, nombre de délimiteurs) comme argument.

fig_x = np.linspace(0, 40, 40)

002_001_009.PNG

** ⑼ Vérifiez la forme du coefficient de régression, section, valeur x **

print(a.shape) #Coefficient de régression
print(b.shape) #Section
print(fig_x.shape) #valeur x

002_001_010.PNG

Tips

Si vous remplacez $ y = ax + b $ tel quel, une erreur se produira. En effet, le coefficient de régression $ a $ est un type de tableau à 1 ligne x 1 colonne et la valeur $ x $ est un type de tableau à 40 lignes x 1 colonne, il ne répond donc pas aux règles de multiplication des tableaux. Par conséquent, nous devons convertir le coefficient de régression $ a $ en une valeur unique afin que toutes les valeurs $ x $ soient multipliées de manière égale.

** ⑽ Définir la variable y **

Lors de la définition de la formule de la valeur y, la variable fig_y, nous utilisons la fonction reshape de Numpy pour transformer la forme du coefficient de régression $ a $.

fig_y = a.reshape(1)*fig_x + b

002_001_011.PNG

** ⑾ Tracez une droite de régression **

#Nuage de points
plt.plot(x, y, "o")
#Retour en ligne droite
plt.plot(fig_x, fig_y, "r") #Changer la couleur de la ligne avec le troisième argument"r"Désigné pour

plt.show()

002_001_012.PNG


Comme décrit ci-dessus, en utilisant la bibliothèque d'apprentissage automatique, il est possible d'obtenir des résultats d'analyse sans calculs compliqués. Cependant, bien que cela ne se limite pas à l'analyse de régression, lorsqu'il s'agit d'interpréter correctement le résultat du calcul ou d'effectuer des réglages délicats dans le fonctionnement de la méthode, nous connaissons toujours le mécanisme de calcul (algorithme). Il est souhaitable de le conserver. Ensuite, vous apprendrez votre propre analyse de régression simple sans utiliser scicit-learn.

Recommended Posts