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

机器学习06 集成学习

集成学习Ensemble Learning是一种机器学习范式,通过构建并结合多个模型来完成学习任务,获得更好的泛化性能.

核心思想:多个模型的集体智慧比单个模型更准确(三个臭皮匠,顶个诸葛亮)

相较于其他基础学习方式如线性回归可能会构建一个多元多项式函数,而集成学习则会组合一堆1次函数,相较于多元多项式的超级个体,集成学习的弱者联盟在能力上相当,但不容易过拟合

可以看做是中西电影的区别吧,超英vs集体英雄,美队vs流浪地球(个人观点)

集成学习的两大核心思想:bagging和boosting

bagging:找一堆小弟来一起干,最后小弟投票选举,或者平均求值

算法思想:有放回的随机抽样产生不同的训练集,从而训练不同的学习器,通过平权投票、多数表决的方式决定预测结果

多个模型独立训练,投票决定结果(稳)

boosting:小弟轮着干,后面的小弟重点关注前一个小弟的不足 

算法思想:每一个训练器重点关注前一个训练器不足的地方进行训练,每一个训练器重点关注前一个训练器不足的地方进行训练

模型逐步改进,加权组合结果(准)

bagging与boosting对比

 bagging算法之一 (代表)随机森林算法

随机森林是基于 Bagging 思想实现的一种集成学习算法,采用决策树模型作为每一个弱学习器。

训练:

  • 有放回的产生训练样本
  • 随机挑选n个特征
  • 训练模型

预测:平权投票,多数表决输出预测结果

数多了就是森林了,每棵树都不一样 

注:随机抽样训练集是为了训练出来的树不一样,有放回的随机抽样是为了树有交集,减少差异,既有交集又有差异数据,更容易发挥投票表决效果

随机森林算法api

随机森林案例之泰坦尼克号案例(幸存者)上传资源平台说有了不让传,自己随便找点数据得了

机器学习数据库,不好用找deepseek再问问

Find Open Datasets and Machine Learning Projects | Kaggle

# 1.导包
# 导入pandas库用于数据处理
import pandas as pd
# 导入train_test_split用于分割数据集
from sklearn.model_selection import train_test_split
# 导入RandomForestClassifier用于创建随机森林分类器
from sklearn.ensemble import RandomForestClassifier
# 导入accuracy_score用于评估模型准确率
from sklearn.metrics import accuracy_score# 2.加载数据
# 从CSV文件中读取数据
data = pd.read_csv("data/train.csv")# 3.了解数据
# 打印数据集的前几行,以了解数据结构
print(data.head())
# 打印数据集的列名,以了解特征名称
print(data.columns)
# 打印数据集的基本信息,包括数据类型和缺失值情况
data.info()# 4.数据 预处理
# 填充缺失值
# 创建数据副本以避免修改原始数据,避免控制台警告
data2 = data.copy()
# 使用年龄的平均值填充缺失的年龄值
data2["Age"] = data2["Age"].fillna(data2["Age"].mean())# 5.特征工程
# 特性选择和标签选择
# 选择Pclass、Sex和Age作为特征,Survived作为标签
x = data2[["Pclass", "Sex", "Age"]]
y = data2["Survived"]
# TODO 注意Sex需要 通过热编码:把字符串转换成数字, drop_first作用是删除第一个多余特征
# 对类别特征进行独热编码,避免字符串特征对模型的影响
x = pd.get_dummies(x, drop_first=True)# 6.切割数据
# 将数据集分割为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=88)# TODO 7.创建随机森林模型
# 初始化随机森林分类器,设置基本的超参数
model = RandomForestClassifier(n_estimators=10, max_depth=10,bootstrap=True,class_weight="balanced")# 8.模型训练
# 使用训练数据拟合模型
model.fit(X_train, y_train)# 9.模型预测
# 使用拟合好的模型对测试数据进行预测
y_pre = model.predict(X_test)
# 打印预测结果和准确率
print(f"打印预测结果{y_pre}")
print(f"打印准确率{accuracy_score(y_test, y_pre)}")

bossting算法之三 Adaboost算法 GBDT算法 XGBoost算法

Adaptive Boosting(自适应提升)基于 Boosting思想实现的一种集成学习算法核心思想是通过逐步提高那些被前一步分类错误的样本的权重来训练一个强分类器。

注: 分类器越准确权重越大,样本难度越难权重越大

 核心代码:实例化单决策树,实例化Adaboost由500颗树构成,数据和训练,打分部分一样

mytree= DecisionTreeClassifier(criterion='entropy', max depth=1, random state=0)
myada = AdaBoostClassifier(base estimator=mytree,n estimators=500, learning, rate=0.1, random state=0)

GBDT算法思想:

通过迭代拟合残差(即真实观测值与当前模型预测值的差异),逐步提升模型精度。每一轮新模型的目标是拟合前一轮的残差,最终将所有弱学习器的预测结果叠加,形成强学习器。

XGBoost算法思想:重点

 

实现步骤

  •     1.计算分支节点上每个特征,每个切分点所对应的分裂方案的增益
  •     2.选择增益最大的方案进行节点分裂
  •     3.如果达到停止条件,则不再分裂,否则重复上述步骤继续进行分裂
  •     4.所有节点都不再继续分裂后,完整第k棵树的训练
http://www.lqws.cn/news/581059.html

相关文章:

  • R1-Searcher使用强化学习增强语言模型解决问题的搜索能力
  • 手机屏暗点缺陷修复及相关液晶线路激光修复原理
  • 超大js文件多层级引用缓存在网络较差的时候无法调用使用问题
  • 设计模式-单例模式
  • FPGA矩阵算法实现
  • PHP安装使用教程
  • 如何在Linux服务器中配置Oracle数据库
  • 大数据(4)-spark
  • vue3 + luckysheet 实现在线编辑Excel
  • stm32 freertos下基于 hal库的模拟I2C驱动实现
  • Python 安装使用教程
  • 【知识】RPC和gRPC
  • 实现ModbusTCP转Profinet网关协议转换功能的网关设备
  • Install Ubuntu 24.04 System
  • reactor-test
  • 如何在 iOS 上线前做好安全防护?IPA 混淆与逆向防护实践详解
  • 什么是IOC(控制反转)?—— 用生活实例解读Spring核心概念
  • 【硬核数学】2.7 理论与现实的鸿沟:深度学习的数值稳定性挑战《从零构建机器学习、深度学习到LLM的数学认知》
  • 使用OpenSSL接口读取pem编码格式文件中的证书
  • Java外观模式实现方式与测试方法
  • 链表题解——设计链表【LeetCode】
  • 大模型-分布式推理简介
  • linux 操作docker的基本命令docker仓库
  • ubuntu下免sudo执行docker
  • 自动驾驶:特斯拉 Model Y全自动驾驶交付的技术原理
  • 笨方法学python -练习6
  • 设计模式精讲 Day 19:观察者模式(Observer Pattern)
  • 设计模式-观察者模式
  • Linux 系统管理:高效运维与性能优化
  • MAC电脑,在 Docker 中已经运行过一次 Oracle 镜像后,再次运行具体操作。