Baggging
概述
bagging又叫套袋法,集成学习的一种。
简单来说是这样的:
我们有了训练集T,有放回地取数据至集合T1中,再有放回地取数据到T2中,……,有放回地取数据至Tk中;
这样我们就有了k个训练集,对于每一个训练集分别训练(可用同一种方法,也可也不同方法),我们就有了k个模型;
对于分类问题,采用投票的方式确定最终的分类,对于回归问题,取均值作为最终的预测数据。
当然bagging最终不一定能得到更好的效果,但大多数时候是可以的。
sklearn实现bagging
import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn import tree
from sklearn.ensemble import BaggingClassifier
# 导入数据
iris = datasets.load_iris()
xdata = iris.data[:,:2]
ydata = iris.target
# 训练测试拆分
x_train,x_test,y_train,y_test = train_test_split(xdata,ydata)
# 画图函数
def plot(model):
# 获取数据范围
x_min,x_max = xdata[:,0].min()-1,xdata[:,0].max()+1
y_min,y_max = xdata[:,1].min()-1,xdata[:,1].max()+1
# 生成网格矩阵
xx,yy = np.meshgrid(np.arange(x_min,x_max,0.02),
np.arange(y_min,y_max,0.02))
z = model.predict(np.c_[xx.ravel(),yy.ravel()])
z = z.reshape(xx.shape)
# 等高线图
cs = plt.contourf(xx,yy,z)
# 建立bagging模型
dtree = tree.DecisionTreeClassifier()
bagging_dtree = BaggingClassifier(dtree,n_estimators=100)
bagging_dtree.fit(x_train,y_train)
plot(bagging_dtree)
plt.scatter(xdata[:,0],xdata[:,1],c=ydata)
plt.show()