文章最前: 我是Octopus,这个名字来源于我的中文名--章鱼;我热爱编程、热爱算法、热爱开源。所有源码在我的个人github ;这博客是记录我学习的点点滴滴,如果您对 Python、Java、AI、算法有兴趣,可以关注我的动态,一起学习,共同进步。
相关文章:
LightGBM是一个基于树学习算法的开源梯度提升框架,旨在更快地处理数据并提供更高的准确性。它可以处理大型数据集,具有较低的内存使用率,并支持分布式学习。您可以在此链接中找到有关其API的所有信息。
LightGBM可用于回归、分类、排名等机器学习任务。在本教程中,您将简要了解如何在Python中使用LightGBM拟合和预测回归数据。教程涵盖了以下内容:
- 准备数据
- 构建模型
- 进行预测和准确性检查
- 可视化结果
- 特征重要性分析
- 模型保存与加载
- 源代码清单
将从加载本教程所需的库开始。
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')