Python入门教程之随机森林算法的实现

Python 入门教程之随机森林算法的实现

Python 是一种解释型、面向对象、动态数据类型的高级程序设计语言。很多初学者在进行Python 入门时会遇到各种问题,以下就是小编整理的如何使用Python 实现随机森林算法。

什么是随机森林算法? 随机森林算法(Random forest algorithm)是对

bagging 算法的扩展。而bagging 是bootstrap aggregating的缩写,是第一批用于多分类器集成算法。除了仍然根据从训练数据样本建立复合模型之外,随机森林对用做构建树(tree)的数据特征做了一定限制,使得生成的决策树之间没有关联,从而提升算法效果。

Python 实现随机森林算法的步骤有以下两步:

1、分裂次数的计算

千锋教育www.qfedu.com

分类问题的成本函数(cost function)通常是基尼指数(Gini index),即计算由分裂点产生的数据组的纯度(purity)。对于这样二元分类的分类问题来说,指数为 0 表示绝对纯度,说明类值被完美地分为两组。从一棵决策树中找到最佳分裂点需要在训练数据集中对每个输入变量的值做成本评估。

在装袋算法和随机森林中,这个过程是在训练集的样本上执行并替换(放回) 的。因为随机森林对输入的数据要进行行和列的采样。对于行采样,采用有放回的方式,也就是说同一行也许会在样本中被选取和放入不止一次。我们可以考虑创建一个可以自行输入属性的样本,而不是枚举所有输入属性的值以期找到获取成本最低的分裂点,从而对这个过程进行优化。

2、关于声纳数据集的案例研究

在这个部分,我们将把随机森林算法用于声纳数据集。本示例假定声纳数据集的 csv 格式副本已存在于当前工作目录中,文件名为 sonar.all-data.csv 。

首先加载该数据集,将字符串转换成数字,并将输出列从字符串转换成数值 0 和 1. 这个过程是通过辅助函数 load_csv()、str_column_to_float() 和 str_column_to_int() 来分别实现的。

我们将通过 K 折交叉验证(k-fold cross validatio)来预估得到的学习模型在未知数据上的表现。这就意味着我们将创建并评估 K 个模型并预估这 K 个模型的平均误差。评估每一个模型是由分类准确度来体现的。辅助函数

cross_validation_split()、accuracy_metric() 和 evaluate_algorithm() 分别实现了上述功能。

千锋教育www.qfedu.com

装袋算法将通过分类和回归树算法来满足。辅助函数 test_split() 将数据集分割成不同的组;gini_index() 评估每个分裂点; 前文提及的改进过的 get_split() 函数用来获取分裂点; 函数 to_terminal()、split() 和 build_tree() 用以创建单个决策树;predict() 用于预测;subsample() 为训练集建立子样本集;

bagging_predict() 对决策树列表进行预测。

千锋教育www.qfedu.com


© 2024 实用范文网 | 联系我们: webmaster# 6400.net.cn