决策树是一种常用的机器学习算法,它通过学习数据集中的模式来预测未知数据的分类。在本文中,将使用Python的scikit-learn库来训练一个决策树模型,该模型将应用于著名的鸢尾花数据集。鸢尾花数据集包含了150个样本,每个样本有四个特征,分别对应鸢尾花的萼片长度、萼片宽度、花瓣长度和花瓣宽度。目标是使用决策树来区分这三种不同类型的鸢尾花。
首先,需要加载鸢尾花数据集。scikit-learn库已经为提供了这个数据集的副本,可以直接导入使用。接下来,将展示决策树是如何在所有特征对上进行训练的。这意味着,将分别考虑每对特征,然后训练一个决策树模型来学习这些特征之间的决策边界。这些决策边界是由一系列简单的阈值规则组合而成的,这些规则是从训练样本中推断出来的。
from sklearn.datasets import load_iris
iris = load_iris()
在训练决策树模型时,使用了不同的参数来控制模型的复杂度。例如,设置了类别数为3,这是因为鸢尾花数据集中有三种不同类型的鸢尾花。还设置了绘图颜色和绘图步长,以便在绘制决策边界时能够更清晰地展示结果。
import matplotlib.pyplot as plt
import numpy as np
from sklearn.inspection import DecisionBoundaryDisplay
from sklearn.tree import DecisionTreeClassifier
n_classes = 3
plot_colors = "ryb"
plot_step = 0.02
for pairidx, pair in enumerate([[0, 1], [0, 2], [0, 3], [1, 2], [1, 3], [2, 3]]):
X = iris.data[:, pair]
y = iris.target
clf = DecisionTreeClassifier().fit(X, y)
ax = plt.subplot(2, 3, pairidx + 1)
plt.tight_layout(h_pad=0.5, w_pad=0.5, pad=2.5)
DecisionBoundaryDisplay.from_estimator(clf, X, cmap=plt.cm.RdYlBu, response_method="predict", ax=ax,
xlabel=iris.feature_names[pair[0]], ylabel=iris.feature_names[pair[1]])
在绘制决策边界时,使用了不同的颜色来表示不同的类别。这样,就可以清楚地看到决策树是如何在特征空间中划分不同类别的。此外,还绘制了训练点,以便可以直观地看到模型是如何从训练数据中学习决策边界的。
最后,还展示了一个在所有特征上训练的单个决策树的结构。这个决策树模型考虑了鸢尾花数据集中的所有四个特征,从而能够更全面地学习数据集中的模式。通过绘制这个决策树的结构,可以更深入地理解模型是如何做出预测的。
from sklearn.tree import plot_tree
plt.figure()
clf = DecisionTreeClassifier().fit(iris.data, iris.target)
plot_tree(clf, filled=True)
plt.title("在所有鸢尾花特征上训练的决策树")
plt.show()
总的来说,本文展示了如何使用决策树对鸢尾花数据集的特征对进行训练,并绘制了决策边界和决策树的结构。这些结果可以帮助更好地理解决策树模型是如何工作的,以及它是如何从数据中学习模式的。
鸢尾花数据集是一个著名的多类分类数据集,它包含了150个样本,每个样本有四个特征。这个数据集通常被用来测试分类算法的性能。