鸢尾花分类 ID3 C4.5 CART算法,Python代码包括超参数寻优,可视化决策树
时间: 2024-04-20 21:05:10 浏览: 124
感谢您的提问!对于鸢尾花分类问题,可以使用ID3、C4.5和CART算法。下面是一个使用Python实现的决策树分类器的示例代码,包括超参数寻优和可视化决策树:
```python
import numpy as np
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier, export_graphviz
from sklearn.metrics import confusion_matrix, classification_report
import graphviz
iris = load_iris()
X_train, X_test, y_train, y_test = train_test_split(
iris.data, iris.target, test_size=0.3, random_state=0)
# 构建决策树分类器
clf = DecisionTreeClassifier()
# 超参数寻优
param_grid = {'criterion': ['gini', 'entropy'],
'max_depth': np.arange(1, 10)}
clf = GridSearchCV(clf, param_grid, cv=5)
clf.fit(X_train, y_train)
print("Best parameters found: ", clf.best_params_)
# 训练并预测
clf = DecisionTreeClassifier(**clf.best_params_)
clf.fit(X_train, y_train)
y_pred = clf.predict(X_test)
# 评估性能
print("Confusion matrix:\n", confusion_matrix(y_test, y_pred))
print("Classification report:\n", classification_report(y_test, y_pred))
# 可视化决策树
dot_data = export_graphviz(clf, out_file=None,
feature_names=iris.feature_names,
class_names=iris.target_names,
filled=True, rounded=True,
special_characters=True)
graph = graphviz.Source(dot_data)
graph.render("iris_decision_tree")
```
在上面的代码中,首先加载鸢尾花数据集并将其分成训练集和测试集。然后,使用GridSearchCV进行超参数寻优,以获得最佳的参数组合,接着构建决策树分类器并对其进行训练和预测。最后,使用confusion_matrix和classification_report评估分类器的性能,并利用export_graphviz函数可视化决策树。
阅读全文