决策树的鸢尾花分类
时间: 2025-07-06 22:07:40 浏览: 9
决策树是一种广泛应用于分类和回归任务的机器学习模型,特别适合用于像鸢尾花(Iris)数据集这样的中小型数据集。在鸢尾花分类问题中,目标是根据花萼和花瓣的尺寸(如长度和宽度)来预测鸢尾花的种类,包括山鸢尾(Setosa)、变色鸢尾(Versicolor)和维吉尼亚鸢尾(Virginica)三种类别。
### 决策树在鸢尾花分类中的应用
决策树通过递归选择最优特征并划分数据集,最终生成一棵包含根节点、内部节点和叶节点的树结构[^1]。对于鸢尾花数据集,决策树可以基于以下四个特征进行划分:
- 花萼长度(Sepal Length)
- 花萼宽度(Sepal Width)
- 花瓣长度(Petal Length)
- 花瓣宽度(Petal Width)
通常情况下,决策树会优先使用信息增益(Information Gain)或基尼不纯度(Gini Impurity)作为特征选择的标准。例如,在ID3算法中使用信息增益,而在CART(Classification and Regression Tree)中则使用基尼不纯度[^2]。
### 实现步骤
为了实现决策树对鸢尾花数据集的分类,可以使用Python编程语言及其流行的机器学习库`scikit-learn`。以下是具体的实现过程:
#### 1. 加载数据集
```python
from sklearn.datasets import load_iris
# 加载鸢尾花数据集
iris = load_iris()
X = iris.data # 特征
y = iris.target # 标签
```
#### 2. 划分训练集和测试集
```python
from sklearn.model_selection import train_test_split
# 将数据集划分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
```
#### 3. 构建决策树模型
```python
from sklearn.tree import DecisionTreeClassifier
# 创建决策树分类器
clf = DecisionTreeClassifier(criterion='gini') # 可以选择'entropy'作为替代标准
# 训练模型
clf.fit(X_train, y_train)
```
#### 4. 模型评估
```python
from sklearn.metrics import accuracy_score
# 对测试集进行预测
y_pred = clf.predict(X_test)
# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print(f"模型准确率为:{accuracy:.2f}")
```
#### 5. 可视化决策树
```python
from sklearn import tree
import matplotlib.pyplot as plt
# 绘制决策树
plt.figure(figsize=(12, 8))
tree.plot_tree(clf, filled=True, feature_names=iris.feature_names, class_names=iris.target_names)
plt.show()
```
### 性能优化与调参
可以通过调整决策树的超参数来提高模型性能,例如设置最大深度(`max_depth`)、最小样本分割数(`min_samples_split`)等,以防止过拟合或欠拟合。
---
阅读全文
相关推荐


















