Cliquez ici jusqu'à hier
Vous deviendrez ingénieur dans 100 jours-70-Programmation-À propos du scraping
Vous deviendrez ingénieur dans 100 jours - Jour 63 - Programmation - À propos de la probabilité 1
Vous deviendrez ingénieur dans 100 jours - Jour 59 - Programmation - À propos des algorithmes
Vous deviendrez ingénieur dans 100 jours --- Jour 53 --Git --À propos de Git
Vous deviendrez ingénieur dans 100 jours - Jour 42 --Cloud --À propos des services cloud
Vous deviendrez ingénieur dans 100 jours-24 jours-Python-Bases du langage Python 1
Vous deviendrez ingénieur dans 100 jours --Jour 18 --Javascript --Les bases de JavaScript 1
Vous deviendrez ingénieur dans 100 jours - Jour 14 --CSS --CSS Basics 1
Vous deviendrez ingénieur dans 100 jours - Jour 6 --HTML - Bases du HTML 1
Cette fois, c'est une continuation de l'histoire de l'apprentissage automatique.
Je vais vous expliquer ce que vous pouvez faire avec l'apprentissage automatique pour la première fois, mais ce que vous pouvez faire avec l'apprentissage automatique Il y en a essentiellement trois.
· Revenir · Classification ・ Regroupement
En gros, cela devient «prédiction», mais la partie de ce qu'il faut «prédire» change.
・ Retour: prédire les valeurs numériques ・ Classification: Catégories de prédiction ・ Clustering: faites-vous sentir bien
Le modèle de retour
va prédire la valeur numérique.
Les données utilisées cette fois sont les données sur les prix des logements à Boston attachées à «scikit-learn».
colonne | La description |
---|---|
CRIM | Taux de criminalité par habitant par ville |
ZN | Le ratio des terrains résidentiels est de 25,Colis de plus de 000 pieds carrés |
INDUS | Pourcentage d'acres non marchandes par ville |
CHAS | Variable fictive de la rivière Charlie (1 si à la limite de la rivière, 0 sinon) |
NOX | Concentration de monoxyde d'azote (1 sur 10 millions) |
RM | Nombre moyen de pièces par logement |
AGE | Ratio d'âge des unités possédées et occupées construites avant 1940 |
DIS | Distance pondérée jusqu'à 5 centres d'emploi de Boston |
RAD | Indicateur d'accessibilité à l'autoroute radiale |
TAX | 10,Taux d'imposition complet par 000 $ |
PTRATIO | Ratio élèves-enseignant |
B | Pourcentage de Noirs en ville |
LSTAT | Faible taux par habitant |
MEDV | Logement propriétaire-résident médian à 1000 $ |
Le «MEDV» est la «variable objectif» que vous voulez prédire, et les autres sont les «variables explicatives».
Voyons d'abord de quel type de données il s'agit.
from sklearn.datasets import load_boston
#Lire les données
boston = load_boston()
#Créer un bloc de données
boston_df = pd.DataFrame(data=boston.data,columns=boston.feature_names)
boston_df['MEDV'] = boston.target
#Aperçu des données
print(boston_df.shape)
boston_df.head()
CRIM | ZN | INDUS | CHAS | NOX | RM | AGE | DIS | RAD | TAX | PTRATIO | B | LSTAT | MEDV | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 0.00632 | 18 | 2.31 | 0 | 0.538 | 6.575 | 65.2 | 4.09 | 1 | 296 | 15.3 | 396.9 | 4.98 | 24 |
1 | 0.02731 | 0 | 7.07 | 0 | 0.469 | 6.421 | 78.9 | 4.9671 | 2 | 242 | 17.8 | 396.9 | 9.14 | 21.6 |
2 | 0.02729 | 0 | 7.07 | 0 | 0.469 | 7.185 | 61.1 | 4.9671 | 2 | 242 | 17.8 | 392.83 | 4.03 | 34.7 |
3 | 0.03237 | 0 | 2.18 | 0 | 0.458 | 6.998 | 45.8 | 6.0622 | 3 | 222 | 18.7 | 394.63 | 2.94 | 33.4 |
4 | 0.06905 | 0 | 2.18 | 0 | 0.458 | 7.147 | 54.2 | 6.0622 | 3 | 222 | 18.7 | 396.9 | 5.33 | 36.2 |
Il contient des données numériques.
Visualisons-le pour voir la relation entre chaque colonne.
sns.pairplot(data=boston_df[list(boston_df.columns[0:6])+['MEDV']])
plt.show()
sns.pairplot(data=boston_df[list(boston_df.columns[6:13])+['MEDV']])
plt.show()
Regardons également la corrélation de chaque colonne.
boston_df.corr()
CRIM | ZN | INDUS | CHAS | NOX | RM | AGE | DIS | RAD | TAX | PTRATIO | B | LSTAT | MEDV | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
CRIM | 1 | -0.200469 | 0.406583 | -0.055892 | 0.420972 | -0.219247 | 0.352734 | -0.37967 | 0.625505 | 0.582764 | 0.289946 | -0.385064 | 0.455621 | -0.388305 |
ZN | -0.200469 | 1 | -0.533828 | -0.042697 | -0.516604 | 0.311991 | -0.569537 | 0.664408 | -0.311948 | -0.314563 | -0.391679 | 0.17552 | -0.412995 | 0.360445 |
INDUS | 0.406583 | -0.533828 | 1 | 0.062938 | 0.763651 | -0.391676 | 0.644779 | -0.708027 | 0.595129 | 0.72076 | 0.383248 | -0.356977 | 0.6038 | -0.483725 |
CHAS | -0.055892 | -0.042697 | 0.062938 | 1 | 0.091203 | 0.091251 | 0.086518 | -0.099176 | -0.007368 | -0.035587 | -0.121515 | 0.048788 | -0.053929 | 0.17526 |
NOX | 0.420972 | -0.516604 | 0.763651 | 0.091203 | 1 | -0.302188 | 0.73147 | -0.76923 | 0.611441 | 0.668023 | 0.188933 | -0.380051 | 0.590879 | -0.427321 |
RM | -0.219247 | 0.311991 | -0.391676 | 0.091251 | -0.302188 | 1 | -0.240265 | 0.205246 | -0.209847 | -0.292048 | -0.355501 | 0.128069 | -0.613808 | 0.69536 |
AGE | 0.352734 | -0.569537 | 0.644779 | 0.086518 | 0.73147 | -0.240265 | 1 | -0.747881 | 0.456022 | 0.506456 | 0.261515 | -0.273534 | 0.602339 | -0.376955 |
DIS | -0.37967 | 0.664408 | -0.708027 | -0.099176 | -0.76923 | 0.205246 | -0.747881 | 1 | -0.494588 | -0.534432 | -0.232471 | 0.291512 | -0.496996 | 0.249929 |
RAD | 0.625505 | -0.311948 | 0.595129 | -0.007368 | 0.611441 | -0.209847 | 0.456022 | -0.494588 | 1 | 0.910228 | 0.464741 | -0.444413 | 0.488676 | -0.381626 |
TAX | 0.582764 | -0.314563 | 0.72076 | -0.035587 | 0.668023 | -0.292048 | 0.506456 | -0.534432 | 0.910228 | 1 | 0.460853 | -0.441808 | 0.543993 | -0.468536 |
PTRATIO | 0.289946 | -0.391679 | 0.383248 | -0.121515 | 0.188933 | -0.355501 | 0.261515 | -0.232471 | 0.464741 | 0.460853 | 1 | -0.177383 | 0.374044 | -0.507787 |
B | -0.385064 | 0.17552 | -0.356977 | 0.048788 | -0.380051 | 0.128069 | -0.273534 | 0.291512 | -0.444413 | -0.441808 | -0.177383 | 1 | -0.366087 | 0.333461 |
LSTAT | 0.455621 | -0.412995 | 0.6038 | -0.053929 | 0.590879 | -0.613808 | 0.602339 | -0.496996 | 0.488676 | 0.543993 | 0.374044 | -0.366087 | 1 | -0.737663 |
MEDV | -0.388305 | 0.360445 | -0.483725 | 0.17526 | -0.427321 | 0.69536 | -0.376955 | 0.249929 | -0.381626 | -0.468536 | -0.507787 | 0.333461 | -0.737663 | 1 |
À l'exception de certaines colonnes, la corrélation entre chaque colonne ne semble pas si élevée.
Le «modèle de retour» veut s'appuyer sur la valeur d'une «variable objectif» en utilisant ces colonnes.
** Répartition des données **
Commencez par diviser les données pour la formation et les tests. Cette fois, nous nous séparerons à 6: 4.
from sklearn.model_selection import train_test_split
#6 pour les données d'entraînement et de test:Divisé par 4
X = boston_df.drop('MEDV',axis=1)
Y = boston_df['MEDV']
x_train, x_test, y_train, y_test = train_test_split(X, Y, test_size=0.4, random_state=0)
** La modélisation ** Ensuite, créez un modèle de prédiction.
Ici, nous allons construire un modèle de régression en utilisant le «modèle de régression linéaire» avec la variable objective «MEDV» et les variables explicatives «CRIM ~ LSTAT».
En gros, Y = x1 * a + x2 * b + ... ϵ
C'est une image de faire une expression comme ça.
«A» et «b» sont appelés «coefficient de retour», et chaque variable est Il montre à quel point il contribue à la prédiction de la variable objective.
«ϵ» est appelé «résiduel» et représente la «déviation» de chaque donnée et expression. Dans le "modèle de régression linéaire", la somme des "carrés résiduels" de chaque donnée est ajoutée. Trouvez chaque coefficient en le minimisant.
La bibliothèque utilisée s'appelle linear_model
.
from sklearn import linear_model
#Apprentissage avec régression linéaire
model = linear_model.LinearRegression()
model.fit(x_train, y_train)
La modélisation se fait immédiatement en appelant la bibliothèque et en faisant fit
.
** Vérification de l'exactitude **
Dans la vérification de l'exactitude du modèle de régression, nous examinerons dans quelle mesure la prédiction et la mesure réelle sont différentes.
En tant qu'index couramment utilisé
erreur quadratique nean (MSE)
et
Erreur quadratique moyenne (RMSE)
Il y a une «valeur carrée R» $ R ^ 2 $.
Le `MSE est la valeur moyenne de la somme des carrés des erreurs, et si les données d'apprentissage et les données de test sont petites, les performances du modèle sont jugées bonnes.
«RMSE» est la valeur de la racine carrée de la somme moyenne des carrés de l'erreur.
La valeur du carré R
$ R ^ 2 $ prend 1 lorsque MSE
est égal à 0, et meilleures sont les performances du modèle, plus elles sont proches de 1.
from sklearn.metrics import mean_squared_error
y_pred = model.predict(x_test)
print('MSE : {0} '.format(mean_squared_error(y_test, y_pred)))
print('RMSE : {0} '.format(np.sqrt(mean_squared_error(y_test, y_pred))))
print('R^2 : {0}'.format(model.score(x_test, y_test)))
MSE : 25.79036215070245 RMSE : 5.078421226198399 R^2 : 0.6882607142538019
En passant, en regardant la précision, la valeur de «RMSE» est décalée d'environ 5,0. En moyenne, c'est une erreur si différente du prix du logement.
** Graphique résiduel **
Au fait, dans quelle mesure le modèle de prédiction a-t-il dévié?
Visualisons le résiduel
.
#Tracer les résidus
plt.scatter(y_pred, y_pred - y_test, c = 'red', marker = 's')
plt.xlabel('Predicted Values')
plt.ylabel('Residuals')
# y =Tracez une ligne droite vers 0
plt.hlines(y = 0, xmin = -10, xmax = 50, lw = 2, color = 'blue')
plt.xlim([10, 50])
plt.show()
En combinant les données de test et les données de prédiction, vous pouvez voir l'ampleur de l'écart. Ceux qui ne sont pas alignés le sont tout à fait.
Avec ce type de ressenti, créez un modèle pour qu'il y ait moins d'écart, sélectionnez des données, prétraitez, ajustez les valeurs des paramètres du modèle, etc. Nous visons à améliorer la précision avec peu d'erreurs.
Aujourd'hui, j'ai expliqué le fonctionnement du modèle de régression. Il existe de nombreux autres modèles de régression.
Tout d'abord, commençons par ce qu'est la régression et supprimons comment modéliser et vérifier.
19 jours jusqu'à ce que vous deveniez ingénieur
HP d'Otsu py: http://www.otupy.net/
Youtube: https://www.youtube.com/channel/UCaT7xpeq8n1G_HcJKKSOXMw
Twitter: https://twitter.com/otupython
Recommended Posts