Übersetzer |. Zhu Xianzhong
Rezensent |. Sun Shujuan
Moderne Algorithmen für maschinelles Lernen verändern unser tägliches Leben. Große Sprachmodelle wie BERT unterstützen beispielsweise die Google-Suche und GPT-3 unterstützt viele Hochsprachenanwendungen.
Andererseits ist die Erstellung komplexer Algorithmen für maschinelles Lernen heute viel einfacher als je zuvor. Unabhängig davon, wie komplex ein Algorithmus für maschinelles Lernen auch sein mag, fallen sie alle in eine der folgenden Lernkategorien: Unüberwachtes Lernen
Analyse der verschiedenen Komponenten des Entscheidungsbaums
Das Ziel der Entscheidung Der Baumalgorithmus ist die Vorhersage der Ergebnisse des Eingabedatensatzes. Der Baumdatensatz ist in drei Formen unterteilt: Attribute, Attributwerte und vorherzusagende Typen. Wie bei jedem überwachten Lernalgorithmus ist der Datensatz in zwei Typen unterteilt: Trainingssatz und Testsatz. Unter anderem definiert der Trainingssatz die Entscheidungsregeln, die der Algorithmus lernt und auf den Testsatz anwendet.Bevor wir die Schritte des Entscheidungsbaumalgorithmus zusammenfassen, wollen wir zunächst die Komponenten des Entscheidungsbaums verstehen:
Wurzelknoten: Es ist der Startknoten oben im Entscheidungsbaum und enthält alle Attributwerte. Der Wurzelknoten wird basierend auf den vom Algorithmus gelernten Entscheidungsregeln in Entscheidungsknoten unterteilt.
Zweige: Zweige sind Verbindungen zwischen Knoten, die Attributwerten entsprechen. Bei der binären Aufteilung stellen die Zweige wahre und falsche Pfade dar.Entscheidungsknoten/Interner Knoten: Der interne Knoten ist der Entscheidungsknoten zwischen dem Wurzelknoten und dem Blattknoten, entsprechend der Entscheidungsregel und ihrem Antwortpfad. Knoten stellen Fragen dar und Zweige zeigen Pfade zu relevanten Antworten auf der Grundlage dieser Fragen.
Blattknoten: Blattknoten ist der Endknoten, der die Zielvorhersage darstellt. Diese Knoten werden nicht weiter aufgeteilt.
Fahren Sie mit den vorherigen Schritten fort, bis Sie einen Blattknoten erreichen oder alle Attribute verwendet werden.
Der Datensatz für dieses Tutorial ist ein Irisblütendatensatz. Dieser Datensatz ist bereits in die Scikit-Open-Source-Bibliothek integriert, sodass Entwickler ihn nicht extern laden müssen. Dieser Datensatz umfasst insgesamt vier Irisattribute und entsprechende Attributwerte, die in das Modell eingegeben werden, um eine von drei Arten von Irisblüten vorherzusagen.
Attribute/Merkmale im Datensatz: Kelchblattlänge, Kelchblattbreite, Blütenblattlänge, Blütenblattbreite.Vorhergesagte Tags/Blumentypen im Datensatz: Setosis, Versicolor, Virginica.
Importieren Sie zunächst die Bibliotheken, die zum Implementieren des Entscheidungsbaums erforderlich sind, über den folgenden Codeabschnitt.
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
Der folgende Code zeigt die Verwendung der Funktion „load_iris“ zum Laden des in der Variablen „data_set“ gespeicherten sklearn.datasets Iris-Datensatz in der Bibliothek. Die nächsten beiden Codezeilen drucken den Iristyp und die charakteristischen Informationen.
data_set = load_iris() print('Iris plant classes to predict: ', data_set.target_names) print('Four features of iris plant: ', data_set.feature_names)
Attribute und Tags trennen
Die folgenden Codezeilen implementieren die Blume Separate Attribut- und Typinformationen und speichern sie in entsprechenden Variablen. Unter diesen ist die Funktion „Shape[0]“ dafür verantwortlich, die Anzahl der in der Variablen X_att gespeicherten Attribute zu bestimmen. Die Gesamtzahl der Attributwerte im Datensatz beträgt 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()
Der folgende Code zeigt die Verwendung der Funktion train_test_split, um den Datensatz in zwei Teile aufzuteilen: einen Trainingssatz und ein Testset. Unter anderem wird der Parameter random_state in dieser Funktion verwendet, um einen zufälligen Startwert für die Funktion bereitzustellen, um bei jeder Ausführung die gleichen Ergebnisse für den angegebenen Datensatz bereitzustellen. test_size gibt die Größe des Testsatzes an macht nach der Aufteilung 25 % aus. Trainingsdaten machen 75 % aus.
#数据集拆分为训练集和测试集两部分 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)
um 一
Die Standardeinstellung ist „Entropie“ Weg . Der Standard ermöglicht , die Attributauswahlmetrik auf (Informationsgewinn) festzulegen. Der Code ordnet dann das Modell unserem Trainingssatz aus Attributen und Beschriftungen zu. 下面的代码负责计算并打印决策树分类模型在训练集和测试集上的准确性。为了计算准确度分数,我们使用了predict函数。测试结果是:训练集和测试集的准确率分别为100%和94.7%。#应用决策树分类器
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)))
当今社会,机器学习决策树在许多行业的决策过程中都得到广泛应用。其中,决策树的最常见应用首先是在金融和营销部门,例如可用于如下一些子领域:
作为本文决策树主题讨论的总结,我们有充分的理由安全地假设:决策树的可解释性仍然很受欢迎。决策树之所以容易理解,是因为它们可以被人类以可视化方式展现并便于解释。因此,它们是解决机器学习问题的直观方法,同时也能够确保结果是可解释的。机器学习中的可解释性是我们过去讨论过的一个小话题,它也与即将到来的人工智能伦理主题存在密切联系。
与任何其他机器学习算法一样,决策树自然也可以加以改进,以避免过度拟合和出现过于偏向于优势预测类别。剪枝和ensembling技术是克服决策树算法缺点方案最常采用的方法。决策树尽管存在这些缺点,但仍然是决策分析算法的基础,并将在机器学习领域始终保持重要位置。
朱先忠,51CTO社区编辑,51CTO专家博客、讲师,潍坊一所高校计算机教师,自由编程界老兵一枚。
原文标题:An Introduction to Decision Trees for Machine Learning,作者:Stylianos Kampakis
Das obige ist der detaillierte Inhalt vonPraktische Übung zum Entscheidungsbaum für maschinelles Lernen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!