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

Python梯度提升树

# Python梯度提升树
# 梯度提升 (Gradient Boosting) 通过逐步添加决策树来修正残差
# 是目前表格数据上最强大的机器学习方法之一

# 1. 导入库
import numpy as np
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.ensemble import GradientBoostingClassifier
from sklearn.metrics import accuracy_score, roc_auc_score

# 2. 加载数据
cancer = load_breast_cancer()
X, y = cancer.data, cancer.target
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.3, random_state=42
)

# 3. 基础梯度提升树
gb = GradientBoostingClassifier(
n_estimators=100, learning_rate=0.1, max_depth=3, random_state=42
)
gb.fit(X_train, y_train)
y_prob = gb.predict_proba(X_test)[:, 1]

print(f"=== GradientBoosting ===")
print(f"准确率: {accuracy_score(y_test, gb.predict(X_test)):.4f}")
print(f"AUC: {roc_auc_score(y_test, y_prob):.4f}")

# 4. 学习率的影响
print(f"\n不同学习率的对比 (n_estimators=100):")
for lr in [0.01, 0.05, 0.1, 0.2, 0.5]:
gb_lr = GradientBoostingClassifier(
n_estimators=100, learning_rate=lr, max_depth=3, random_state=42
)
gb_lr.fit(X_train, y_train)
print(f" lr={lr:.2f}: 准确率={gb_lr.score(X_test, y_test):.4f}")

# 5. 早停法 (Early Stopping)
gb_early = GradientBoostingClassifier(
n_estimators=1000, learning_rate=0.1, max_depth=3,
validation_fraction=0.2, n_iter_no_change=10, tol=1e-4, random_state=42
)
gb_early.fit(X_train, y_train)
print(f"\n早停法实际使用树数: {gb_early.n_estimators_} (最大 1000)")
print(f"早停法准确率: {gb_early.score(X_test, y_test):.4f}")

# 6. 特征重要性
importances = gb.feature_importances_
top_5_idx = np.argsort(importances)[::-1][:5]
print(f"\n前 5 个重要特征:")
for i, idx in enumerate(top_5_idx):
print(f" {i+1}. {cancer.feature_names[idx]}: {importances[idx]:.4f}")

# 7. 使用 subsample 防止过拟合
gb_sub = GradientBoostingClassifier(
n_estimators=100, learning_rate=0.1, max_depth=3,
subsample=0.8, random_state=42
)
gb_sub.fit(X_train, y_train)
print(f"\nsubsample=0.8 准确率: {gb_sub.score(X_test, y_test):.4f}")

# 8. 损失函数
print(f"\n=== 模型参数 ===")
print(f"损失函数: {gb.loss}, 学习率: {gb.learning_rate}")
print(f"树数量: {gb.n_estimators}, 最大深度: {gb.max_depth}")

# 9. GBDT vs 随机森林
# GBDT: 逐步优化,每棵树拟合残差(boosting)
# RandomForest: 并行训练,每棵树独立(bagging)
# GBDT 通常精度更高,但调参较复杂

# 10. 调参指南
# n_estimators: 更多树降低偏差但可能过拟合
# learning_rate: 越小泛化越好但需更多树
# max_depth: 通常 3-5
# subsample: 0.5-0.8 引入随机性防过拟合

http://www.cnnetsun.cn/news/2675245.html

相关文章:

  • YimMenu终极指南:GTA5最强免费防崩溃辅助工具完全教程
  • LLM驱动模拟电路识别:GENIE-ASI技术解析与应用
  • Day7:微调知识点复盘背诵
  • 阶段整体复盘汇总
  • 如何快速部署MASA全家桶汉化包:Minecraft 1.21全模组中文化终极解决方案
  • Win-PS2EXE终极指南:将PowerShell脚本一键转换为专业Windows程序
  • QMCDecode:重新掌控你的音乐收藏,告别QQ音乐加密限制
  • 高效智能网络资源嗅探与下载工具完整使用指南
  • ChatTTS-ui音色工程革命:从参数调试到场景化语音合成的技术实践
  • Windows 10/11 想体验 Mac 的 Dock 栏?试试这个免费神器 MyDockFinder(附保姆级安装避坑指南)
  • 2026年精选一键生成论文工具合集(安全合规版)
  • 2026 跨境插画版权重大风险|Mark Missman 四大案号 TRO 起诉,产品自查、紧急下架、和解全流程方案!
  • 如何一键修复Visual C++运行库:Windows程序兼容性终极解决方案
  • AI大模型军备竞赛白皮书(Gemini竞争对手生存现状实测报告)
  • 【Veo企业级方案权威白皮书精要】:基于237家客户数据验证的ROI提升42%的5个黄金配置组合
  • 基于Arduino与超声波传感器的宠物自动饮水机DIY全攻略
  • 基于Arduino与HC-05的双向蓝牙通信悬浮车DIY全攻略
  • Win10激活失败?可能是你的批处理脚本过期了!保姆级排查与服务器地址更新指南
  • 别再让GPS“骗”你了——福特用一张卫星图,教会汽车“对号入座”
  • QuickBMS终极指南:游戏文件提取与修改的完整解决方案
  • 《超简单:用 Python 让 Excel 飞起来》读书笔记:3.3.1 创建工作簿:xw.App() 与 app.books.add())
  • 联想刃7000K BIOS隐藏选项一键解锁指南:3分钟释放硬件全部潜能
  • Arduino超声波入侵检测系统:从传感器原理到安防原型实践
  • 鸣潮自动化助手:释放双手,轻松享受游戏乐趣
  • 保姆级教程:用kubeadm和Calico Operator快速搞定K8s集群网络(附calicoctl配置)
  • FinalBurn Neo技术深度解析:构建精准的街机游戏模拟器架构
  • Bedrock Launcher终极指南:轻松管理Minecraft基岩版多版本切换
  • 基于ESP32的蓝牙翻页器DIY:从电路设计到3D打印外壳全流程
  • 073柱状图中最大的矩形
  • MegSpot:5个高效技巧助你掌握跨平台视觉分析工具