梯度提升决策树(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))
相关推荐
仪器科学与传感技术博士24 分钟前
Matplotlib库:Python数据可视化的基石,发现它的美
开发语言·人工智能·python·算法·信息可视化·matplotlib·图表可视化
success2 小时前
【爆刷力扣-二叉树】层次遍历
算法
2501_924880703 小时前
手机拍照识别中模糊场景准确率↑37%:陌讯动态适配算法实战解析
人工智能·深度学习·算法·计算机视觉·智能手机·视觉检测
lifallen4 小时前
HBase的异步WAL性能优化:RingBuffer的奥秘
大数据·数据库·分布式·算法·性能优化·apache·hbase
星期天要睡觉4 小时前
机器学习——支持向量机(SVM)实战案例
笔记·算法·支持向量机
Skylar_.5 小时前
嵌入式 - 数据结构:哈希表和排序与查找算法
数据结构·算法·嵌入式·哈希算法·散列表
破刺不会编程6 小时前
linux信号量和日志
java·linux·运维·前端·算法
黑色的山岗在沉睡7 小时前
【无标题】
数据结构·c++·算法·图论
2301_785038188 小时前
c++初学day1(类比C语言进行举例,具体原理等到学到更深层的东西再进行解析)
c语言·c++·算法
星期天要睡觉9 小时前
机器学习——支持向量机(SVM)
算法·机器学习·支持向量机·svm