Puisque j'écris un article comme résultat d'étude, il peut y avoir des erreurs. Alors n'hésitez pas à commenter, commenter et souligner. Cette fois, j'ai écrit sur la régression dans Predictive Statistics (Practice Edition Simple Regression) Python, mais j'écrirai sur la classification.
・ Super aperçu de l'apprentissage automatique ・ Examen de la classification ・ Flux de modélisation · Entraine toi
Avant d'écrire sur la classification, jetons un bref coup d'œil à l'apprentissage automatique. L'apprentissage automatique consiste à apprendre et à prédire des modèles à partir de données passées. Il est maintenant utilisé dans le monde entier car il a une précision de prédiction plus élevée que l'analyse de données humaines. L'apprentissage automatique nécessite de nombreux paramètres (appelés hyperparamètres dans le monde de l'apprentissage automatique), et le nombre peut être des dizaines de milliers. De plus, lors de l'utilisation de ce paramètre, un surapprentissage se produira s'il y a un paramètre inutile, donc un ajustement est nécessaire. Et les deux suivants sont indispensables pour étudier l'apprentissage automatique. ・ Apprendre avec l'enseignant ・ Apprendre sans professeur
L'apprentissage supervisé est une méthode dans laquelle les données que vous saisissez constituent la bonne réponse. Vous entrez réellement les données et l'ordinateur prédit les données futures en fonction de ces données. L'image est que l'enseignant apprend aux élèves à étudier.
L'apprentissage non supervisé prédit les données sans entrer les données correctes réelles. Puisqu'il s'agit d'une méthode pour découvrir l'essence des données et qu'il n'y a pas de réponse correcte, la précision de la prédiction ne peut pas être mesurée. L'image est comme un étudiant à la recherche d'un emploi qui ne trouve pas ce qu'il veut faire.
Dans cette pratique, nous avons adopté une méthode appelée arbre de décision dans l'apprentissage avec un enseignant.
Comme je l'ai écrit dans l'article précédent, la classification est divisée en catégories. Par exemple, divisez le chien en Daxfund et Chiwawa, ou divisez le gâteau en petits gâteaux et gâteaux au chocolat. Si la méthode utilisée dans cette classification est un apprentissage supervisé et que les chiens sont classés, entrez d'abord les caractéristiques (paramètres) de Daxfund et Chiwawa. Si le corps est long, entrez Dax, ou si les yeux sont ronds, entrez Chiwawa et laissez l'ordinateur juger. Bien sûr, s'il y a beaucoup de paramètres, la précision de la classification augmentera, mais s'il y a trop de paramètres, elle sera surapprise. Par exemple, dans le cas des chiens, si vous entrez un paramètre appelé longueur de la queue, il sera difficile de déterminer la longueur de la queue car il existe des différences individuelles. Par conséquent, lors du choix des paramètres, la précision de la classification sera plus élevée s'ils sont indépendants les uns des autres.
Je vais vous expliquer le flux pour créer un modèle. ① Analyse de base </ b> ・ Lecture des données ・ Confirmation des statistiques de base ・ Confirmation et correction du terrain défectueux ・ Tableau croisé ・ Binning ② Création d'un modèle d'arbre de décision </ b> ・ Sélection et détermination des variables explicatives ・ Sélection et détermination des variables objectives ・ Créer des variables pour le modèle d'arbre de décision -Substituer les données pour les variables dans le modèle d'arbre de décision ・ Prédire les données de test en fonction du modèle d'arbre de décision
Je vais mettre le code réel.
① Analyse de base Tout d'abord, importons la bibliothèque requise pour créer un modèle d'arbre de décision.
import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
%matplotlib inline
from sklearn.tree import DecisionTreeClassifier as DT
from sklearn.tree import export_graphviz
import pydotplus
from IPython.display import Image
Ensuite, utilisez la bibliothèque pandas pour charger les données et rechercher les statistiques de base
train = pd.read_csv("train.csv") #Substitution de données antérieures
test = pd.read_csv("test.csv") #Substitution des données de prévision
sample = pd.read_csv("submit_sample.csv",header=None)
train.describe() #Confirmation des statistiques de base des données passées
test.describe() #Vérifiez également les données de prévision
Ensuite, vérifions la zone défectueuse
train.isnull().sum()
test.isnull().sum()
Ensuite, nous ferons une tabulation croisée. Un tableau croisé est un tableau qui montre la relation numérique entre les données d'une colonne et les données d'une autre colonne. Le code ressemble à ceci:
#La fonction de tableau croisé peut être utilisée pour le tableau croisé, l'option marges génère également la valeur totale
pd.crosstab(train["Nom de colonne"],train["Nom de colonne"],margins=True)
Vient ensuite le binning. Le binning calcule le nombre de nombres dans une certaine section. L'image est comme la relation entre la classe de l'histogramme et la fréquence.
#Divisez les données de la colonne du premier argument par la valeur numérique du deuxième argument.
bining_data = pd.cut(train["Nom de colonne"],[1,10,20,30,50,100])
② Création d'un modèle d'arbre de décision Tout d'abord, décidez quel paramètre vous souhaitez utiliser. Ensuite, affectons ce paramètre à une variable. La fonction iloc est pratique lorsque vous souhaitez affecter plusieurs lignes et plusieurs colonnes.
#Toutes les lignes et colonnes sont extraites de la 0e à la 17e ligne.
trainX = train.iloc[:,0:17]
y = train["Variable objective"]
#la fonction de copie extrait toutes les colonnes
testX = test.copy()
Ensuite, simulons les données extraites.
trainX = pd.get_dummies(trainX)
testX = pd.get_dummies(testX)
Et préparons les variables pour faire le modèle d'arbre de décision
#Le premier argument est la profondeur de la feuille, le deuxième argument est la valeur minimale de l'échantillon
clf1 = DT(max_depth=2,min_samples_leaf=500)
Remplaçons les données passées
#Assurez-vous d'attribuer à partir de la variable explicative
clf1 = clf1.fit(trainX,y)
Ensuite, je veux l'afficher sur Jupiter, mais comme il peut être affiché directement, je vais l'écrire dans un fichier de points et l'afficher ensuite.
export_graphviz(clf1, out_file="tree.dot", feature_names=trainX.columns, class_names=["0","1"], filled=True, rounded=True)
g = pydotplus.graph_from_dot_file(path="tree.dot")
Image(g.create_png())
Eh bien, je vais enfin prédire. Cette fois, nous utiliserons la fonction predit_proba </ b> au lieu de la fonction prédire car il s'agit d'une classification plutôt que d'une régression.
pred = clf1.predict_proba(testX)
Ceci conclut l'analyse utilisant la classification. Vous n'avez pas à vous souvenir de l'affichage du modèle d'arbre de décision, vous pouvez donc le copier. Veuillez modifier les options si nécessaire. Cette fois, j'ai utilisé le modèle d'arbre de décision. Cependant, lors de l'utilisation du modèle d'arbre de décision, la profondeur jusqu'aux feuilles et la valeur minimale à définir deviennent importantes. Il est important de noter que plus les feuilles sont profondes, plus elles ont de chances de surapprendre. Par conséquent, il est possible de créer un modèle moins susceptible d'être surentraîné en ajustant les paramètres. Je l'écrirai à nouveau dans le prochain article.
Recommended Posts