重要参数
1.控制基评估器的参数
criterion 不纯度的衡量指标,有基尼系数和信息熵两种选择
max_depth 树的最大深度,超过最大深度的树枝都会被剪掉 左
min_samples_leaf 一个节点在分枝后的每个子节点都必须包含至少min_samples_leaf个训练本,否则分枝就不会发生 左
min_samples_split 一个节点必须要包含至少min_samples_split个训练样本这个节点才允许被分枝,否则分枝就不会发生 左
max_features 限制分枝时考虑的特征个数,超过限制个数的特征都会被舍弃,默认值为总特征个数开平方取整 左右
min_impurity_decrease 限制信息增益的大小,信息增益小于设定数值的分枝不会发生
2.n_estimators
这是森林中树木的数量,即基评估器的数量。这个参数对随机森林模型的精确性影响是单调的,n_estimators越大,模型的效果往往越好。但是相应的,任何模型都有决策边界,n_estimators达到一定的程度之后,随机森林的精确性往往不在上升或开始波动
3.random_state
设置之后每次生成的森林都一样,每棵树的random_state也固定了
4.bootstrap
bootstrap参数默认True,代表采用有放回的随机抽样技术,通常不会被设置为false
5.oob_score
假设有n个样本,抽取n次,每一个样本被抽到的概率1-(1-1/n)**n
当n足够大时,这个概率收敛于1-(1/e),约等于0.632。因此,会有约37%的训练数据被浪费掉,没有参与建模,这些数据被称为袋外数据(out of bag data,简写为oob)。除了我们最开始就划分好的测试集之外,这些数据也可以被用来作为集成算法的测试集。也就是说,在使用随机森林时,我们可以不划分测试集和训练集,只需要用袋外数据来测试我们的模型即可。当然,这也不是绝对的,当n和n_estimators都不够大的时候,很可能就没有数据掉落在袋外,自然也就无法使用oob数据来测试模型了。
如果希望用袋外数据来测试,则需要在实例化时就将oob_score这个参数调整为True
重要属性
1.estimators_
随机森林的重要属性之一:estimators,查看森林中树的状况,
rfc.estimators_[i].random_state 第i课树的random_state参数
2.oob_score_
来查看我们的在袋外数据上测试的结果
rfc.oob_score_
重要接口
1.apply
返回索引
2.fit
训练模型
3.predict
预测模型
4.score
模型得分,分类返回准确度accuracy,回归默认返回R方,我们一般设置为‘负均方误差’ neg_mean_squared_error
5.predict_proba
每个测试样本对应的被分到每一类标签的概率,标签有几个分类就返回几个概率
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.datasets import load_breast_cancer
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import GridSearchCV , cross_val_score
data = load_breast_cancer()
print(data.data.shape, data.target.shape) # (569,30) (569,)
# 建模
# 分类树scoring默认accuracy 回归树默认R方
rfc = RandomForestClassifier(n_estimators=100,random_state=90)
score_pre = cross_val_score(rfc,data.data,data.target,cv=10,scoring='accuracy').mean()
print(score_pre) # 0.9666925935528475
# n_estimators选择
scorel <