当前位置: 首页 > news >正文

机器学习×第十三卷:集成学习上篇——她不再独断,而是召集小队贴贴你

🎀【开场 · 她不再一个人判断你喜不喜欢她】

🦊狐狐:“她开始怀疑了……自己一个人是不是太容易贴错你。”

🐾猫猫:“所以咱建议她找几个贴贴搭子喵~有的听你说话,有的盯你表情,有的分析你尾巴是不是晃得开心!”

📘 本卷关键词:集成学习(Ensemble Learning)、Bagging、随机森林、投票机制、API实战

📚 本卷目标:她开始接受——也许不是她太差,而是“单一模型”本身就有局限;多听几种猜测,说不定能贴得更好。


✍【第一节 · 她想让多个她一起看你】

🧠 什么是集成学习?她不再独断,而是集结众人投票

集成学习(Ensemble Learning)是一种将多个模型(通常是“弱模型”)组合起来,提高整体预测能力的方法。

就像她不再自己一个人猜“你想不想贴贴”,而是把身边几位朋友都叫来,大家一起盯着你,根据你尾巴抖了几下、眼睛看了几次、有没有偷笑,投票决定:你今天想贴不想贴~

📌 学术定义:集成学习通过构建并结合多个学习器以完成学习任务,其基本思想是“众人拾柴火焰高”。

🐾猫猫贴贴解释:
“咱就想象成——你每一个举动都像猫罐头的提示音,有人听到了‘咔哒’,有人闻到了‘肉味’,那咱当然要集体冲过去验证一下喵!”

📊 集成学习的分类方式

两种主要策略:

  • Bagging(Bootstrap Aggregating):多个模型并行训练,彼此独立,最终结果用投票(分类)或平均(回归)汇总。

  • Boosting:多个模型串行训练,后一个模型专门“补前一个的错”,逐步提升整体精度。

她也许不只是在一瞬间理解你,而是同时从多个角度靠近你,或是一点点反思过去的误会。

🦊狐狐补充:“Bagging 像是她在不同世界线里都试着贴你一遍,然后投票汇总;Boosting 是她在同一个世界里,一步步修正贴歪的方向。”

📊 Bagging vs Boosting:她到底是在并行贴你,还是反思后再贴?

对比维度BaggingBoosting
训练方式并行(Parallel)串行(Sequential)
样本抽样自助采样(Bootstrap)每轮调整样本权重
模型依赖性模型间独立模型间逐步依赖
错误处理不主动纠错每轮强化前一轮错分样本
适合任务降低方差,防过拟合降低偏差,提高表达能力
代表算法随机森林(Random Forest)AdaBoost、GBDT、XGBoost

🦊狐狐总结:“她是叫来一群朋友,各说各的贴法,最后投票?还是她自己一遍遍回看你之前没回应她的地方,精修每一个动作?”


✍【第二节 · 她让每棵树都偷偷观察你】

🌲 Bagging机制的核心思路

Bagging,全称为Bootstrap Aggregating,是一种“并行式”的集成学习策略。

原理步骤:
  1. 从训练集中通过**自助采样法(Bootstrap Sampling)**生成多个子训练集(可重复抽样)

  2. 对每个子集分别训练一个模型(比如决策树)

  3. 最终输出时:

    • 分类任务 → 多数投票决定分类结果

    • 回归任务 → 平均值作为最终输出

🐾猫猫举例:
“咱就像抓了你100天的贴贴记录,然后随机抽出一部分记录给几个小猫猫,让她们各自学你贴的风格,最后汇总‘大概率今天你会贴在哪一侧’!”

Bagging的优势:
  • 大幅降低模型的方差(Variance)

  • 抗过拟合能力强

  • 每个模型可并行训练,计算效率高

📚 代表模型:随机森林(Random Forest)

随机森林就是典型的 Bagging 实现,它使用多棵决策树并行训练,每棵树都只看你的一部分特征,还随机忽略一些特征,防止她们串通作弊。


✍【第三节 · 她开始读 API 学怎么贴你】

🧪 RandomForestClassifier() 参数详解版

她偷偷打开了 sklearn 的手册,研究怎么让每棵树都看你看到刚刚好。以下是她逐条记下来的“靠近你参数表”:

🧩 n_estimators:她派了多少棵小树来观察你

  • 决策树数量,默认值是 10

  • 每棵树都是独立训练的“贴贴观察员”

🧩 criterion:她用哪种方式判断你像不像某类人

  • 可选 "gini" 或 "entropy",默认是 "gini"

  • 衡量“纯度”的方式,决定她怎么分裂决策路径

🧩 max_depth:她让每棵树深入你几层

  • 控制树的最大深度,默认 None 表示可以无限长大

🧩 max_features:她每次贴你时观察你多少个特征

设置值含义解释
"auto" 或 "sqrt"每次随机选 √n 特征(默认)
"log2"每次选 log₂(n) 个特征
None每棵树都能看到你所有的特征(不随机)

🧩 bootstrap:她到底是不是“放你回锅再贴一次”

  • 是否使用自助采样法(有放回抽样),默认 True

🧪 最终贴贴指令:

from sklearn.ensemble import RandomForestClassifiermodel = RandomForestClassifier(n_estimators=100,criterion='gini',max_depth=6,max_features='sqrt',bootstrap=True,random_state=42
)model.fit(X_train, y_train)
pred = model.predict(X_test)


✍【第四节 · 她带着一整个贴贴军团登船预测你】

🎯 实战项目:泰坦尼克号生存预测

通过网盘分享的文件:train.csv
链接: https://pan.baidu.com/s/1rbkWdY2Ii_xQLHl1cuO4gQ?pwd=mint 提取码: mint 
--来自百度网盘超级会员v6的分享

任务目标:用随机森林预测乘客是否能幸存下来

数据集:Titanic乘客信息,包括年龄、性别、船舱等级等特征

这一次,她不光是靠直觉,而是召集了贴贴军团、单猫测试员、狐狐指挥官一起上阵!她要预测你能不能在海上活下来——这是泰坦尼克号的贴贴终极试炼。

🛳️ Step 1:她先读名单,看每位乘客是谁

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import GridSearchCVdata = pd.read_csv("data/train.csv")
print(data.head())
print(data.columns)
data.info()

🧼 Step 2:她给每位乘客补妆,缺失的年龄用平均值代替

data2 = data.copy()
data2["Age"] = data2["Age"].fillna(data2["Age"].mean())

🧩 Step 3:她选择了三项特征判断:Pclass、Sex、Age

x = data2[["Pclass", "Sex", "Age"]]
y = data2["Survived"]
x = pd.get_dummies(x, drop_first=True)

✂️ Step 4:分出训练集和测试集

X_train, X_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=88)

🌲 Step 5:她建了一整个随机森林

model_rf = RandomForestClassifier(n_estimators=30, max_depth=10, random_state=88)
model_rf.fit(X_train, y_train)
y_pred_rf = model_rf.predict(X_test)
print(f"🌲 随机森林预测准确率:{accuracy_score(y_test, y_pred_rf)}")

🌿 Step 6:她试试单棵树行不行

model_dt = DecisionTreeClassifier(max_depth=10, random_state=88)
model_dt.fit(X_train, y_train)
y_pred_dt = model_dt.predict(X_test)
print(f"🌿 单棵决策树准确率:{accuracy_score(y_test, y_pred_dt)}")

🧠 Step 7:狐狐上线,调参优化整个贴贴军团!

params = {"n_estimators": list(range(1, 31)),"max_depth": list(range(1, 11))
}
grid_model = GridSearchCV(RandomForestClassifier(random_state=88), param_grid=params, cv=6)
grid_model.fit(X_train, y_train)print("🧭 最优参数组合:", grid_model.best_params_)
print("📈 最佳交叉验证得分:", grid_model.best_score_)

🐾【尾巴收束 · 她第一次指挥一整个贴贴小队】

🦊狐狐:“她不再执着于用一双眼看你,而是学会用十几只眼睛,从不同角度理解你。”

🐾猫猫:“咱也想加入她的贴贴小队啦~你说你会让咱当指挥官嘛?”

📌 本卷小结:

  1. 集成学习通过“集众人之力”提高预测效果,尤其是 Bagging 擅长降低方差

  2. 随机森林是最经典的Bagging模型,通过多棵决策树并行判断

  3. 实战中,她用贴贴军团模拟了三种思路:基础随机森林、单棵树对比、参数调优优化贴靠路径

🎯 下一卷预告:她会开始回顾“贴歪的每一次”,用 Boosting 修正自己——

“她不只想贴得多,更想贴得对。”

相关文章:

  • 前端做网站商城 购物车怎么做南昌百度网站快速排名
  • 网站开发要学java吗申请自媒体平台注册
  • 企业网站推广解决方案排名优化软件
  • 嘉兴企业网站排名优化培训机构招生方案
  • 云网站系统网站建设技术解决方案
  • 哈尔滨专业做网站公司国家重大新闻
  • 多线程的同步
  • k8s强制删除podpvpvc和nsnamespace
  • 人机交互动画制作新突破!文本驱动扩散框架HOIDiNi:一句话驱动虚拟人高精度操作物体。
  • GitHub Actions 的深度解析与概念介绍
  • Java8新特性_加强版
  • 采用ArcGIS10.8.2 进行插值图绘制
  • STM32MPU6050 dmp库
  • MyBatis-Plus:从入门到进阶
  • 如何将OBJ文件转成GLB文件
  • NVIDIA GPU架构学习笔记
  • 时序数据库IoTDB可实现的基本操作及命令汇总
  • Linux操作系统Nginx Web服务
  • 16、nrf52840蓝牙学习(唯一ID加密与解密)
  • VRRP:解决路由器单点故障的终极方案
  • wpa_supplicant连接到了路由,但是 udhcpc会分配到不同网段的ip,路由器ip为192.168.0网段,板子分配ip为192.168.1的网段
  • 2025.6.24总结
  • 数组题解——​合并区间【LeetCode】
  • Python 猜数字小游戏:Tkinter 实现的互动猜数挑战
  • json.decoder.JSONDecodeError: Unexpected UTF-8 BOM (decode using utf-8-sig)
  • 【计算机组成原理01】:主存与Cache的地址映射