comment expliquer l'arbre de décision à partir de scikit-learn
J'ai deux problèmes avec la compréhension de la suite de la décision de l'arbre de scikit-learn. Par exemple, c'est un de mes arbres de décision:
Ma question est que la façon dont je peux utiliser l'arbre?
La première question est la suivante: si un échantillon satisfait à la condition, alors il va à la GAUCHE succursale (s'il existe), sinon, il va DROIT. Dans mon cas, si un échantillon avec X[7] > 63521.3984. Ensuite, l'échantillon va aller à la boîte verte. - Il Correct?
La deuxième question est la suivante: lorsqu'un échantillon atteint le nœud feuille, comment puis-je connaître la catégorie à laquelle il appartient? Dans cet exemple, j'ai trois catégories pour classer. Dans la zone rouge, il y a 91, 212, et 113 échantillons sont satisfaits de l'état, respectivement. Mais comment puis-je décider de la catégorie?
Je sais qu'il existe une fonction de la fcf.prévoir(échantillon) à dire la catégorie. Puis-je le faire à partir du graphique???
Merci beaucoup.
source d'informationauteur Student Jack
Vous devez vous connecter pour publier un commentaire.
La
value
ligne de chaque case est vous dire combien d'échantillons au niveau de ce nœud tomber dans chaque catégorie, dans l'ordre. C'est pourquoi, dans chaque zone, le nombre devalue
ajouter jusqu'à le nombre indiqué danssample
. Par exemple, dans votre boîte rouge, 91+212+113=416. Donc, cela signifie que si vous atteignez ce nœud, il y avait 91 points de données dans la catégorie 1, 212 dans la catégorie 2, et 113 dans la catégorie 3.Si vous allez à prédire l'issue d'un nouveau point de données qui a atteint que la feuille dans l'arbre de décision, vous prédire la catégorie 2, parce que c'est la catégorie la plus commune pour les échantillons au niveau de ce nœud.
Première question:
Oui, votre logique est correcte. Le nœud de gauche est Vraie et que le droit nœud est Faux. C'est contre-intuitif; true signifie généralement une valeur plus petite.
Deuxième question:
Ce problème est résolue par la visualisation de l'arbre comme un graphe avec pydotplus.
Le "class_names' attribut de l'arbre.export_graphviz() va ajouter une déclaration de classe pour la majorité de la classe de chaque nœud. Le Code est exécuté dans iPython.
Que pour la détermination de la classe à la feuille, votre exemple n'ont pas de feuilles avec une seule classe, comme les données de l'iris. Ce qui est commun et peut exiger l'application du modèle à atteindre un tel résultat. Une distribution discrète de classes est le meilleur résultat depuis de nombreuses contre-validation des modèles.
Profiter du code!
Selon le livre "l'Apprentissage de scikit-learn: l'Apprentissage de la Machine en Python", L'arbre de décision représente une série de décisions basées sur les données d'apprentissage.
!(http://i.imgur.com/vM9fJLy.png)
De classer une instance, nous devons répondre à la question à chaque nœud. Par exemple, le sexe, c'Est<=0.5? (sommes-nous parle d'une femme?). Si la réponse est oui, vous allez à la gauche de l'enfant nœud de l'arbre; sinon, vous allez vers la droite nœud enfant. Vous garder de répondre à des questions (elle était dans la classe de troisième?, était-elle à la première de la classe?, et elle était en dessous de 13 ans?), jusqu'à ce que vous atteignez une feuille. Quand vous êtes là, la prédiction correspond à la cible de la classe qui a le plus d'instances.