Première analyse de régression simple en Python

La signification d'une analyse de régression simple peut être trouvée autant que vous le souhaitez, mais j'espère que vous pourrez approfondir votre compréhension en écrivant le programme vous-même, et j'aimerais l'essayer en utilisant Python.

Pour le moment, les exemples suivants expliquent une analyse de régression simple.

  1. Une variable objective (y) prédite par une variable explicative (x).
  2. Exprimez leur relation sous la forme d'une équation linéaire y = ax + b.

L'environnement de test utilise un Jupyter Notebook (je ne me souviens même pas quand je l'ai installé). La version utilisée est la suivante.

The version of the notebook server is: 6.0.0
Python 3.7.3 (default, Mar 27 2019, 22:11:17) 
[GCC 7.3.0]

pandas pandas (pandas, pandas ou pandas) est une bibliothèque de conversion et d'analyse de données. Nous allons l'utiliser pour lire les données. La version utilisée est la suivante.

import pandas as pd
print(pd.__version__)
# 0.24.2

Lecture des données

Cette fois, j'utiliserai les données de taille (x) et de poids (y) (sample.csv) pour 48 personnes.

sample.csv


x,y
152,57
173,78
172,83
178,58
166,63
175,66
158,66
163,74
157,64
165,68
176,68
165,60
147,63
153,63
146,47
156,49
145,59
181,66
160,74
140,55
152,55
165,56
170,65
159,51
151,52
167,51
177,82
155,63
159,45
170,66
154,56
163,60
161,70
165,70
150,57
158,53
163,67
186,69
168,68
170,74
155,60
159,49
170,87
163,50
166,58
161,69
159,60
171,71

Lisez le fichier sample.csv et essayez de sortir les 3 premières lignes. Il semble que cela puisse être lu comme suit.

df = pd.read_csv('sample.csv')
df.head(3)
 	x 	y
0 	152 	57
1 	173 	78
2 	172 	83

Lors de la lecture de données avec pandas.read_csv, il semble que les données soient créées avec un type appelé DataFrame. pandas.read_csv DataFrame

Stockez les données de chaque colonne dans les variables x et y.

x = df.x
y = df.y

matplotlib matplotlib est une bibliothèque de dessins graphiques. La version utilisée est la suivante.

import matplotlib
matplotlib.__version__
# '3.1.0'

Dessin graphique

import matplotlib.pyplot as plt
plt.plot(x, y)
plt.show()

matplotlib1.PNG

Un graphique avec tous les points reliés par une ligne était affiché. Ce à quoi je m'attendais était un graphique montrant uniquement des points, je vais donc le modifier comme suit.

import matplotlib.pyplot as plt
plt.plot(x, y, 'o')
plt.show()

matplotlib2.PNG

scikit-learn scikit-learn est une bibliothèque d'apprentissage automatique construite sur les packages Python NumPy (Nampai ou Nampai) et SciPy (Saipy) pour effectuer des calculs scientifiques et technologiques. La version utilisée est la suivante.

import sklearn
print(sklearn.__version__)
# 0.21.2

Il semble qu'une analyse de régression simple puisse être facilement effectuée en utilisant scikit-learn. LinearRegression

Données d'apprentissage

Génère une instance du modèle LinearRegression et entraîne (ajuste) les données.

from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(x, y)
# ValueError: Expected 2D array, got 1D array instead:

J'ai pensé, j'ai eu une erreur. Lorsqu'un tableau à deux dimensions est nécessaire, il semble donner un tableau à une dimension. Changeons la façon dont x et y sont stockés et réapprendrons.

x = df[['x']]
y = df[['y']]
from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(x, y)
# LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None, normalize=False)

Il semble qu'il l'ait pris à cette époque. Cette partie devrait fonctionner si vous définissez les x et y d'origine comme suit.

#numpy dans les valeurs.Convertir en type ndarray et np.reshape(-1, 1)Convertir en n lignes et 1 colonne avec
model.fit(x.values.reshape(-1,1), y.values.reshape(-1,1))

Prédiction de données

Prédisons-le.

plt.plot(x, y, 'o')
plt.plot(x, model.predict(x), linestyle="solid")
plt.show()

matplotlib3.PNG À la suite de la prédiction de la variable objective (y) à partir de la variable explicative (x), une ligne a été tracée qui augmentait vers la droite (plus la personne est grande, plus le poids est lourd).

Il semble que les attributs coef_ et intercept_ contiennent respectivement "tilt" et "section" de cette ligne droite, donc si vous les sortez, vous pouvez obtenir l'équation de la ligne droite.

print('y = %.2fx + %.2f' % (model.coef_ , model.intercept_))
# y = 0.52x + -20.94

A partir de ce qui précède, en connaissant a (inclinaison) et b (section), il est possible de prédire y (poids) à partir de x (hauteur), c'est-à-dire qu'une «analyse de régression unique» a été réalisée. ..

Recommended Posts

Première analyse de régression simple en Python
Analyse de régression simple avec Python
Analyse de régression avec Python
2. Analyse multivariée définie dans Python 1-1. Analyse de régression simple (scikit-learn)
2. Analyse multivariée décrite dans Python 1-2. Analyse de régression simple (algorithme)
Implémentation simple de l'analyse de régression avec Keras
Apprentissage automatique avec python (2) Analyse de régression simple
GRPC simple en Python
Analyse d'association en Python
Expression de régression multiple en Python
Analyse des contraintes symétriques axiales avec Python
Régression linéaire en ligne en Python
Client IRC simple avec python
2. Analyse multivariée expliquée dans Python 7-3. Arbre de décision [arbre de retour]
Python Scikit-learn Analyse de régression linéaire Analyse de régression simple non linéaire Apprentissage automatique
Calculer le coefficient de régression d'une analyse de régression simple avec python
2. Analyse multivariée décrite dans Python 2-1. Analyse de régression multiple (scikit-learn)
Analyse des ondes cérébrales avec Python: tutoriel Python MNE
OAuth 2 simple avec Python (urllib + oauthlib)
Algorithme d'apprentissage automatique (analyse de régression unique)
Statistiques prédictives (pratique de la régression simple) Python
Analyse de régression simple comprise par les mathématiques du lycée-vérification de la loi de Moore
Implémentation d'un algorithme simple en Python 2
Analyse du squelette planaire dans Python (2) Hotfix
2. Analyse multivariée expliquée dans Python 5-3. Analyse de régression logistique (modèles statistiques)
Exécutez un algorithme simple en Python
Analyse de régression logistique Self-made avec python
Logique gacha simple écrite en Python
La première étape de Python Matplotlib
Une analyse simple des données de Bitcoin fournie par CoinMetrics en Python
[Test statistique 2e année / quasi 1e année] Formation à l'analyse régressive avec Python (2)
2. Analyse multivariée définie dans Python 6-2. Régression Ridge / Régression Lasso (scikit-learn) [Régression Ridge vs régression Lasso]
[Test statistique 2e année / quasi 1e année] Formation à l'analyse régressive avec Python (1)
2. Analyse multivariée détaillée dans Python 2-3. Analyse de régression multiple [taux d’infection au COVID-19]
Générer une collection de première classe en Python
Régression linéaire en Python (statmodels, scikit-learn, PyMC3)
Un client HTTP simple implémenté en Python
Essayez de dessiner une animation simple en Python
Régression linéaire en ligne en Python (estimation robuste)
Créer une application GUI simple en Python
J'ai essayé d'implémenter la régression logistique de Cousera en Python
[Python] Première analyse de données / apprentissage automatique (Kaggle)
MongoDB avec Python pour la première fois
Ecrire une méthode de cupidité simple en Python
Ecrire un plugin Vim simple en Python 3
Analyse résiduelle en Python (Supplément: règles Cochrane)
Quadtree en Python --2
Python en optimisation
CURL en Python
Métaprogrammation avec Python
Premier Python
Python 3.3 avec Anaconda
Géocodage en python
SendKeys en Python
Méta-analyse en Python
Unittest en Python
Analyse de données python
Époque en Python
Discord en Python
Allemand en Python
DCI en Python