梯度提升决策树(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))
相关推荐
故事和你911 小时前
洛谷-【动态规划1】动态规划的引入2
开发语言·数据结构·c++·算法·动态规划·图论
重生之我是Java开发战士1 小时前
【动态规划】背包问题:完全背包,二位费用的背包问题,似包非包
算法·动态规划
LabVIEW开发2 小时前
LabVIEW实现FDTD 电磁仿真
算法·labview·labview知识·labview功能·labview程序
JAVA学习通2 小时前
《大营销平台系统设计实现》 - 营销服务 第8节:抽奖规则树模型结构设计
运维·决策树·docker·容器·责任链模式
Together_CZ2 小时前
DTSemNet :Vanilla Gradient Descent for Oblique Decision Trees——用于倾斜决策树的普通梯度下降
算法·决策树·机器学习·vanilla·gradient·dtsemnet·用于倾斜决策树的普通梯度
一条大祥脚2 小时前
ABC459 贪心构造|树形DP|组合数学|贪心|单调栈|势能|前缀和
算法·深度优先
灰灰勇闯IT3 小时前
DeepEP:MoE 推理的 AllToAll 通信瓶颈怎么解
算法·cann
一行代码一行诗++3 小时前
goto语句
java·开发语言·算法
汉克老师3 小时前
GESP5级C++考试语法知识(十七、二分算法提高篇(二))
c++·算法·二分算法·gesp5级·gesp五级·二分算法易错点
叶小鸡3 小时前
小鸡玩算法-力扣HOT100-动态规划(下)
算法·leetcode·动态规划