c语言编程笔录

首页 >   > 笔记大全

笔记大全

python中l ghtgbm+Python 中

更新时间:2023-11-08

1. LightGBM简介

LightGBM是一种基于决策树的梯度提升框架,用于解决分类和回归问题。它具有高效、快速、可扩展性强的特点,可以处理大规模数据和高维特征。

下面是一个LightGBM的基本用法示例:

import lightgbm as lgb

# 创建数据集
train_data = lgb.Dataset(X_train, label=y_train)
test_data = lgb.Dataset(X_test, label=y_test)

# 定义参数
params = {
    'boosting_type': 'gbdt',
    'objective': 'regression',
    'metric': {'l2'},
    'num_leaves': 31,
    'learning_rate': 0.05,
    'feature_fraction': 0.9
}

# 训练模型
model = lgb.train(params, train_data, valid_sets=[test_data], num_boost_round=100)

# 预测
y_pred = model.predict(X_test)

2. LightGBM模型调参

LightGBM有很多可调节的参数,通过调整这些参数可以进一步优化模型性能。

下面是一个LightGBM调参的示例:

from sklearn.model_selection import GridSearchCV
import lightgbm as lgb

# 创建数据集
train_data = lgb.Dataset(X_train, label=y_train)

# 定义初始参数
params = {
    'boosting_type': 'gbdt',
    'objective': 'regression',
    'metric': {'l2'},
    'num_leaves': 31,
    'learning_rate': 0.1,
    'feature_fraction': 0.9
}

# 创建模型
model = lgb.LGBMRegressor(**params)

# 定义需要调整的参数和取值范围
param_grid = {
    'num_leaves': [15, 31, 63],
    'learning_rate': [0.05, 0.1, 0.2],
    'feature_fraction': [0.6, 0.8, 0.9]
}

# 使用GridSearchCV进行交叉验证调参
grid_search = GridSearchCV(estimator=model, param_grid=param_grid, cv=3)
grid_search.fit(X_train, y_train)

# 输出最优参数和模型评分
print("Best Parameters: ", grid_search.best_params_)
print("Best Score: ", grid_search.best_score_)

# 使用最优参数训练模型
best_params = grid_search.best_params_
model = lgb.LGBMRegressor(**best_params)
model.fit(X_train, y_train)

3. LightGBM特征重要性

LightGBM提供了计算特征重要性的功能,可以帮助我们了解哪些特征对于模型的预测效果最重要。

下面是一个计算特征重要性的示例:

import lightgbm as lgb

# 创建数据集
train_data = lgb.Dataset(X_train, label=y_train)

# 定义参数
params = {
    'boosting_type': 'gbdt',
    'objective': 'regression',
    'metric': {'l2'},
    'num_leaves': 31,
    'learning_rate': 0.1,
    'feature_fraction': 0.9
}

# 训练模型
model = lgb.train(params, train_data, num_boost_round=100)

# 输出特征重要性
feature_importance = model.feature_importance()
feature_name = model.feature_name()

for i in range(len(feature_name)):
    print(f"Feature {i+1}: {feature_name[i]}, Importance: {feature_importance[i]}")

4. LightGBM模型保存和加载

LightGBM提供了保存和加载模型的功能,可以方便地将训练好的模型保存到本地,以便后续使用。

下面是一个模型保存和加载的示例:

import lightgbm as lgb

# 创建数据集
train_data = lgb.Dataset(X_train, label=y_train)

# 定义参数
params = {
    'boosting_type': 'gbdt',
    'objective': 'regression',
    'metric': {'l2'},
    'num_leaves': 31,
    'learning_rate': 0.1,
    'feature_fraction': 0.9
}

# 训练模型
model = lgb.train(params, train_data, num_boost_round=100)

# 保存模型
model.save_model('model.txt')

# 加载模型
model = lgb.Booster(model_file='model.txt')

# 使用加载的模型进行预测
y_pred = model.predict(X_test)

总结:

LightGBM是一种高效、快速、可扩展性强的基于决策树的梯度提升框架。通过调整参数、计算特征重要性、保存和加载模型等功能,我们可以进一步优化模型性能和使用模型的便利性。使用LightGBM可以快速构建并优化梯度提升模型,对于解决分类和回归问题具有很好的效果。