专业网站建设品牌,十四年专业建站经验,服务6000+客户--广州京杭网络
免费热线:400-683-0016      微信咨询  |  联系我们

如何在Python中从零开始实现随机森林_python

当前位置:网站建设 > 技术支持
资料来源:网络整理       时间:2023/3/9 2:21:12       共计:3578 浏览

如何在Python中从零开始实现随机森林?

随机森林(Random Forest)属于集成学习(Ensemble Learning)的一种。集成学习,顾名思义,就是集众模型之大成。类比一下日常生活中的日子,比如给试卷评分,客观题很简单,直接按照标准答案就是了(实际上现在考试客观题基本都通过机器阅卷了),但是主观题就没那么简单了。普通的小测验,一个老师打个分就是了,但重大考试,为了慎重,往往会找多个老师同时打分,然后通过某种算法得出一个最终分,一般而言是平均,但对分差过大的情况会作特殊处理。某种意义上,其实是让多个老师投票投出一个最终得分。再比如,判例法系统中的陪审团,也可以看成是集成学习。(但是各种选秀节目的评委打分就不一定是集成学习了,因为有很多黑箱操作 ;-) 集成学习,也是让多个模型学习同一个问题,然后通过某种投票(voting)机制,得出较优的结果。

(图片来源:KDnuggets)

随机森林,顾名思义,就是找一批决策树来进行决策。用Python代码来表示,就是构建一个决策树的列表,然后让这些决策树“投票”:

trees = [create_tree() for i in range(n)]

predictions = [bagging(trees, sample) for sample in test_data]

其中,create_tree函数用于构建决策树,限于篇幅,具体定义这里省略(可以参考各决策树教程)。

bagging在原数据集的基础上创建多个子数据集,然后分给多棵决策树,让这些决策树分别学习,最后通过某种投票机制(比如平均数、中位数、众数)集成多棵决策树的成果。

比如,通过众数:

predictions = [predict(trees, sample) for sample in test_data]

bagging_prediction = max(set(predictions), key=predictions.count)

好了,随机森林的关键思路就是这些了。详细的代码示例这里就不贴了,可以自行在GitHub等地搜索。

另外,绝大多数情况下,并不需要从零开始实现随机森林,可以直接利用现成的库,比如sklearn.ensemble就提供了RandomForestClassifier。

当然,从零开始实现,对于理解随机森林还是很有帮助的。

版权说明:
本网站凡注明“广州京杭 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
·上一条:想家了怎么办_服务器 | ·下一条:服务器composite怎么查_服务器

Copyright © 广州京杭网络科技有限公司 2005-2024 版权所有    粤ICP备16019765号 

广州京杭网络科技有限公司 版权所有