大家好,我是爱酱。前几篇我们讲了聚类、回归等基础任务,这一期我们来聊聊机器学习中提升模型效果的“法宝”——集成方法(Ensemble Methods)。本篇将用Iris鸢尾花分类为例,详细讲解Bagging和Boosting的原理、流程和代码,让你像看层次聚类那篇一样,能一步步跟着学会。
注:本文章含大量数学算式、详细例子说明及代码演示,大量干货,建议先收藏再慢慢观看理解。新频道发展不易,你们的每个赞、收藏跟转发都是我继续分享的动力!
注:本文章颇长近7000字,非常耗时制作,建议先收藏再慢慢观看。新频道发展不易,你们的每个赞、收藏跟转发都是我继续分享的动力!
一、Bagging(以随机森林为例)
1. 原理简介
Bagging(Bootstrap Aggregating)通过对原始数据集有放回地抽样,生成多个训练子集,每个子集训练一个基学习器(通常是决策树),最后对所有模型的预测结果进行投票(分类)或平均(回归),从而提升整体模型的稳定性和准确率。
数学表达:
-
分类:
-
回归:
其中 为第
个基学习器,
为模型数。
2. 详细案例流程(以Iris数据集为例)
数据集
我们用经典的鸢尾花(Iris)数据集,共150条数据,4个特征,3个类别。
Step 1:数据准备
-
加载Iris数据集
-
划分训练集和测试集(如70%训练,30%测试)
Step 2:Bootstrap采样
-
从训练集有放回地随机抽样,生成10个与原训练集等大的子集(假设n_estimators=10)
-
每个子集可能有重复数据,也可能遗漏部分原始样本
Step 3:训练基学习器
-
对每个子集,训练一棵决策树(弱学习器)
Step 4:集成预测
-
对每个测试样本,让10棵树分别预测类别
-
统计10个预测结果,采用多数投票,得出最终预测类别
Step 5:评估结果
-
计算整体准确率,对比单棵树的效果
3. Python代码实现
注:记得要先 pip install scikit-learn Library喔~
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
from sklearn.ensemble import BaggingClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
from sklearn.inspection import DecisionBoundaryDisplay
# 加载数据,只用前两个特征
X, y = load_iris(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X[:, :2], y, test_size=0.3, random_state=42)
# Bagging集成决策树
bagging_model = BaggingClassifier(
estimator=DecisionTreeClassifier(max_depth=2),
n_estimators=10,
random_state=42
)
bagging_model.fit(X_train, y_train)
# 绘制决策

最低0.47元/天 解锁文章
422

被折叠的 条评论
为什么被折叠?



