梯度提升决策树(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))
相关推荐
lang201509288 分钟前
Sentinel黑白名单授权控制详解
java·算法·sentinel
小O的算法实验室18 分钟前
2023年IEEE TIV,GA-LNS算法+直升机救援调度,深度解析+性能实测
算法·论文复现·智能算法·智能算法改进
foundbug99922 分钟前
Delta并联机器人正逆解实现
算法·机器人
职业码农NO.134 分钟前
《算法与数据结构》:最短路径
数据结构·算法
Ayanami_Reii35 分钟前
进阶数据结构Splay应用-维护数列
数据结构·算法·splay·fhq
是小胡嘛42 分钟前
仿Muduo高并发服务器之Buffer模块
开发语言·c++·算法
琢磨先生David43 分钟前
Java算法题:移除数组中的重复项
java·数据结构·算法
im_AMBER1 小时前
Leetcode 75 数对和 | 存在重复元素 II
c++·笔记·学习·算法·leetcode
九河云1 小时前
直播电商数字化:用户行为 AI 分析与选品推荐算法平台建设
人工智能·物联网·算法·推荐算法
CoovallyAIHub1 小时前
深大团队UNeMo框架:让机器人学会“预判”,效率提升40%
深度学习·算法·计算机视觉