首页 > 其他分享 >【LGBM】LightGBM sklearn API超参数解释与使用方法(优化)

【LGBM】LightGBM sklearn API超参数解释与使用方法(优化)

时间:2024-11-08 08:50:46浏览次数:7  
标签:None LightGBM LGBM train API split model reg importances

        接下来我们进一步解释LGBM的sklearn API中各评估器中的超参数及使用方法。

  在LGBM的sklearn API中,总共包含四个模型类(也就是四个评估器),分别是lightgbm.LGBMModel、LGBMClassifier 和 LGBMRegressor 以及LGBMRanker:

LGBMModel

  LGBMModel 是 LightGBM 的基础模型类,它提供了所有 LightGBM 模型的通用接口。虽然它本身不是为特定任务设计的,但它包含了所有基本的训练和预测方法。

主要方法:
  • fit(X, y, sample_weight=None, init_score=None, eval_set=None, eval_names=None, eval_sample_weight=None, eval_class_weight=None, eval_init_score=None, eval_metric=None, early_stopping_rounds=None, verbose=True, feature_name='auto', categorical_feature='auto', callbacks=None, init_model=None)
  • predict(X, raw_score=False, start_iteration=0, num_iteration=None, pred_leaf=False, pred_contrib=False, **kwargs)
  • feature_importances_:返回特征的重要性评分。

LGBMClassifier

LGBMClassifier 是用于分类任务的模型类,适用于二分类和多分类问题。

主要超参数:
  • boosting_type='gbdt':提升类型,可选值有 'gbdt' (默认), 'dart', 'goss', 'rf'。
  • num_leaves=31:每棵树的最大叶子数。
  • max_depth=-1:树的最大深度,负值表示不限制。
  • learning_rate=0.1:学习率,控制每次迭代的学习步长。
  • n_estimators=100:提升树的数量。
  • subsample_for_bin=200000:构造直方图时使用的样本数量。
  • min_split_gain=0.0:分裂节点所需的最小增益。
  • min_child_weight=0.001:叶子节点的最小权重。
  • min_child_samples=20:叶子节点的最小样本数。
  • subsample=1.0:每棵树训练时使用的样本比例。
  • colsample_bytree=1.0:每棵树训练时使用的特征比例。
  • reg_alpha=0.0:L1 正则化系数。
  • reg_lambda=0.0:L2 正则化系数。
  • random_state=None:随机种子,用于复现结果。
  • n_jobs=-1:并行任务数,-1 表示使用所有可用的 CPU 核心。
  • silent=True:是否静默模式,不显示训练过程中的信息。
  • importance_type='split':特征重要性的计算方式,可选值有 'split' 和 'gain'。
示例代码:
from lightgbm import LGBMClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split

# 加载数据集
data = load_iris()
X, y = data.data, data.target

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 创建 LGBMClassifier 模型
model = LGBMClassifier(
    n_estimators=100,
    learning_rate=0.1,
    max_depth=5,
    num_leaves=31,
    subsample=0.8,
    colsample_bytree=0.8,
    reg_alpha=0.1,
    reg_lambda=0.1,
    random_state=42
)

# 训练模型
model.fit(X_train, y_train)

# 预测
predictions = model.predict(X_test)

# 获取特征重要性
feature_importances = model.feature_importances_
print("Feature importances:", feature_importances)

LGBMRegressor

LGBMRegressor 是用于回归任务的模型类,适用于预测连续值目标变量的问题。

主要超参数:
  • boosting_type='gbdt':提升类型,可选值有 'gbdt' (默认), 'dart', 'goss', 'rf'。
  • num_leaves=31:每棵树的最大叶子数。
  • max_depth=-1:树的最大深度,负值表示不限制。
  • learning_rate=0.1:学习率,控制每次迭代的学习步长。
  • n_estimators=100:提升树的数量。
  • subsample_for_bin=200000:构造直方图时使用的样本数量。
  • min_split_gain=0.0:分裂节点所需的最小增益。
  • min_child_weight=0.001:叶子节点的最小权重。
  • min_child_samples=20:叶子节点的最小样本数。
  • subsample=1.0:每棵树训练时使用的样本比例。
  • colsample_bytree=1.0:每棵树训练时使用的特征比例。
  • reg_alpha=0.0:L1 正则化系数。
  • reg_lambda=0.0:L2 正则化系数。
  • random_state=None:随机种子,用于复现结果。
  • n_jobs=-1:并行任务数,-1 表示使用所有可用的 CPU 核心。
  • silent=True:是否静默模式,不显示训练过程中的信息。
  • importance_type='split':特征重要性的计算方式,可选值有 'split' 和 'gain'。
示例代码:
from lightgbm import LGBMRegressor
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split

# 加载数据集
data = load_boston()
X, y = data.data, data.target

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 创建 LGBMRegressor 模型
model = LGBMRegressor(
    n_estimators=100,
    learning_rate=0.1,
    max_depth=5,
    num_leaves=31,
    subsample=0.8,
    colsample_bytree=0.8,
    reg_alpha=0.1,
    reg_lambda=0.1,
    random_state=42
)

# 训练模型
model.fit(X_train, y_train)

# 预测
predictions = model.predict(X_test)

# 获取特征重要性
feature_importances = model.feature_importances_
print("Feature importances:", feature_importances)

LGBMRanker

LGBMRanker 是用于排序任务的模型类,适用于需要对一组项目进行排序的问题,常见于信息检索和推荐系统中。

主要超参数:
  • boosting_type='gbdt':提升类型,可选值有 'gbdt' (默认), 'dart', 'goss', 'rf'。
  • num_leaves=31:每棵树的最大叶子数。
  • max_depth=-1:树的最大深度,负值表示不限制。
  • learning_rate=0.1:学习率,控制每次迭代的学习步长。
  • n_estimators=100:提升树的数量。
  • subsample_for_bin=200000:构造直方图时使用的样本数量。
  • min_split_gain=0.0:分裂节点所需的最小增益。
  • min_child_weight=0.001:叶子节点的最小权重。
  • min_child_samples=20:叶子节点的最小样本数。
  • subsample=1.0:每棵树训练时使用的样本比例。
  • colsample_bytree=1.0:每棵树训练时使用的特征比例。
  • reg_alpha=0.0:L1 正则化系数。
  • reg_lambda=0.0:L2 正则化系数。
  • random_state=None:随机种子,用于复现结果。
  • n_jobs=-1:并行任务数,-1 表示使用所有可用的 CPU 核心。
  • silent=True:是否静默模式,不显示训练过程中的信息。
  • importance_type='split':特征重要性的计算方式,可选值有 'split' 和 'gain'。
特殊参数:
  • group:每个查询组的大小,必须在 fit 方法中提供。
  • eval_at=[1, 2, 3]:评估排序性能时使用的排名位置。
示例代码:
from lightgbm import LGBMRanker
import numpy as np

# 生成示例数据
X = np.random.rand(100, 10)  # 100 个样本,每个样本有 10 个特征
y = np.random.randint(0, 5, 100)  # 目标变量,假设是 0 到 4 的评分
group = [10] * 10  # 每个查询组有 10 个样本

# 创建 LGBMRanker 模型
model = LGBMRanker(
    n_estimators=100,
    learning_rate=0.1,
    max_depth=5,
    num_leaves=31,
    subsample=0.8,
    colsample_bytree=0.8,
    reg_alpha=0.1,
    reg_lambda=0.1,
    random_state=42
)

# 训练模型
model.fit(X, y, group=group)

# 预测
predictions = model.predict(X)

# 获取特征重要性
feature_importances = model.feature_importances_
print("Feature importances:", feature_importances)

总结

  • LGBMModel:基础模型类,通常不直接使用。
  • LGBMClassifier:用于分类任务,支持二分类和多分类。
  • LGBMRegressor:用于回归任务,预测连续值目标变量。
  • LGBMRanker:用于排序任务,适用于信息检索和推荐系统。

标签:None,LightGBM,LGBM,train,API,split,model,reg,importances
From: https://blog.csdn.net/m0_73972962/article/details/131387816

相关文章

  • API网关如何在iPaaS平台中助企业构建安全高效的API生态体系
    API网关在iPaaS(集成平台即服务)体系中扮演着至关重要的角色,它不仅促进了企业内部系统间的无缝集成,还为构建一个安全、高效且可扩展的API生态系统提供了坚实的基础。通过合理利用API网关的功能特性,企业能够实现对内外部服务更精细的控制与管理,进而促进业务流程优化及创新能力提升。......
  • 上周,一个国产 API 开源项目在 ProductHunt 杀疯了...
    随着AI大模型技术的兴起,全球产品更新和面市进程速度肉眼可见的加快,ProductHunt作为全球知名的产品发现平台,每日都会精选出一系列产品能力强劲的新产品,这些产品不仅代表了技术前沿,还反映了市场的发展趋势。上周ProductHunt(10.28-11.3)上的最佳产品榜单,出现了一次令人振奋的现......
  • Restful API规范
    RestfulAPI规范restfulapi是用于在前端与后台进行通信的一套规范。使用这个规范可以让前后端开发变得更加轻松。以下将讨论这套规范的一些设计细节。协议:采用http或者https协议。数据传输格式:数据之间传输的格式应该都使用json,而不使用xml。url链接:url链接中,不能有动词,只......
  • 96_api_intro_metadata_middleschool
    全国中学基础信息API数据接口基础数据,高校高考,提供全国初级高级中学基础数据,定时更新,多维度筛选。1.产品功能2024年数据已更新;提供最新全国中学学校基本信息;包含全国初级中学与高等中学;总计近10万条全国中学精准数据;每月一次数据自动更新校正;包含学校各类属性信息......
  • 95_api_intro_websitetools_readability
    网页可读内容抽取API数据接口智能提取文章关键元素信息,智能抽取,多种元素信息。1.产品功能智能提取网页可阅读内容;提供网页可阅读内容的HTML代码;支持传递网页HTML或网页URL参数;支持多种元素信息抽取,包括文章标题、作者、文字方向、语言、内容、内容(不包含HTML标......
  • 94_api_intro_stock_stockbidask
    A股买卖盘口数据API数据接口不同价格级别买卖数量和报价,股票交易数据,盘口分析。1.产品功能实时更新股票盘口数据;支持A股所有股票;支持按股票代码查询;高效、稳定的数据获取体验;毫秒级查询性能;数据持续更新与维护;全接口支持HTTPS(TLSv1.0/v1.1/v1.2/v1.3);全......
  • 93_api_intro_finance_optionsrealtime
    期权实时行情数据最新价格、交易量、交易额等信息,期权行情实时数据,市场交易数据。1.产品功能实时更新期权市场数据;覆盖主要期权合约;支持多种数据参数,包括价格、交易量、持仓量等;提供详细的市场分析和数据解读;高效、稳定的数据获取体验;秒级查询性能;数据持续更新与维护;......
  • 92_api_intro_stock_stockcncashflow
    A股个股资金流API数据接口全量股票资金流数据,全量A股数据,最长30日历史数据1.产品功能支持所有A股资金流数据查询;每日定时更新数据;支持多达30日历史数据查询;超高的查询效率,数据秒级返回;数据持续更新与维护;全接口支持HTTPS(TLSv1.0/v1.1/v1.2/v1.3);全面兼容......
  • 91_api_intro_stock_stockcncashflowrank
    A股个股资金流排行API数据接口全量股票资金流排名,多时间区间,全量A股数据。1.产品功能支持所有A股资金流数据查询;每日定时更新数据;支持多时间段查询;超高的查询效率,数据秒级返回;数据持续更新与维护;全接口支持HTTPS(TLSv1.0/v1.1/v1.2/v1.3);全面兼容AppleATS;......
  • 90_api_intro_stock_currencyexchange
    国际货币汇率API数据接口支持多种货币对,每日精准汇率,多币种支持。1.产品功能支持多种货币汇率查询;支持部分加密货币汇率查询;数据为每日更新汇率数据;可一次查询源货币代码对应所有目标货币汇率;数据持续更新与维护;全接口支持HTTPS(TLSv1.0/v1.1/v1.2/v1.3);全面......