预测隐形眼镜类型实验决策树优化剪枝处理代码
时间: 2023-11-14 17:04:47 浏览: 42
以下是预测隐形眼镜类型实验的决策树优化剪枝处理代码,使用Python语言实现:
```python
import pandas as pd
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from sklearn.tree import export_graphviz
import graphviz
# 读取数据
data = pd.read_csv('lenses.csv', header=None)
data.columns = ['age', 'prescript', 'astigmatic', 'tearRate', 'class']
# 将特征值和目标值分离
feature = data.iloc[:, :-1]
target = data.iloc[:, -1]
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(feature, target, test_size=0.3)
# 构建决策树模型
clf = DecisionTreeClassifier(criterion='entropy')
clf.fit(X_train, y_train)
# 输出模型在测试集上的准确率
y_pred = clf.predict(X_test)
print('Accuracy:', accuracy_score(y_test, y_pred))
# 可视化决策树
dot_data = export_graphviz(clf, out_file=None, feature_names=feature.columns, class_names=target.unique(),
filled=True, rounded=True, special_characters=True)
graph = graphviz.Source(dot_data)
graph.view()
# 决策树剪枝
clf = DecisionTreeClassifier(criterion='entropy', ccp_alpha=0.01)
clf.fit(X_train, y_train)
# 输出剪枝后模型在测试集上的准确率
y_pred = clf.predict(X_test)
print('Accuracy after pruning:', accuracy_score(y_test, y_pred))
# 可视化剪枝后的决策树
dot_data = export_graphviz(clf, out_file=None, feature_names=feature.columns, class_names=target.unique(),
filled=True, rounded=True, special_characters=True)
graph = graphviz.Source(dot_data)
graph.view()
```
说明:
1. 首先读取数据,将特征值和目标值分离,然后划分训练集和测试集。
2. 构建决策树模型,使用熵作为划分标准。
3. 输出模型在测试集上的准确率,并可视化决策树。
4. 进行决策树剪枝,使用ccp_alpha参数控制剪枝强度。
5. 输出剪枝后模型在测试集上的准确率,并可视化剪枝后的决策树。