随机森林学习历程

已有部分理论基础,先运行出来再说:

第一部分:

主要参考:随机森林的原理分析及Python代码实现:https://blog.csdn.net/flying_sfeng/article/details/64133822/(Python实现)

脉络:

随机森林--->集成学习(通过构建并结合多个分类器来完成学习任务。通过将多个学习器进行结合,常可获得比单一学习器更好的泛化性能)--->投票法产生结果(要获得好的集成,个体学习器应“好而不同”,要有一定的“准确性”,即不能太差,并且要有“多样性”,即具有差异。)--->目前的集成学习方法大致可分为两大类,即个体学习器之间存在强依赖关系,必须串行生成的序列化方法,以及个体学习器间不存在强依赖关系,可同时生成的并行化方法;前者的代表是Boosting,后者的代表是Bagging和“随机森林”(Random Forest)

随机森林就是对决策树的集成,但有两点不同:

(1)采样的差异性:从含m个样本的数据集中有放回的采样,得到含m个样本的采样集,用于训练。这样能保证每个决策树的训练样本不完全一样。

(2)特征选取的差异性:每个决策树的n个分类特征是在所有特征中随机选择的(n是一个需要我们自己调整的参数)

随机森林需要调整的参数有:

(1)    决策树的个数

(2)    特征属性的个数

(3)    递归次数(即决策树的深度)

代码实现流程:

(1)    导入文件并将所有特征转换为float形式

(2)    将数据集分成n份,方便交叉验证

(3)    构造数据子集(随机采样),并在指定特征个数(假设m个,手动调参)下选取最优特征

(4)    构造决策树

(5)    创建随机森林(多个决策树的结合)

(6)    输入测试集并进行测试,输出预测结果
 

进一步学习:

从头开始:用Python实现随机森林算法:https://www.tuicool.com/articles/iiUfeim(Python实现)

数据的来源+实现原理(与上一篇对照看)

第二部分:手写识别的运行

【没成功,主要因为不知道该把数据放在哪,同时也不会改路径。恳请各位大佬帮忙解答,非常感谢】

数据下载:http://yann.lecun.com/exdb/mnist/

主要参考:

RandomForest 随机森林总结:https://www.cnblogs.com/hrlnw/p/3850459.html

OpenCV:随机决策森林CvRTrees使用实例:https://blog.csdn.net/u010002704/article/details/43829573?utm_source=blogxgwz1(C++实现)

OpenCV中随机森林的实现与字符识别例子:https://blog.csdn.net/holybin/article/details/25708347(C++实现)

随机森林算法(RandomForest)实现MNIST手写体数字识别:https://blog.csdn.net/Barry_J/article/details/81902266(C++实现)

详解 MNIST 数据集:https://blog.csdn.net/simple_the_best/article/details/75267863(Python实现)

Scikit-Learn学习笔记——用随机森林识别手写数字:https://blog.csdn.net/jasonzhoujx/article/details/81911799(Python实现)

在Kaggle手写数字数据集上使用Spark MLlib的RandomForest进行手写数字识别:https://blog.csdn.net/LXYTSOS/article/details/51387355(没看懂)

scikit-learn中随机森林使用详解:https://blog.csdn.net/jeryjeryjery/article/details/78882661(简单,但没看懂)

没成功,主要因为不知道该把数据放在哪,同时也不会改路径。恳请各位大佬帮忙解答,非常感谢

猜你喜欢

转载自blog.csdn.net/weixin_42135145/article/details/84959937