选择鸢尾花数据集任意两个特征,建立决策树模型; 1.2输出组合特征的名称,训练精度,测试精度; 1.3将最终不同组合下的分类结果输出可视化图;
时间: 2024-11-29 21:35:15 浏览: 6
首先,选择鸢尾花数据集中的两个特征,例如我们可以选取“萼片长度”(sepal length)和“花瓣宽度”(petal width)。在Python的Scikit-Learn库中,可以使用`Iris`数据集,并通过`DecisionTreeClassifier`构建决策树模型。
```python
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score
import matplotlib.pyplot as plt
# 加载数据
iris = load_iris()
X = iris.data[:, [0, 2]] # 花萼长度和花瓣宽度作为特征
y = iris.target
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 创建决策树模型
tree_model = DecisionTreeClassifier()
# 训练模型
tree_model.fit(X_train, y_train)
# 预测并计算训练精度和测试精度
train_pred = tree_model.predict(X_train)
test_pred = tree_model.predict(X_test)
train_accuracy = accuracy_score(y_train, train_pred)
test_accuracy = accuracy_score(y_test, test_pred)
print(f"组合特征:{'sepal_length', 'petal_width'}")
print(f"训练精度:{train_accuracy}")
print(f"测试精度:{test_accuracy}")
# 可视化决策树
plt.figure(figsize=(10, 5))
tree.export_graphviz(tree_model, out_file='tree.dot', feature_names=['sepal_length', 'petal_width'], class_names=iris.target_names)
# 使用Graphviz工具渲染dot文件生成树状图
!dot -Tpng tree.dot -o tree.png
```
这段代码会输出指定特征组合的训练和测试精度,并创建一个决策树的可视化图。请注意,实际运行上述代码需要安装额外的`graphviz`包来处理图形生成。
阅读全文