决策树剪枝的 python 代码 鸢尾花数据集
时间: 2023-10-16 13:11:51 浏览: 135
python利用c4.5决策树对鸢尾花卉数据集进行分类(iris)(代码全)
5星 · 资源好评率100%
以下是决策树剪枝的 Python 代码,使用的是鸢尾花数据集:
```python
from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
iris = load_iris()
# 将数据集分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.3, random_state=42)
# 创建决策树
clf = DecisionTreeClassifier(random_state=42)
clf.fit(X_train, y_train)
# 测试准确率
y_pred = clf.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print("Accuracy:", accuracy)
# 剪枝
path = clf.cost_complexity_pruning_path(X_train, y_train)
ccp_alphas = path.ccp_alphas
clfs = []
for ccp_alpha in ccp_alphas:
clf = DecisionTreeClassifier(random_state=42, ccp_alpha=ccp_alpha)
clf.fit(X_train, y_train)
clfs.append(clf)
# 删除空模型
clfs = clfs[:-1]
# 找到最优的模型
max_accuracy = 0
for clf in clfs:
y_pred = clf.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
if accuracy > max_accuracy:
max_accuracy = accuracy
best_clf = clf
print("Best Accuracy:", max_accuracy)
```
以上代码首先加载鸢尾花数据集,然后将数据集分为训练集和测试集。接着创建一个决策树,并在训练集上拟合它。然后使用测试集测试模型的准确率。
接下来,使用决策树的cost_complexity_pruning_path()方法,获得一系列的ccp_alphas。接着,依次使用每个ccp_alpha来创建一个决策树,并将它们存储在一个数组中。注意最后一个ccp_alpha对应的是空模型,即没有任何分支。因此,在将这些决策树存储在数组中时,必须删除最后一个决策树。
接下来,遍历所有的决策树(除了最后一个空模型),在测试集上测试模型的准确率,并找到最优的模型。最终,输出最优模型的准确率。
阅读全文