机器学习第一次作业报告
决策树实现
获取数据集
获取鸢尾花数据集
code
iris = load_iris() |
划分数据集
将数据集划分为训练集和测试集,划分比例按默认值,随便初始化随机种子。
code
x_train, x_test, y_train, y_test = train_test_split(iris.data, iris.target, random_state=114) |
使用决策树预估器进行分类
基于信息增益进行树的划分,之后用训练集训练模型
code
estimator = DecisionTreeClassifier(criterion='entropy') |
模型评估
使用训练好的模型进行预测,查看一下基本预测情况,然后用预测值和真实值进行比较,查看正确与否;最后打分判断模型准确率。
code
y_predict = estimator.predict(x_test) |
output
y_predict: |
从结果可以看出,经典决策树算法对经典鸢尾花数据集的分类效果是非常好的,准确率很高,模型在分类任务上表现较好,能够有效地区分不同的类别。
可视化树
通过这一步可以可视化经过数据训练拟合后的决策树。
plt.figure(figsize=(10, 6)) |
信息增益的决策树
可视化分类预测结果
- 定义可视化辅助函数
def visualize_classification(x_reduced, y_pred, y): |
- 可视化,可以更加直观地看到预测情况与真实情况的对比(相比标准文本输出)
visualize_classification(x_test, y_predict, y_test) |
从可视化结果可以更加直观地看出,大部分预测结果与真实结果的颜色是相同的,即预测对了。
剪枝优化
不妨尝试后剪枝进行优化尝试,我们遍历所有可取的剪枝系数,比较最佳的结果。
code
print("try pruning:") |
output
try pruning: |
发现还是不剪枝的分类效果最好
比较基尼系数与信息增益
最后我们比较一下基于基尼系数划分决策树和基于信息增益划分决策树的区别
code
estimator = DecisionTreeClassifier(criterion='gini') |
output
gini: |
基尼系数的决策树
完整代码
from sklearn.tree import DecisionTreeClassifier |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 (๑>ᴗ<๑)!
评论