LightGBM 进行回归建模的流程

LightGBM 进行回归建模的流程

文章最前: 我是Octopus,这个名字来源于我的中文名–章鱼;我热爱编程、热爱算法、热爱开源。所有源码在我的个人github ;这博客是记录我学习的点点滴滴,如果您对 Python、Java、AI、算法有兴趣,可以关注我的动态,一起学习,共同进步。

加载数据:

from pathlib import Path
import pandas as pd

regression_example_dir = Path(__file__).absolute().parents[1] / "regression"
df_train = pd.read_csv(str(regression_example_dir / "regression.train"), header=None, sep="\t")
df_test = pd.read_csv(str(regression_example_dir / "regression.test"), header=None, sep="\t")

这里使用 pandas 加载训练数据和测试数据。数据文件路径是通过 Path 模块构建的,假设数据存储在项目目录的 regression 文件夹中。

数据预处理

y_train = df_train[0]
y_test = df_test[0]
X_train = df_train.drop(0, axis=1)
X_test = df_test.drop(0, axis=1)

将数据分为特征 (X_train, X_test) 和标签 (y_train, y_test)。

创建 LightGBM 数据集:

import lightgbm as lgb

lgb_train = lgb.Dataset(X_train, y_train)
lgb_eval = lgb.Dataset(X_test, y_test, reference=lgb_train)

将 pandas DataFrame 转换为 LightGBM 所需的 Dataset 格式。

设置参数

params = {
    "boosting_type": "gbdt",
    "objective": "regression",
    "metric": {"l2", "l1"},
    "num_leaves": 31,
    "learning_rate": 0.05,
    "feature_fraction": 0.9,
    "bagging_fraction": 0.8,
    "bagging_freq": 5,
    "verbose": 0,
}

配置 LightGBM 的训练参数,包括提升类型、目标函数、评估指标、叶子节点数、学习率等。

训练模型

gbm = lgb.train(
    params, lgb_train, num_boost_round=20, valid_sets=lgb_eval, callbacks=[lgb.early_stopping(stopping_rounds=5)]
)

使用 train 方法进行训练,指定评估数据集,并设置提前停止的回调函数以防止过拟合。

保存模型:

gbm.save_model("model.txt")

将训练好的模型保存到文件。

预测和评估:

from sklearn.metrics import mean_squared_error

y_pred = gbm.predict(X_test, num_iteration=gbm.best_iteration)
rmse_test = mean_squared_error(y_test, y_pred) ** 0.5
print(f"The RMSE of prediction is: {rmse_test}")

使用测试集进行预测,并计算预测结果的均方根误差 (RMSE)。

这段代码可以作为一个模板,用于基于 LightGBM 的回归任务。确保你已经安装了所需的库 (pandas, scikit-learn, lightgbm) 并有合适的数据集。

  • 8
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值