bagging代码_集成学习系列-bagging(2)

57984fb4d430252b6c4b0b7add34e528.png

先介绍了为什么使用集成学习,以及集成学习有哪几种形式,下边就先讲以下bagging模式。

jessie:集成学习系列-理论(1)​zhuanlan.zhihu.com
ca38c916940cc6287fcf93df632db091.png

大纲

  1. bagging的随机森林原理
  2. 优缺点
  3. 随机森林代码实现

1.随机森林的基本原理

随机森林以决策树作为基学习器,多棵决策树组合构成随即森林。采用又放回采样的方法得到训练样本,随机的实质是随机取样本,随机选特征,森林指的是多棵决策树组合到一起。

多棵树同时进行判断,并以少数服从多数的方式输出最后结果,以此提高准确度!解决决策树的过拟合问题。

为什么随意样本和特征?

每棵树的输入样本都不一样,都是随机从总的样本中取出来的,每棵决策树的特征都不一样,随机从总的特征中选择的。

为什么有放回采样?

每棵树的训练样本可以不一样,但是如果无放回的话,会使数据出现偏差影响,每棵树的训练出现偏差。

2.随机森林优缺点

优点:可并行,不易过拟合。

缺点:取值划分较多的属性会对随机森林产生更大的影响。

代码实现

随机取样本

 def get_bootstrap_data(self, X, Y):

        # 通过bootstrap的方式获得n_estimators组数据
        # get int(n_estimators) datas by bootstrap

        m = X.shape[0]
        Y = Y.reshape(m, 1)

        # 合并X和Y,方便bootstrap (conbine X and Y)
        X_Y = np.hstack((X, Y))
        np.random.shuffle(X_Y)

        data_sets = []
        for _ in range(self.n_estimators):
            idm = np.random.choice(m, m, replace=True)
            bootstrap_X_Y = X_Y[idm, :]
            bootstrap_X = bootstrap_X_Y[:, :-1]
            bootstrap_Y = bootstrap_X_Y[:, -1:]
            data_sets.append([bootstrap_X, bootstrap_Y])
        return data_sets
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值