梯度提升决策树(GBDT,Gradient Boosting Decision Tree)

模型简介

梯度提升决策树(GBDT,Gradient Boosting Decision Tree) 是一种集成学习方法,它通过将多个弱学习器(通常是决策树)组合成一个强学习器来进行预测。GBDT 是梯度提升(Gradient Boosting)算法的一种实现,在许多机器学习任务中表现出色,尤其是在结构化数据(如表格数据)上的分类和回归任务中。

代码说明

这段代码通过构造一个随机生成的二分类数据集,展示了如何使用梯度提升决策树(GBDT)模型进行训练和评估。首先,生成了包含 10000 个样本和 10 个特征的标准正态分布数据,并随机生成了二分类标签。然后,通过 train_test_split 将数据划分为训练集和测试集,并使用 StandardScaler 对数据进行了标准化处理。接着,使用 GradientBoostingClassifier 创建了 GBDT 模型,设置了树的数量、学习率和最大深度,并用训练集进行模型训练。最后,使用测试集对模型进行预测,并通过准确率、分类报告和混淆矩阵评估模型的性能,输出了模型的评估结果。

代码

python 复制代码
# 导入必要的库
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.ensemble import GradientBoostingClassifier
from sklearn.metrics import classification_report, confusion_matrix, accuracy_score
from sklearn.preprocessing import StandardScaler

# 临时构造一个数据集
np.random.seed(42)

# 假设有10000个样本,10个特征
n_samples = 10000
n_features = 10

# 构造随机数据
X = np.random.randn(n_samples, n_features)  # 生成标准正态分布的随机数据
y = np.random.choice([0, 1], size=n_samples)  # 随机生成二分类标签 0 或 1

# 将数据转化为 DataFrame 格式
X_df = pd.DataFrame(X, columns=[f"feature_{i+1}" for i in range(n_features)])
y_df = pd.Series(y, name="Class")

# 查看数据集的一部分
print(X_df.head())
print(y_df.head())

# 划分数据集为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X_df, y_df, test_size=0.3, random_state=42)

# 数据标准化
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)

# 创建梯度提升决策树模型
gbdt = GradientBoostingClassifier(n_estimators=100, learning_rate=0.1, max_depth=3, random_state=42)

# 训练模型
gbdt.fit(X_train_scaled, y_train)

# 预测
y_pred = gbdt.predict(X_test_scaled)

# 输出模型评估结果
print(f"准确率: {accuracy_score(y_test, y_pred):.4f}")
print("分类报告:")
print(classification_report(y_test, y_pred))

# 输出混淆矩阵
print("混淆矩阵:")
print(confusion_matrix(y_test, y_pred))
相关推荐
BYSJMG几秒前
计算机毕业设计选题推荐:基于大数据的快递物流运营数据分析与可视化,Spark与K-Means
大数据·算法·数据分析·spark·课程设计
阳明山水37 分钟前
因果一致性正则化实战解析
人工智能·深度学习·算法·机器学习·架构
黄金龙PLUS2 小时前
5个1024比特大状态置换算法的设计与分析
算法·网络安全·密码学·哈希算法·同态加密
心中有你02142 小时前
C语言埃氏筛法(素数筛选)
c语言·数据结构·算法
Omics Pro3 小时前
Cell封面|衰老生物学开源AI工具包
数据库·人工智能·算法·机器学习·自然语言处理
UIU1145 小时前
递归算法与汉诺塔
c++·学习·算法·c#·递归
用户9799848071811 小时前
200 行代码写一个能跑的 AI Agent:不依赖任何框架,只靠 tool-calling 原理
算法
threerocks11 小时前
【Muse实战】X 流量作战室搭建保姆级教程 - 拥有你自己的运营团队
算法
GreenTea11 小时前
深度拆解 ScienceBuddy:如何用“双层递归自进化”构建高可靠科研 Agent Harness
前端·后端·算法
花椒技术11 小时前
2.46 秒生成 5 秒视频:拆解 H3 Max 的模型、推理栈与硬件协同
算法·音视频开发·视频编码