lightGBM回归预测

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

 相关文章:

  1. XGboost进行时间序列预测
  2. python中的lightGBM回归预测示例
  3. sklearn Preprocessing 数据预处理功能

LightGBM是一个基于树学习算法的开源梯度提升框架,旨在更快地处理数据并提供更高的准确性。它可以处理大型数据集,具有较低的内存使用率,并支持分布式学习。您可以在此链接中找到有关其API的所有信息。

LightGBM可用于回归、分类、排名等机器学习任务。在本教程中,您将简要了解如何在Python中使用LightGBM拟合和预测回归数据。教程涵盖了以下内容:

  1. 准备数据
  2. 构建模型
  3. 进行预测和准确性检查
  4. 可视化结果
  5. 特征重要性分析
  6. 模型保存与加载
  7. 源代码清单

将从加载本教程所需的库开始。  

import lightgbm as lgb
from sklearn.datasets import load_boston
from sklearn.metrics import mean_squared_error
from sklearn.model_selection import train_test_split
from pandas import DataFrame
import matplotlib.pyplot as plt

如果未安装LightGBM,可以在Python中通过pip安装它。 该文件的内容为: 

pip install lightgbm 

1.准备数据 

将使用波士顿房价数据集作为目标回归数据,可以通过sklearn.datasets模块轻松加载它。为了保留特征列的名称,将使用pandas DataFrame 类型来处理特征数据。然后,将数据分割成训练集和测试集。

boston = load_boston()
x, y = boston.data, boston.target
x_df = DataFrame(x, columns= boston.feature_names)
x_train, x_test, y_train, y_test = train_test_split(x_df, y, test_size=0.15) 

2.建立模型 

首先,将按照下面所示定义回归模型的参数。您可以根据您的评估目标来更改这些值。

# defining parameters 
params = {
    'task': 'train', 
    'boosting': 'gbdt',
    'objective': 'regression',
    'num_leaves': 10,
    'learning_rate': 0.05,
    'metric': {'l2','l1'},
    'verbose': -1
}
# 加载数据
lgb_train = lgb.Dataset(x_train, y_train)
lgb_eval = lgb.Dataset(x_test, y_test, reference=lgb_train)

现在,可以使用上面定义的变量来训练模型。

# 训练模型
model = lgb.train(params,train_set=lgb_train,valid_sets=lgb_eval)

3.预测和准确性检查

# prediction
y_pred = model.predict(x_test)

# accuracy check
mse = mean_squared_error(y_test, y_pred)
rmse = mse**(0.5)
print("MSE: %.2f" % mse)
print("RMSE: %.2f" % rmse) 

4.可视化结果

要可视化原始数据和预测数据,可以使用 'matplotlib' 库。以下代码展示了如何在图表中绘制原始数据和预测数据。

# visualizing in a plot
x_ax = range(len(y_test))
plt.figure(figsize=(12, 6))
plt.plot(x_ax, y_test, label="original")
plt.plot(x_ax, y_pred, label="predicted")
plt.title("Boston dataset test and predicted data")
plt.xlabel('X')
plt.ylabel('Price')
plt.legend(loc='best',fancybox=True, shadow=True)
plt.grid(True)
plt.show()  

5.LightGBM 特征重要性分析 

lgb.plot_importance(model, height=.5)

6.模型保存与加载

# 保存模型
model.save_model('boston.txt')
# 加载模型
model2 = lgb.Booster(model_file='boston.txt')

7.源代码清单

import lightgbm as lgb
from sklearn.datasets import load_boston
from sklearn.metrics import mean_squared_error
from sklearn.model_selection import train_test_split
from pandas import DataFrame
import matplotlib.pyplot as plt

# 1.Preparing the data
boston = load_boston()
x, y = boston.data, boston.target
x_df = DataFrame(x, columns= boston.feature_names)
x_train, x_test, y_train, y_test = train_test_split(x_df, y, test_size=0.15) 

# 2.Building the model 
# defining parameters 
params = {
    'task': 'train', 
    'boosting': 'gbdt',
    'objective': 'regression',
    'num_leaves': 10,
    'learnnig_rage': 0.05,
    'metric': {'l2','l1'},
    'verbose': -1
}

# laoding data
lgb_train = lgb.Dataset(x_train, y_train)
lgb_eval = lgb.Dataset(x_test, y_test, reference=lgb_train)

# fitting the model
model = lgb.train(params,
                 train_set=lgb_train,
                 valid_sets=lgb_eval)

# 3.Prediction and Accuracy Check
# prediction
y_pred = model2.predict(x_test)

# accuracy check
mse = mean_squared_error(y_test, y_pred)
rmse = mse**(0.5)
print("MSE: %.2f" % mse)
print("RMSE: %.2f" % rmse) 

# 4.Visualizing the results
# visualizing in a plot
x_ax = range(len(y_test))
plt.figure(figsize=(12, 6))
plt.plot(x_ax, y_test, label="original")
plt.plot(x_ax, y_pred, label="predicted")
plt.title("Boston dataset test and predicted data")
plt.xlabel('X')
plt.ylabel('Price')
plt.legend(loc='best',fancybox=True, shadow=True)
plt.grid(True)
plt.show()  

# LightGBM 特征重要性

# plotting feature importance
lgb.plot_importance(model, height=.5)

# 保存与加载模型
model.save_model('boston.txt')
model2 = lgb.Booster(model_file='boston.txt')
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值