GBDT建模

GBDT是一种强大的机器学习算法,可以用于分类问题和回归问题。下面是GBDT建模的步骤:

  1. 数据预处理:需要对数据进行处理,包括去除缺失值、离群值、特征标准化等。

  2. 划分训练集和测试集:将数据集分成训练集和测试集。

  3. 定义目标变量:定义目标变量,这是GBDT模型需要预测的值,可以是连续的数值或分类变量。

  4. 构建GBDT模型:使用Python中的scikit-learn包可以构建GBDT模型。在构建模型时,需要选择一些参数,例如树的深度、树的数量、学习率等。

  5. 训练模型:使用训练集对模型进行训练,模型会根据训练数据对每个树进行参数优化,使得模型能够更准确地预测目标变量。

  6. 预测结果:使用测试集对模型进行测试,使用已训练的模型预测测试数据中的目标变量,并计算模型的性能指标,例如准确率、精度、召回率等。

  7. 模型调优:如果模型的性能不如预期,可以尝试对模型的参数进行调整,重新训练和测试模型。常用的调优方法包括网格搜索、随机搜索等。

  8. 模型评估:最后需要评估模型的性能和效果,通常使用交叉验证等方法评估模型的泛化能力。

以下案例中使用了GradientBoostingRegressor方法进行GBDT建模,并使用了GridSearchCV方法进行模型参数的调优,以获得最优的模型拟合效果。

#导入所需库
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.ensemble import GradientBoostingRegressor
from sklearn.metrics import mean_squared_error

#导入数据
data = pd.read_csv('data.csv')
X = data.drop('target', axis=1)
y = data['target']

#将数据拆分成训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

#建立默认参数的模型
gbm0 = GradientBoostingRegressor(random_state=10)
gbm0.fit(X_train, y_train)

#对训练集和测试集的拟合表现进行评价
print('训练集拟合误差:', mean_squared_error(y_train, gbm0.predict(X_train)))
print('测试集拟合误差:', mean_squared_error(y_test, gbm0.predict(X_test)))

#调参过程,设置欲调节的参数范围或值
param_test1 = {'n_estimators': range(20, 101, 10)}

#以默认值为起点,按照调节值的范围对模型进行参数调节
#并使用5折交叉验证法,寻找最优的参数组合
from sklearn.model_selection import GridSearchCV
gsearch1 = GridSearchCV(estimator=GradientBoostingRegressor(learning_rate=0.1, min_samples_split=300, min_samples_leaf=20, max_depth=8, max_features='sqrt', subsample=0.8, random_state=10),
param_grid=param_test1, scoring='neg_mean_squared_error', cv=5)
gsearch1.fit(X_train,y_train)

#输出最优的参数组合和拟合表现
print('最优参数:',gsearch1.best_params_)
print('训练集拟合误差:', gsearch1.best_score_)

#将最优参数带入模型,重新进行训练和测试得表现
gbm1 = GradientBoostingRegressor(learning_rate=0.1, n_estimators=70, max_depth=8, min_samples_split=300, min_samples_leaf=20, subsample=0.8, max_features='sqrt', random_state=10)
gbm1.fit(X_train, y_train)
print('训练集拟合误差:', mean_squared_error(y_train, gbm1.predict(X_train)))
print('测试集拟合误差:', mean_squared_error(y_test, gbm1.predict(X_test)))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值