欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

集成算法 - 随机森林

程序员文章站 2022-07-13 08:53:23
...

这一节,我们来聊聊随机森林算法,虽然我对这些算法的理解也不是很深,但还是决定写一写。首先,集成算法是指多种算法的集合,因为单一的算法在处理某种问题时,可能会有所限制,集成算法会综合多种算法的结果,得到一个均值,效果往往会比单一算法好一些。
前面我们讨论过决策树,那随机森林就不难理解,它是由多个决策树组合而成的,可以是1棵树,10棵树,100棵树,甚至上千棵树。前面我们了解了决策树的构造过程,那么随机森林就是构造很多棵决策树,每棵决策树各不相同。那么如何保证构造出来的每棵决策树都不一样呢?这就要使用不同的数据或不同的特征去构造每一棵树,我们可以从原始数据集中按照一定比例随机选择数据或特征去构造决策树。假设我有10个样本数据,每个样本数据又有5个特征,那么我在构造决策树时可以每次随机使用60%的样本数据或特征。
这个算法没有数学公式上的推理,理解起来还是比较容易的,就是决策树的组合。

随机森林算法API文档

sklearn.ensemble.RandomForestClassifier(n_estimators=’warn’, criterion=’gini’, max_depth=None,
 min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features=’auto’, 
max_leaf_nodes=None, min_impurity_decrease=0.0, min_impurity_split=None, bootstrap=True, 
oob_score=False, n_jobs=None, random_state=None, verbose=0, warm_start=False, class_weight=None)

随机森林算法主要参数解释


n_estimators:决策树的个数,整型数值,可自己指定,默认值为10。
criterion:分类结点的选择标准,可设置为基尼系数或熵,默认为基尼系数。
max_depth:树的最大深度,可指定数值。
min_samples_split:最小可分割结点的样本数,默认为2,整型或浮点型数值。
min_samples_leaf:叶子结点的最小样本个数,默认为1,整型或浮点型数值。
max_leaf_nodes:整型值,可指定数值,默认为None,如果为None,则叶子结点可以有无限多个。


样例演示

from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import make_classification
#随机生成一些数据供算法使用
X,y = make_classification(n_samples = 1000,n_features = 4,n_informative = 2,
n_redundant = 0,random_state = 0,shuffle = False)
#引入随机森林算法并指定部分参数
clf = RandomForestClassifier(n_estimators = 100,max_depth=2)
#训练模型
clf.fit(X,y)
#使用clf对未知数据进行分类预测
clf.predict([[1,2,3,4]])
[1]

随机森林算法的属性

#展示各个属性的重要程度
clf.feature_importances_
array([0.13155947, 0.78066644, 0.0375435 , 0.05023059])

扩展学习:前面我们使用过KNN,逻辑回归,决策树算法对鸢尾花数据集的做过分类处理,并得出了它们的预测精度,这一节我们可以使用随机森林算法再做一次预测,并比较随机森林是否较决策树算法有效果提升。