机器学习——集成学习Bagging算法(机器学习实战)

506 阅读2分钟

「这是我参与11月更文挑战的第5天,活动详情查看:2021最后一次更文挑战

集成学习背景

一个弱学习器预测的结果往往不能准确的预测结果,存在很大的误差。这时可以选择使用集成学习来提高正确率。 集成学习通过构建并结合多个学习期来完成学习任务,有时也被称为多分类器系统。

集成学习的一般结构:先产生一组“个体学习器”,再用某种策略将它们结合起来,个体学习期通常由一个现有的学习算法从训练数据产生,例如C4.5决策树算法、BP神经网络算法等,此时集成中只包含同种类型的个体学习器,例如“决策树集成”中全是决策树,“神经网络集成”中全是神经网络,这样的集成是同质的。同质集成中的个体学习器也称为“基学习器”,相应的学习算法称为“基学习算法”。Bagging集成算法的示意图如下。

image.png Bagging集成算法可看作是投票法,假设一百个学习器,50以上认为结果是1,其他的认为结果是0,那么多数获胜,最终结果为1.

集成学习代码实现

去10个数据,其标签只有1和-1,使用集成学习后,得出学习后的标签,与原标签进行对比。

import pandas as pd
from sklearn.tree import DecisionTreeClassifier
import numpy as np
df = pd.DataFrame([[0,1],[1,1],[2,1],[3,-1],[4,-1],
                   [5,-1],[6,1],[7,1],[8,1],[9,-1]])
M =[] # 存储决策树模型的数组
n_trees = 20  # 设置树的颗数
for i in range(n_trees):
    tmp = df.sample(frac=1,replace=True)# 对样本进行采样,目的是建造不同的树
    X = tmp.iloc[:,:-1]# 构造X
    Y = tmp.iloc[:,-1]# 构造Y
    model =DecisionTreeClassifier(max_depth=2) # 新建决策树模型
    model.fit(X,Y)
    # 将决策树模型加入数组
    M.append(model)
    # 打印每个基础模型的效果
X = df.iloc[:,:-1]# 获取全部数据的X
Y = df.iloc[:,-1] # 获取全部数据的Y
res = 0  # 初始化全零向量
for i in M: # 遍历模型数组
    res += i.predict(X) # 将每个模型预测值叠加到res变量
# 取平均输出最终对每个样本标签的预测值
res = np.sign(res)
print(res)

结果如下:

image.png