Maison > Article > Périphériques technologiques > Exercice pratique sur l'arbre de décision d'apprentissage automatique
Traducteur | Zhu Xianzhong
Réviseur | Sun Shujuan
Les algorithmes d'apprentissage automatique modernes changent notre vie quotidienne. Par exemple, de grands modèles linguistiques tels que BERT alimentent la recherche Google, et GPT-3 alimente de nombreuses applications linguistiques de haut niveau.
D’un autre côté, créer des algorithmes d’apprentissage automatique complexes est beaucoup plus facile aujourd’hui que jamais. Cependant, quelle que soit la complexité des algorithmes d'apprentissage automatique, ils entrent tous dans l'une des catégories d'apprentissage suivantes :
Anatomie des différents composants d'un arbre de décision
Le but de l'algorithme de l'arbre de décision est de prédire le résultat de l'ensemble de données d'entrée. L'ensemble de données de l'arborescence est divisé en trois formes : attributs, valeurs d'attribut et types à prédire. Comme pour tout algorithme d’apprentissage supervisé, l’ensemble de données est divisé en deux types : l’ensemble d’entraînement et l’ensemble de test. Parmi eux, l’ensemble d’entraînement définit les règles de décision que l’algorithme apprend et applique à l’ensemble de test.Avant de rassembler les étapes de l'algorithme de l'arbre de décision, comprenons d'abord les composants de l'arbre de décision :
Nœud racine : C'est le nœud de départ en haut de l'arbre de décision et contient tous les attributs valeurs. Le nœud racine est divisé en nœuds de décision en fonction des règles de décision apprises par l'algorithme.
Branches : Les branches sont des connecteurs entre les nœuds qui correspondent aux valeurs d'attribut. Dans le fractionnement binaire, les branches représentent des chemins vrais et faux.Nœud de décision/nœud interne : le nœud interne est le nœud de décision entre le nœud racine et le nœud feuille, correspondant à la règle de décision et à son chemin de réponse. Les nœuds représentent des questions et les branches affichent des chemins vers des réponses pertinentes basées sur ces questions.
Nœuds feuilles : les nœuds feuilles sont des nœuds terminaux qui représentent les prédictions cibles. Ces nœuds ne seront pas davantage divisés.
Continuez les étapes précédentes jusqu'à ce que vous atteigniez un nœud feuille ou que tous les attributs soient utilisés.
Une brève explication sur l'ensemble de données
L'ensemble de données de ce tutoriel est un ensemble de données sur la fleur d'iris. Cet ensemble de données est déjà intégré à la bibliothèque open source Scikit, les développeurs n'ont donc pas besoin de le charger en externe. Cet ensemble de données comprend un total de quatre attributs d'iris et les valeurs d'attribut correspondantes, qui seront entrées dans le modèle pour prédire l'un des trois types de fleurs d'iris.
Importer des bibliothèques
Tout d'abord, importez les bibliothèques requises pour exécuter l'implémentation de l'arbre de décision via le morceau de code suivant.import pandas as pd
import numpy as np
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
Chargement de l'ensemble de données Iris
data_set = load_iris()
print('Iris plant classes to predict: ', data_set.target_names)
print('Four features of iris plant: ', data_set.feature_names)
Attributs et balises séparés
Les lignes de code suivantes séparent les caractéristiques et les informations de type de la fleur et les stockent dans les variables correspondantes. Parmi eux, la fonction shape[0] est chargée de déterminer le nombre d'attributs stockés dans la variable X_att ; le nombre total de valeurs d'attribut dans l'ensemble de données est de 150.#提取花的特性和类型信息
X_att = data_set.data
y_label = data_set.target
print('数据集中总的样本数:', X_att.shape[0])
data_view=pd.DataFrame({
'sepal length':X_att[:,0],
'sepal width':X_att[:,1],
'petal length':X_att[:,2],
'petal width':X_att[:,3],
'species':y_label
})
data_view.head()
Diviser l'ensemble de données
#数据集拆分为训练集和测试集两部分
X_att_train, X_att_test, y_label_train, y_label_test = train_test_split(X_att, y_label, random_state = 42, test_size = 0.25)
Appliquer la fonction de classification d'arbre de décision
un arbre de décision en utilisant la fonction DecisionTreeClassifier pour créer un modèle de classification, classification standard Réglé sur "entropie" way . La norme permet à de définir la métrique de sélection d'attribut comme gain d'informations (Gain d'informations). Le code associe ensuite le modèle à notre ensemble d'attributs et d'étiquettes d'entraînement. 下面的代码负责计算并打印决策树分类模型在训练集和测试集上的准确性。为了计算准确度分数,我们使用了predict函数。测试结果是:训练集和测试集的准确率分别为100%和94.7%。 当今社会,机器学习决策树在许多行业的决策过程中都得到广泛应用。其中,决策树的最常见应用首先是在金融和营销部门,例如可用于如下一些子领域: 作为本文决策树主题讨论的总结,我们有充分的理由安全地假设:决策树的可解释性仍然很受欢迎。决策树之所以容易理解,是因为它们可以被人类以可视化方式展现并便于解释。因此,它们是解决机器学习问题的直观方法,同时也能够确保结果是可解释的。机器学习中的可解释性是我们过去讨论过的一个小话题,它也与即将到来的人工智能伦理主题存在密切联系。 与任何其他机器学习算法一样,决策树自然也可以加以改进,以避免过度拟合和出现过于偏向于优势预测类别。剪枝和ensembling技术是克服决策树算法缺点方案最常采用的方法。决策树尽管存在这些缺点,但仍然是决策分析算法的基础,并将在机器学习领域始终保持重要位置。 朱先忠,51CTO社区编辑,51CTO专家博客、讲师,潍坊一所高校计算机教师,自由编程界老兵一枚。 原文标题:An Introduction to Decision Trees for Machine Learning,作者:Stylianos Kampakis#应用决策树分类器
clf_dt = DecisionTreeClassifier(criterion = 'entropy')
clf_dt.fit(X_att_train, y_label_train)
计算模型精度
print('Training data accuracy: ', accuracy_score(y_true=y_label_train, y_pred=clf_dt.predict(X_att_train)))
print('Test data accuracy: ', accuracy_score(y_true=y_label_test, y_pred=clf_dt.predict(X_att_test)))
真实世界中的决策树应用程序
如何改进决策树?
译者介绍
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!