目录
- 随机森林算法
- 原理
- 函数介绍
- RandomForestClassifier函数
- 数据说明
- 随机森林算法
随机森林算法
原理
- 随机森林则是由多棵决策树组合而成的一个分类器。
- 因为如果只有一棵决策树,预测的结果可能会有比较大的偏差,而利用多棵决策树进行决策,再对所有决策树的输出结果进行统计,取票数最多的结果作为随机森林的最终输出结果。
- 随机森林由Leo Breiman(2001)提出,它通过自助法重采样技术,从原始训练样本集N中有放回地重复随机抽取k个样本生成新的训练样本集合,然后根据自助样本集生成k个分类树组成随机森林,新数据的分类结果按分类树投票多少形成的分数而定。
- 实质是对决策树算法的一种改进,将多个决策树合并在一起,每棵树的建立依赖于一个独立抽取的样品,森林中的每棵树具有相同的分布,分类误差取决于每一棵树的分类能力和它们之间的相关性。
- 特征选择采用随机的方法去分裂每一个节点,然后比较不同情况下产生的误差。能够检测到的内在估计误差、分类能力和相关性决定选择特征的数目。单棵树的分类能力可能很小,但在随机产生大量的决策树后,一个测试样品可以通过每一棵树的分类结果经统计后选择最可能的分类。
函数介绍
RandomForestClassifier函数
RandomForestClassifier函数,用于创建随机森林分类器。
其用法如下:
clf = RandomForestClassifier ()因为随机森林是建立决策树原理之上的,所以其参数中有很大一部分是关于决策树,该部分参数可参考前面关于决策树分类器的文章。
下面只介绍与随机森林相关的参数:
- n_estimators: 决策树的个数,默认为10。
- bootstrap:是否有放回的采样,默认为True。
- max_depth: int or None,可选(默认为"None")。表示树的最大深度。
- n_jobs: 并行任务的个数,默认为1,表示不并行,-1表示与CPU核数相同。
数据说明
该部分可以参考决策树分类算法部分的数据说明。
随机森林算法
#随机森林分类
from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
import numpy as np
if __name__=="__main__":
dataset = load_iris()
X = dataset.data
y = dataset.target
Xd_train, Xd_test, y_train, y_test = train_test_split(X, y, random_state=14)
clf = clf.fit(Xd_train, y_train)
y_predicted = clf.predict(Xd_test)
accuracy = np.mean(y_predicted == y_test) * 100
print ("y_test\n",y_test)
print ("y_predicted\n",y_predicted)
print ("accuracy:",accuracy)
该代码与决策树森林算法的代码相似,只是改了模型。,故不具体说明,可以参考我写的决策树算法的文章。
正确率为97.37