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.
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
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'
import matplotlib.pyplot as plt
plt.plot(x, y)
plt.show()
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()
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
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édisons-le.
plt.plot(x, y, 'o')
plt.plot(x, model.predict(x), linestyle="solid")
plt.show()
À 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. ..