Python scikit-learn实现决策树分类:鸢尾花数据集实战

5星 · 超过95%的资源 需积分: 17 2 下载量 76 浏览量 更新于2024-08-04 1 收藏 1KB TXT 举报
"决策树是一种流行的监督学习算法,常用于分类任务。在这个例子中,我们将使用Python的scikit-learn库来实现一个决策树分类器,处理经典的机器学习数据集——莺尾花(Iris)数据集。这个数据集包含150个样本,每个样本有4个特征(花萼长度、花萼宽度、花瓣长度和花瓣宽度)和1个目标变量(鸢尾花的种类)。" 在Python中,scikit-learn库提供了丰富的机器学习工具,包括决策树的实现。首先,我们需要导入必要的模块: 1. `load_iris` 函数来自 `sklearn.datasets`,用于加载鸢尾花数据集。 2. `DecisionTreeClassifier` 类来自 `sklearn.tree`,这是我们要使用的决策树分类器。 3. `train_test_split` 函数来自 `sklearn.model_selection`,用于将数据划分为训练集和测试集。 4. `accuracy_score` 函数来自 `sklearn.metrics`,用于计算模型预测的准确率。 接下来,我们加载鸢尾花数据集,并提取特征和目标变量: ```python from sklearn.datasets import load_iris iris = load_iris() X = iris.data y = iris.target ``` 为了评估模型性能,我们需要将数据集分为训练集和测试集。这里我们设置了测试集大小为20%(即80%的数据用于训练,20%用于测试),并设定随机种子为0以确保每次运行结果可复现: ```python X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) ``` 然后,我们实例化决策树分类器,并使用训练数据拟合模型: ```python clf = DecisionTreeClassifier(random_state=0) clf.fit(X_train, y_train) ``` 完成模型训练后,我们可以使用测试集对模型进行预测,并评估模型的准确率: ```python y_pred = clf.predict(X_test) acc = accuracy_score(y_test, y_pred) print("Accuracy: {:.2f}%".format(acc * 100)) ``` 这段代码将输出模型在测试集上的预测准确率,通常越高表示模型性能越好。 决策树的工作原理是通过学习特征之间的关系,构建一棵树形结构,每个内部节点代表一个特征,每个分支代表一个特征值,而叶子节点则对应一个类别。在预测时,新样本根据特征值沿树向下移动,直到到达叶子节点,从而得到预测类别。 在实际应用中,决策树可能面临过拟合或欠拟合的问题,可以通过调整超参数如最大深度(max_depth)、最小叶子节点样本数(min_samples_leaf)等来优化模型性能。此外,scikit-learn还提供了其他决策树变种,如随机森林(Random Forest)和梯度提升决策树(Gradient Boosting Decision Tree),它们通过集成多个决策树来提高预测能力并减少过拟合风险。