sklearn随机森林的参数有哪些

2023-05-17

这篇文章主要介绍“sklearn随机森林的参数有哪些”,在日常操作中,相信很多人在sklearn随机森林的参数有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”sklearn随机森林的参数有哪些”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

随机森林

      随机森林是一个元估计器,它适合数据集的各个子样本上的多个决策树分类器,并使用平均值来提高预测精度和控制过度拟合。子样本大小始终与原始输入样本大小相同,但如果bootstrap = True(默认值),则会使用替换来绘制样本。
先看这个类的参数:

class sklearn.ensemble.RandomForestClassifier(n_estimators=10, 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=1, random_state=None, verbose=0, warm_start=False, class_weight=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(max_depth=2, random_state=0)
clf.fit(X, y)
RandomForestClassifier(bootstrap=True, class_weight=None, criterion='gini',
           max_depth=2, max_features='auto', max_leaf_nodes=None,
           min_impurity_decrease=0.0, min_impurity_split=None,
           min_samples_leaf=1, min_samples_split=2,
           min_weight_fraction_leaf=0.0, n_estimators=10, n_jobs=1,
           oob_score=False, random_state=0, verbose=0, warm_start=False)
print(clf.feature_importances_)
[ 0.17287856  0.80608704  0.01884792  0.00218648]
print(clf.predict([[0, 0, 0, 0]]))
[1]

具体参数意义如下:
参数:

  • n_estimators :森林里(决策)树的数目
    integer, optional (default=10) 整数,可选择(默认值为10)

  • criterion : string, optional (default=”gini”) 字符串,可选择(默认值为“gini”)。
    衡量分裂质量的性能(函数)。受支持的标准是基尼不纯度的"gini",和信息增益的"entropy"(熵)。
    注意:这个参数是特定树的。

  • max_features : int, float, string or None, optional (default=”auto”) 整数,浮点数,字符串或者无值,可选的(默认值为"auto")
    寻找最佳分割时需要考虑的特征数目:
    &如果是int,就要考虑每一次分割处的max_feature特征
    &如果是float,那么max_features就是一个百分比,那么(max_feature*n_features)特征整数值是在每个分割处考虑的。
    &如果是auto,那么max_features=sqrt(n_features),即n_features的平方根值。
    &如果是log2,那么max_features=log2(n_features)
    &如果是None,那么max_features=n_features
    注意:寻找分割点不会停止,直到找到最少一个有效的节点划分区,即使它需要有效检查超过max_features的特征。

  • max_depth : integer or None, optional (default=None) 整数或者无值,可选的(默认为None)
    (决策)树的最大深度。如果值为None,那么会扩展节点,直到所有的叶子是纯净的,或者直到所有叶子包含少于min_sample_split的样本。

  • min_samples_split : int, float, optional (default=2) 整数,浮点数,可选的(默认值为2)
    分割内部节点所需要的最小样本数量:
    ~如果为int,那么考虑min_samples_split作为最小的数字。
    ~如果为float,那么min_samples_split是一个百分比,并且把ceil(min_samples_split*n_samples)是每一个分割最小的样本数量。
    在版本0.18中更改:为百分比添加浮点值。

  • min_samples_leaf : int, float, optional (default=1) 整数,浮点数,可选的(默认值为1)
    需要在叶子结点上的最小样本数量:
    ~如果为int,那么考虑min_samples_leaf作为最小的数字。
    ~如果为float,那么min_samples_leaf为一个百分比,并且ceil(min_samples_leaf*n_samples)是每一个节点的最小样本数量。
    在版本0.18中更改:为百分比添加浮点值。

  • min_weight_fraction_leaf : float, optional (default=0.) 浮点数,可选的(默认值是0.0)
    一个叶子节点所需要的权重总和(所有的输入样本)的最小加权分数。当sample_weight没有提供时,样本具有相同的权重

  • max_leaf_nodes : int or None, optional (default=None) 整数或者无值,可选的(默认值为None)
    以最优的方法使用max_leaf_nodes来生长树。最好的节点被定义为不纯度上的相对减少。如果为None,那么不限制叶子节点的数量。

  • min_impurity_split : float, 浮点数
    树早期生长的阈值。如果一个节点的不纯度超过阈值那么这个节点将会分裂,否则它还是一片叶子。

  • min_impurity_decrease : float, optional (default=0.) 浮点数,可选的(默认值为0)

  • bootstrap : boolean, optional (default=True) 布尔值,可选的(默认值为True)建立决策树时,是否使用有放回抽样。

  • oob_score : bool (default=False) bool,(默认值为False)是否使用袋外样本来估计泛化精度。

  • n_jobs : integer, optional (default=1) 整数,可选的(默认值为1)用于拟合和预测的并行运行的工作(作业)数量。如果值为-1,那么工作数量被设置为核的数量。

  • random_state : int, RandomState instance or None, optional (default=None) 整数,RandomState实例,或者为None,可选(默认值为None)RandomStateIf int,random_state是随机数生成器使用的种子; 如果是RandomState实例,random_state就是随机数生成器; 如果为None,则随机数生成器是np.random使用的RandomState实例。

  • verbose : int, optional (default=0) 整数,可选的(默认值为0)控制决策树建立过程的冗余度。

  • warm_start : bool, optional (default=False) 布尔值,可选的(默认值为False)当被设置为True时,重新使用之前呼叫的解决方案,用来给全体拟合和添加更多的估计器,反之,仅仅只是为了拟合一个全新的森林。

  • class_weight : dict, list of dicts, “balanced”, 字典,字典序列,"balanced"

属性:

  • estimators_ : list of DecisionTreeClassifier 决策树分类器的序列,拟合的子估计器的集合。

  • classes_ : array of shape = [n_classes] or a list of such arrays 数组维度=[n_classes]的数组或者一个这样数组的序列。类别标签(单一输出问题),或者类别标签的数组序列(多输出问题)。

  • n_classes_ : int or list 整数或者序列,类别的数量(单输出问题),或者一个序列,包含每一个输出的类别数量(多输出问题)

  • n_features_ : int 整数,执行拟合时的特征数量

  • n_outputs_ : int 整数,执行拟合时的输出数量。

  • feature_importances_ : array of shape = [n_features] 维度等于n_features的数组,特征的重要性(值越高,特征越重要)

  • oob_score_ : float 浮点数,使用袋外估计获得的训练数据集的得分。

  • oob_decision_function_ : array of shape = [n_samples, n_classes] 维度=[n_samples,n_classes]的数组,在训练集上用袋外估计计算的决策函数。如果n_estimators很小的话,那么在有放回抽样中,一个数据点也不会被忽略是可能的。在这种情况下,oob_decision_function_ 可能包括NaN。

注意点:

参数的默认值控制决策树的大小(例如,max_depth,,min_samples_leaf等等),导致完全的生长和在某些数据集上可能非常大的未修剪的树。为了降低内容消耗,决策树的复杂度和大小应该通过设置这些参数值来控制。

这些特征总是在每个分割中随机排列。 因此,即使使用相同的训练数据,max_features = n_features和bootstrap = False,如果在搜索最佳分割期间所列举的若干分割的准则的改进是相同的,那么找到的最佳分割点可能会不同。为了在拟合过程中获得一个确定的行为,random_state将不得不被修正。

方法:

apply(X)   Apply trees in the forest to X, return leaf indices.
decision_path(X)   Return the decision path in the forest
fit(X, y[, sample_weight])     Build a forest of trees from the training set (X, y).
get_params([deep])    Get parameters for this estimator.
predict(X)     Predict class for X.
predict_log_proba(X)     Predict class log-probabilities for X.
predict_proba(X)      Predict class probabilities for X.
score(X, y[, sample_weight])      Returns the mean accuracy on the given test data and labels.
set_params(**params)     Set the parameters of this estimator.

到此,关于“sklearn随机森林的参数有哪些”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注本站网站,小编会继续努力为大家带来更多实用的文章!

《sklearn随机森林的参数有哪些.doc》

下载本文的Word格式文档,以方便收藏与打印。