[PYTHON] Vous serez ingénieur dans 100 jours ――Jour 81 ――Programmation ――À propos de l'apprentissage automatique 6

Cliquez ici jusqu'à hier

Vous deviendrez ingénieur dans 100 jours - Jour 76 - Programmation - À propos de l'apprentissage automatique

Vous deviendrez ingénieur dans 100 jours-70-Programmation-À propos du scraping

Vous deviendrez ingénieur dans 100 jours - Jour 66 - Programmation - À propos du traitement du langage naturel

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 - Jour 36 --Base de données --À propos de la base de données

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.

À propos du modèle de régression

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».

Visualisation de données

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()

image.png

sns.pairplot(data=boston_df[list(boston_df.columns[6:13])+['MEDV']])
plt.show()

image.png

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.

Créer un modèle prédictif

** 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.

スクリーンショット 2020-06-09 19.19.12.png
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()

image.png

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.

Résumé

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

Informations sur l'auteur

HP d'Otsu py: http://www.otupy.net/

Youtube: https://www.youtube.com/channel/UCaT7xpeq8n1G_HcJKKSOXMw

Twitter: https://twitter.com/otupython

Recommended Posts

Vous serez ingénieur dans 100 jours ――Jour 81 ――Programmation ――À propos de l'apprentissage automatique 6
Vous serez ingénieur dans 100 jours ――Jour 82 ――Programmation ――À propos de l'apprentissage automatique 7
Vous serez ingénieur dans 100 jours ――Jour 79 ――Programmation ――À propos de l'apprentissage automatique 4
Vous serez ingénieur dans 100 jours ――Jour 76 ――Programmation ――À propos de l'apprentissage automatique
Vous serez ingénieur dans 100 jours ―― Jour 80 ―― Programmation ―― À propos de l'apprentissage automatique 5
Vous serez ingénieur dans 100 jours ――Jour 78 ――Programmation ――À propos de l'apprentissage automatique 3
Vous serez ingénieur dans 100 jours ――Jour 84 ――Programmation ――À propos de l'apprentissage automatique 9
Vous serez ingénieur dans 100 jours ――Jour 83 ――Programmation ――À propos de l'apprentissage automatique 8
Vous serez ingénieur dans 100 jours ――Jour 77 ――Programmation ――À propos de l'apprentissage automatique 2
Vous serez ingénieur dans 100 jours ――Jour 85 ――Programmation ――À propos de l'apprentissage automatique 10
Vous serez ingénieur dans 100 jours ――Jour 71 ――Programmation ――À propos du scraping 2
Vous serez ingénieur dans 100 jours ――Jour 61 ――Programmation ――A propos de l'exploration
Vous serez ingénieur dans 100 jours ――Jour 74 ――Programmation ――À propos du scraping 5
Vous serez ingénieur dans 100 jours ――Jour 73 ――Programmation ――À propos du scraping 4
Vous serez ingénieur dans 100 jours ――Jour 75 ――Programmation ――À propos du scraping 6
Vous deviendrez ingénieur dans 100 jours --Jour 68 --Programmation --A propos de TF-IDF
Vous serez ingénieur dans 100 jours ――Jour 70 ――Programmation ――À propos du grattage
Vous serez ingénieur dans 100 jours ――Jour 63 ――Programmation ――À propos de la probabilité 1
Vous serez ingénieur dans 100 jours ――Jour 65 ――Programmation ――A propos de la probabilité 3
Vous serez ingénieur dans 100 jours ――Jour 64 ――Programmation ――À propos de la probabilité 2
Vous serez ingénieur dans 100 jours ―― Jour 60 ―― Programmation ―― À propos de la structure des données et de l'algorithme de tri
Vous serez ingénieur dans 100 jours - Jour 27 - Python - Exercice Python 1
Vous serez ingénieur dans 100 jours - Jour 34 - Python - Exercice Python 3
Vous serez ingénieur dans 100 jours - Jour 31 - Python - Python Exercice 2
Vous devenez ingénieur en 100 jours ――Jour 67 ――Programmation ――A propos de l'analyse morphologique
Vous devenez ingénieur en 100 jours ――Jour 66 ――Programmation ――À propos du traitement du langage naturel
Vous serez ingénieur dans 100 jours ――Jour 24 ―― Python ―― Bases du langage Python 1
Vous serez ingénieur dans 100 jours ――Jour 30 ―― Python ―― Bases du langage Python 6
Vous serez ingénieur dans 100 jours ――Jour 25 ―― Python ―― Bases du langage Python 2
Vous serez ingénieur dans 100 jours - Jour 29 - Python - Bases du langage Python 5
Vous serez ingénieur dans 100 jours - Jour 33 - Python - Bases du langage Python 8
Vous serez ingénieur dans 100 jours --Jour 26 --Python --Basiques du langage Python 3
Vous devenez ingénieur en 100 jours - Jour 35 - Python - Ce que vous pouvez faire avec Python
Vous serez ingénieur dans 100 jours --Jour 32 --Python --Basiques du langage Python 7
Vous serez ingénieur dans 100 jours --Jour 28 --Python --Les bases du langage Python 4
Devenez bientôt un ingénieur IA! Apprenez complètement Python / AI / Machine learning / Deep learning / Analyse statistique en quelques jours!
Vous devez faire attention aux commandes que vous utilisez quotidiennement dans l'environnement de production.
Créez un environnement interactif pour l'apprentissage automatique avec Python
À propos des tests dans la mise en œuvre de modèles d'apprentissage automatique
Apprentissage automatique sur le surapprentissage
Enregistrement d'apprentissage de la programmation 2ème jour
Jusqu'à ce qu'un ingénieur qui était autrefois frustré par l'apprentissage automatique parvienne à utiliser l'apprentissage automatique au travail
[Apprentissage automatique] Résumons la forêt aléatoire de manière simple à comprendre
Apprentissage automatique dans Delemas (s'entraîner)
Une introduction à l'apprentissage automatique
À propos de la matrice mixte d'apprentissage automatique
Programmation Python Machine Learning> Mots-clés
Utilisé en EDA pour l'apprentissage automatique
Que diriez-vous d'Anaconda pour créer un environnement d'apprentissage automatique avec Python?
Apprenez le machine learning à tout moment et en tout lieu dans l'environnement Jupyter Notebook à la demande