随机森林原理及使用

集成算法

Sklearn中的集成算法
  • sklearn中的集成算法模块ensemble

RandomForestClassifier
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=None, random_state=None, verbose=0, warm_start=False, 												 class_weight=None)

重要参数

n_estimators

%matplotlib inline
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import load_wine

wine = load_wine()

#实例化
#训练集带入实例化的模型去进行训练,使用的接口是fit
#使用其他接口将测试集导入我们训练好的模型,去获取我们希望过去的结果(score.Y_test)
from sklearn.model_selection import train_test_split
Xtrain, Xtest, Ytrain, Ytest = train_test_split(wine.data,wine.target,test_size=0.3)
 
clf = DecisionTreeClassifier(random_state=0)
rfc = RandomForestClassifier(random_state=0)
clf = clf.fit(Xtrain,Ytrain)
rfc = rfc.fit(Xtrain,Ytrain)
score_c = clf.score(Xtest,Ytest)
score_r = rfc.score(Xtest,Ytest)
 
print("Single Tree:{}".format(score_c)
      ,"Random Forest:{}".format(score_r)
     )
#Single Tree:0.7962962962962963 Random Forest:0.9444444444444444

#交叉验证:是数据集划分为n分,依次取每一份做测试集,每n-1份做训练集,多次训练模型以观测模型稳定性的方法
 
from sklearn.model_selection import cross_val_score
import matplotlib.pyplot as plt
 
rfc = RandomForestClassifier(n_estimators=25)
rfc_s = cross_val_score(rfc,wine.data,wine.target,cv=10)
 
clf = DecisionTreeClassifier()
clf_s = cross_val_score(clf,wine.data,wine.target,cv=10)
 
plt.plot(range(1,11),rfc_s,label = "RandomForest")
plt.plot(range(1,11),clf_s,label = "Decision Tree")
plt.legend()
plt.show()

在这里插入图片描述

#绘制n_estimators的学习曲线
superpa = []
for i in range(200):
    rfc = RandomForestClassifier(n_estimators的学习曲线=i+1,n_jobs=-1)
    rfc_s = cross_val_score(rfc,wine.data,wine.target,cv=10).mean()
    superpa.append(rfc_s)
print(max(superpa),superpa.index(max(superpa))+1)#打印出:最高精确度取值,max(superpa))+1指的是森林数目的数量n_estimators
plt.figure(figsize=[20,5])
plt.plot(range(1,201),superpa)
plt.show()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3X8KFCK0-1631694780595)(data:image/png;base64,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)]

sklearn中的分类树DecisionTreeClassifier自带随机性,所以随机森 林中的树天生就都是不一样的。

决策树从最重要的特征中随机选择出一个特征来进行分枝,因此每次生成的决策树都不一样,这个功能由参数random_state控制。 随机森林中其实也有random_state,用法和分类树中相似,只不过在分类树中,一个random_state只控制生成一 棵树,而随机森林中的random_state控制的是生成森林的模式,而非让一个森林中只有一棵树。

bootstrap & oob_score

#无需划分训练集和测试集
rfc = RandomForestClassifier(n_estimators=25,oob_score=True)
rfc = rfc.fit(wine.data,wine.target)

#重要属性oob_score_
rfc.oob_score_
#0.9831460674157303

重要属性和接口

RandomForestRegressor
class sklearn.ensemble.RandomForestRegressor (n_estimators=’warn’, criterion=’mse’, 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)

案例:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.datasets import load_boston
from sklearn.impute import SimpleImputer
from sklearn.ensemble import RandomForestRegressor
from sklearn.model_selection import cross_val_score

dataset = load_boston()

X_full, y_full = dataset.data, dataset.target
n_samples = X_full.shape[0]
n_features = X_full.shape[1]

#使用均值进行填补
from sklearn.impute import SimpleImputer
imp_mean = SimpleImputer(missing_values=np.nan, strategy='mean')#实例化
X_missing_mean = imp_mean.fit_transform(X_missing)#特殊的接口fit_transform = 训练fit + 导出predict
#pd.DataFrame(X_missing_mean).isnull()#但是数据量大的时候还是看不全
#布尔值False = 0, True = 1 
# pd.DataFrame(X_missing_mean).isnull().sum()#如果求和为0可以彻底确认是否有NaN

#使用0进行填补
imp_0 = SimpleImputer(missing_values=np.nan, strategy="constant",fill_value=0)#constant指的是常数
X_missing_0 = imp_0.fit_transform(X_missing)
调参思路
  1. 第一步是要找准目标:我们要做什么

    这个目标是提升 某个模型评估指标,比如对于随机森林来说,我们想要提升的是模型在未知数据上的准确率(由score或 oob_score_来衡量)。找准了这个目标,我们就需要思考:模型在未知数据上的准确率受什么因素影响?在机器学 习中,我们用来衡量模型在未知数据上的准确率的指标,叫做泛化误差(Genelization error)

    当模型太复杂,模型就会过拟合,泛化能力就不够,所以泛化误差大。当模型太简单,模型就会欠拟合,拟合能力 就不够,所以误差也会大。只有当模型的复杂度刚刚好的才能够达到泛化误差最小的目标

    image-20210915161726943在这里插入图片描述

    各参数对模型影响程度的排序

  2. 偏差 vs 方差

***

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
随机森林Random Forest)是一种集成学习算法,它基于决策树构建多个决策树,并通过投票或平均的方式来进行预测。随机森林原理是通过集成多个决策树来降低过拟合风险,并提高预测的准确性。 下面是随机森林算法的基本原理: 1. 随机采样:随机森林算法在每个决策树的构建过程中,对训练数据进行有放回的随机采样。这意味着每个决策树的训练集是通过对原始训练集进行有放回采样得到的,这样可以保证每个训练集都是略有不同的。 2. 随机特征选择:在每个决策树的节点分裂过程中,随机森林算法只考虑一个随机选择的特征子集。这样可以避免某些特征占据主导地位,增加模型的多样性。 3. 决策树构建:对于每个决策树,随机森林算法使用训练集进行递归地分割,直到达到终止条件。每个节点上的特征选择和分割过程与普通决策树算法相似。 4. 预测和投票:对于分类问题,随机森林算法通过投票的方式来进行预测。每个决策树都会给出一个预测结果,最终的预测结果是得票最多的类别。对于回归问题,随机森林算法通过对各个决策树的预测结果取平均来进行预测。 随机森林算法的优点包括:具有较好的泛化能力,对特征空间的线性和非线性关系都能较好地刻画,对异常值和噪声具有较好的鲁棒性。同时,随机森林算法也可以进行特征重要性评估,帮助我们了解哪些特征对预测的贡献更大。 随机森林算法在机器学习中有广泛的应用,包括分类、回归、特征选择等领域。它通常能够取得较好的预测性能,并且相对于单个决策树算法来说,能够减少过拟合的风险。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

顾十方

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值