Maison  >  Article  >  développement back-end  >  Le principe et la méthode de mise en œuvre de l'algorithme d'arbre de décision en Python

Le principe et la méthode de mise en œuvre de l'algorithme d'arbre de décision en Python

PHPz
PHPzavant
2024-01-22 19:24:11466parcourir

决策树算法原理 Python实现决策树算法

L'algorithme d'arbre de décision appartient à la catégorie des algorithmes d'apprentissage supervisé, adapté aux variables de sortie continues et catégorielles, et est généralement utilisé pour résoudre des problèmes de classification et de régression.

Un arbre de décision est une structure arborescente similaire à un organigramme, dans laquelle chaque nœud interne représente un test d'un attribut, chaque branche représente le résultat du test et chaque nœud correspond à une étiquette de classe.

Idée d'algorithme d'arbre de décision

Commencez par traiter l'ensemble de l'entraînement comme la racine.

Pour le gain d'information, on suppose que les attributs sont catégoriques, et pour l'indice de Gini, on suppose que les attributs sont continus.

Les enregistrements sont distribués de manière récursive en fonction des valeurs d'attribut.

Utilisez des méthodes statistiques pour trier les attributs vers les nœuds racines.

Trouvez le meilleur attribut et placez-le sur le nœud racine de l'arbre.

Maintenant, divisez l'ensemble d'entraînement de l'ensemble de données en sous-ensembles. Lorsque vous créez des sous-ensembles, assurez-vous que chaque sous-ensemble de l'ensemble de données d'entraînement doit avoir les mêmes valeurs d'attribut.

Trouvez les nœuds feuilles dans toutes les branches en répétant 1 et 2 sur chaque sous-ensemble.

la mise en œuvre de l'algorithme d'arbre de décision en Python

nécessite deux phases de construction et d'exploitation :

phase de construction et ensemble de données de prétraitement. Divisez l'ensemble de données de la formation et des tests à l'aide du package Python sklearn. Entraînez le classificateur.

En phase d'exploitation, faites des prédictions. Précision du calcul.

Import de données, afin d'importer et de manipuler des données, nous utilisons le package pandas fourni en python.

Ici, nous utilisons l'URL pour obtenir l'ensemble de données directement depuis le site UCI sans télécharger l'ensemble de données. Lorsque vous essayez d'exécuter ce code sur votre système, assurez-vous que le système doit disposer d'une connexion Internet active.

Étant donné que l'ensemble de données est séparé par ",", nous devons transmettre la valeur du paramètre sep sous la forme.

Une autre chose à noter est que l'ensemble de données ne contient pas d'en-têtes, nous transmettons donc la valeur du paramètre Header comme aucun. Si nous ne transmettons pas le paramètre header, alors il considérera la première ligne de l'ensemble de données comme en-tête.

Découpage des données, avant d'entraîner le modèle, nous devons diviser l'ensemble de données en ensembles de données d'entraînement et de test.

Pour diviser l'ensemble de données pour la formation et les tests, nous avons utilisé le module sklearn train_test_split

Tout d'abord, nous devons séparer la variable cible des attributs de l'ensemble de données.

X=balance_data.values[:,1:5]
Y=balance_data.values[:,0]

Ci-dessus se trouvent les lignes de code qui séparent l'ensemble de données. La variable X contient les attributs, tandis que la variable Y contient la variable cible de l'ensemble de données.

L'étape suivante consiste à diviser l'ensemble de données à des fins de formation et de test.

X_train,X_test,y_train,y_test=train_test_split(
X,Y,test_size=0.3,random_state=100)

La ligne précédente divise l'ensemble de données pour la formation et les tests. Puisque nous divisons l'ensemble de données dans un rapport de 70:30 entre la formation et les tests, nous transmettons la valeur du paramètre test_size à 0,3. La variable

random_state est l'état du générateur de nombres pseudo-aléatoires utilisé pour l'échantillonnage aléatoire.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer