LightGBM原生接口和Sklearn接口参数详解

LightGBM原生接口和Sklearn接口参数详解

  • LightGBM
    • 一、Sklearn风格接口
      • lightgbm.LGBMRegressor参数
        • 1.boosting_type:
        • 2.objective:
        • 3.metric:
        • 4.n_estimators:
        • 5.learning_rate (eta):
        • 6.max_depth:
        • 7.min_child_samples:
        • 8.lambda_l1 (reg_alpha):
        • 9.lambda_l2 (reg_lambda):
        • 10.num_leaves:
        • 11.min_split_gain:
        • 12.early_stopping_rounds:
        • 13.subsample_for_bin:
        • 14.colsample_bytree (feature_fraction):
        • 15.subsample (bagging_fraction):
        • 16.n_jobs:
        • 17.silent (verbose):
      • 调参方法
      • LGBMRegressor.fit参数
        • 1.X:
        • 2.y:
        • 3.sample_weight:
        • 4.eval_set:
        • 5.eval_names:
        • 6.eval_sample_weight:
        • 7.eval_class_weight:
        • 8.eval_init_score:
        • 9.eval_metric:
        • 10.verbose:
        • 11.callbacks:
        • 12.init_model:
        • 13.pre_partition:
      • LGBMRegressor.predict参数
        • 1. X
        • 2. num_iteration (n_iter_no_change)
        • 3. raw_score
        • 4. pred_leaf
        • 5. pred_contrib
        • 6. kwargs
    • 二、LightGBM原生接口
      • 基本设置
        • 1.boosting_type:
        • 2.objective:
        • 3.metric:
      • 数据处理与采样
        • 4.max_bin:
        • 5.min_data_in_bin:
        • 6.min_child_samples:
        • 7.subsample:
        • 8.sampling_method:
        • 9.colsample_bytree:
        • 10.colsample_bylevel:
      • 模型训练与正则化
        • 11.learning_rate:
        • 12.num_leaves:
        • 13.min_split_gain:
        • 14.min_child_weight:
        • 15.lambda_l1/lambda_l2:
        • 16.alpha:
        • 17.n_estimators/num_iterations:
        • 18.early_stopping_rounds:
      • 树结构与剪枝
        • 19.max_depth:
        • 20.tree_learner:
        • 21.verbosity:
        • 22.gamma:
        • 23.grow_policy:
        • 24.num_threads/n_jobs:
        • 25.distribute: 是否开启分布式训练。默认为 False。
      • 其他
        • 26.seed:
        • 27.callbacks:
      • lightgbm.train参数
        • 1.params:
        • 2.train_set:
        • 3.num_boost_round:
        • 4.valid_sets:
        • 5.valid_names:
        • 6.fobj:
        • 7.feval:
        • 8.init_model:
        • 9.feature_name:
        • 10.categorical_feature:
        • 11.early_stopping_rounds:
        • 12.evals_result:
        • 13.verbose_eval:
        • 14.learning_rates:
        • 15.keep_training_booster:
        • 16.callbacks:
        • 17.show_stdv:
      • lightgbm可视化
        • 1.特征重要性图
        • 2.学习曲线图
        • 3.特征分布直方图
        • 4.特征分裂图
        • 5.决策树结构图
        • 6.特征分布与分裂点图
        • 7.SHAP 贡献值分布图

LightGBM

LightGBM有Sklearn接口建模和原生建模两种方式。

一、Sklearn风格接口

import numpy as np
import pandas as pd
from lightgbm import LGBMRegressor
# 使用普通的k折交叉验证
from sklearn.model_selection import KFold

lgb_params= {'objective': 'regression', 'metric': 'rmse',
             'boosting_type': 'gbdt', 'random_state': 2024}
             
test_preds=np.zeros((5, len(test_X)))
# 初始化 KFold
kf = KFold(n_splits=5, shuffle=True, random_state=6)
# 进行 k 折交叉验证
for fold, (train_index, valid_index) in (enumerate(kf.split(X))):

    print(f"fold:{fold}")

    X_train, X_valid = X.iloc[train_index], X.iloc[valid_index]
    y_train, y_valid = y.iloc[train_index], y.iloc[valid_index]

    model=LGBMRegressor(**lgb_params)
    model.fit(X_train,y_train,eval_set=[(X_valid,y_valid)])
    test_preds[fold]=model.predict(test_X)

lightgbm.LGBMRegressor参数

基本参数

1.boosting_type:
  • 默认值: ‘gbdt’
  • 可选值: ‘gbdt’, ‘dart’, ‘goss’, ‘rf’

‘gbdt’: 常规梯度提升决策树 (Gradient Boosting Decision Tree)
‘dart’:引入Dropout的随机梯度提升 (Dropouts meet Multiple Additive Regression Trees)
‘goss’: 平衡梯度提升 (Gradient-based One-Side Sampling)
‘rf’: 随机森林 (Random Forest),实际上每个树都是独立训练的,而非传统的梯度提升方式

2.objective:
  • 类型: str 或 callable
  • 默认值: ‘regression’

说明: 定义优化目标函数。对于回归任务,通常保持默认值即可。如果有特定的回归损失需求(如 Huber loss),可以指定相应的字符串或自定义损失函数。

3.metric:
  • 类型: str, list[str], callable

说明: 评估模型性能的指标。对于回归任务,常用的有 ‘l1’, ‘l2’, ‘rmse’, ‘mae’, ‘rmsle’, ‘mape’ 等。可以指定多个指标,但最终模型会在训练过程中优化第一个指定的指标。

4.n_estimators:
  • 类型: int
  • 默认值: 100

说明: 决策树的个数(即迭代次数)。增大此参数通常会提高模型复杂度和拟合程度,但可能导致过拟合。需要通过交叉验证或其他方法寻找合适的值。

5.learning_rate (eta):
  • 类型: float
  • 默认值: 0.1

说明: 学习率,控制每一步迭代中单个新树对之前模型更新的幅度。较小的学习率可能需要更多的迭代次数(更大的 n_estimators),但有助于模型收敛到更优解并防止过拟合。通常在 [0.01, 0.2] 范围内调整。

6.max_depth:
  • 类型: int
  • 默认值: -1(无限制)

说明: 树的最大深度。限制树的深度有助于防止过拟合并加快训练速度,但过小可能导致模型欠拟合。根据数据特性和问题复杂性调整。

7.min_child_samples:
  • 类型: int
  • 默认值: 20

说明: 构建子树时,内部节点所需最小样本数。用于剪枝和控制模型复杂度。

正则化与早停参数

8.lambda_l1 (reg_alpha):
  • 类型: float
  • 默认值: 0

说明: L1 正则化项的权重,用于控制模型的稀疏性。非零值有助于特征选择。

9.lambda_l2 (reg_lambda):
  • 类型: float
  • 默认值: 0

说明: L2 正则化项的权重,用于控制模型的复杂度和防止过拟合。通常与 lambda_l1 结合使用。

10.num_leaves:
  • 类型: int
  • 默认值: 31

说明: 树上叶子节点的最大数量。直接影响模型复杂度,与 max_depth 一起控制模型精细化程度。

11.min_split_gain:
  • 类型: float
  • 默认值: 0

说明: 分裂内部节点所需的最小增益。用于避免不必要的分割。

12.early_stopping_rounds:
  • 类型: int
  • 默认值: None

说明: 若在验证集上连续若干轮(指定值)未见性能提升,则提前停止训练,防止过拟合并节省计算资源。

其他参数

13.subsample_for_bin:
  • 类型: int
  • 默认值: 200000

说明: 用于构建直方图的样本数量。影响特征离散化的效率和质量。

14.colsample_bytree (feature_fraction):
  • 类型: float
  • 默认值: 1.0

说明: 每棵树构建时使用的特征比例。小于 1.0 可以增加模型多样性,防止过拟合。

15.subsample (bagging_fraction):
  • 类型: float
  • 默认值: 1.0

说明: 训练每棵树时使用的样本比例。类似于随机森林中的采样策略,可以降低方差并加速训练。

16.n_jobs:
  • 类型: int
  • 默认值: -1 (使用所有可用CPU核心)

说明: 并行计算的进程数。正值表示具体进程数,-1 表示使用所有可用 CPU 核心。

17.silent (verbose):
  • 类型: bool
  • 默认值: True

说明: 控制是否输出详细的中间信息。在调试或监控训练过程时可设为 False。

调参方法

通常采用网格搜索(如 GridSearchCV)、随机搜索(如 RandomizedSearchCV)或贝叶斯优化(如 Optuna、Hyperopt)等方法来寻找 LGBMRegressor 的最佳参数组合。结合交叉验证评估不同参数配置下的模型性能,依据选定的评估指标(如 r2_score、mean_squared_error 等)确定最优参数。
注意,参数之间可能存在交互效应,如 learning_rate 和 n_estimators 通常需同时调整实践中应优先关注对模型性能影响显著的参数(如 learning_rate、n_estimators、num_leaves 等),然后逐步细化其他参数。同时,合理设置参数搜索范围和步长,确保搜索效率与精度之间的平衡。

LGBMRegressor.fit参数

LGBMRegressor.fit 是 LightGBM 回归模型训练方法,用于拟合给定的训练数据。以下是 LGBMRegressor.fit 方法的主要参数详解:
必填参数

1.X:
  • 类型: array-like 或 DataFrame

说明: 输入特征数据,形状为 (n_samples, n_features)。这里的 n_samples 是样本数量,n_features 是特征数量。数据类型可以是整型、浮点型或其他可转换为数值的数据类型。

2.y:
  • 类型: array-like 或 Series

说明: 目标变量(响应变量)数据,形状为 (n_samples,)。对于回归任务,y 应包含连续数值型标签。

可选参数

3.sample_weight:
  • 类型: array-like of shape (n_samples,), optional
  • 默认值: None

说明: 样本权重数组,与输入数据 X 的样本一一对应。如果提供了样本权重,LightGBM 将在训练过程中对每个样本赋予相应的权重,影响其对模型拟合的贡献。权重越大,相应样本在训练时的影响力越强。这对于处理不平衡数据或对某些样本给予更多重视的情况非常有用。

4.eval_set:
  • 类型: list of (X, y) tuple(s), optional
  • 默认值: None

说明: 用于评估模型性能的额外数据集列表。每个元素是一个包含特征数据 X 和目标变量 y 的元组。在训练过程中,LightGBM 会在每个 boosting 步骤后计算指定数据集上的评估指标,便于监控模型性能和进行早停。

5.eval_names:
  • 类型: list of str, optional
  • 默认值: None

说明: 与 eval_set 对应的评估数据集名称列表。如果不提供,将自动命名为 “valid_0”, “valid_1”, …。这些名称用于输出和日志中标识不同的评估数据集。

6.eval_sample_weight:
  • 类型: list of array-like, optional
  • 默认值: None

说明: 与 eval_set 对应的评估数据集样本权重列表。如果提供了样本权重,将在评估过程中对相应数据集的样本应用这些权重。

7.eval_class_weight:
  • 类型: dict or list of dict, optional
  • 默认值: None

说明: 仅适用于分类任务(与 LGBMRegressor 不相关),用于指定评估数据集中各类别的权重。

8.eval_init_score:
  • 类型: list of array-like, optional
  • 默认值: None

说明: 用于初始化模型在每个评估数据集上的初始预测分数。如果提供了,将在第一轮迭代前使用这些分数作为起始点。

9.eval_metric:
  • 类型: str, callable, list, optional
  • 默认值: None

说明: 在训练过程中使用的评估指标,可以是 LightGBM 支持的字符串标识符(如 ‘rmse’, ‘l1’, ‘mae’ 等),也可以是自定义的评估函数。若未指定,将使用模型初始化时设定的 metric 参数。若提供列表,将在每个评估数据集上分别计算多个指标。

10.verbose:
  • 类型: int or bool
  • 默认值: None

说明: 控制训练过程中的输出详细程度。如果为 True 或非零整数,将在标准输出流显示训练进度。整数值决定了信息刷新的频率(按迭代次数计)。若为 False 或 0,则不显示任何训练信息。

11.callbacks:
  • 类型: list of callable, optional
  • 默认值: None

说明: 用户自定义的回调函数列表,在训练过程中的特定时刻(如每个 boosting 步骤后)会被调用。回调函数可以用于监控训练进度、保存中间结果、执行自定义操作等。

12.init_model:
  • 类型: str, os.PathLike object, Booster instance, or dict, optional
  • 默认值: None

说明: 用于加载已有的 LightGBM 模型作为训练起点。可以是模型文件路径、 Booster 实例或序列化后的字典。加载模型后,训练将继续在现有模型基础上进行,而不是从头开始。

13.pre_partition:
  • 类型: bool
  • 默认值: False

说明: 当设置为 True 时,表示数据已经按照 LightGBM 的要求进行了预分区。这通常在分布式训练场景中使用,以避免重复分区带来的开销。

其他参数

LGBMRegressor.fit 方法还接受 LGBMRegressor 类实例化时设置的其他参数作为关键字参数,如 num_boost_round、early_stopping_rounds、verbose_eval 等。这些参数在模型训练过程中起作用,可以通过直接在 fit 方法中传递来覆盖实例化时的设置。
总之,LGBMRegressor.fit 方法允许用户指定训练数据、权重、评估数据集、评估指标、输出详细程度等多个方面,以灵活控制模型训练过程和监控模型性能。在实际应用中,可以根据项目需求选择性地使用这些参数。

LGBMRegressor.predict参数

LGBMRegressor.predict() 是 LightGBM 回归模型用于对新数据进行预测的方法。

LGBMRegressor.predict(X, num_iteration=None, raw_score=False, pred_leaf=False, pred_contrib=False, **kwargs)
1. X
  • 类型: array-like 或 DataFrame

说明: 待预测的数据,其形状应与训练数据的特征部分(不包含标签)相同。可以是 Numpy 数组、Pandas DataFrame 或类似的数据结构,列对应特征,行对应样本。

2. num_iteration (n_iter_no_change)
  • 类型: int 或 None
  • 默认值: None

说明: 使用多少个树(迭代次数)来进行预测。如果为 None,则使用全部已训练好的树进行预测。指定一个较小的值可以观察模型在早期迭代阶段的表现,有助于理解模型的学习过程。

3. raw_score
  • 类型: bool
  • 默认值: False

说明: 是否返回原始得分(即未经过学习目标函数转换的输出)。若设为 True,返回的是每个样本在最后一层叶节点的得分(通常是加权投票或平均),而不是经过目标函数转换后的预测值。对于回归任务,原始得分通常就是叶节点的均值。

4. pred_leaf
  • 类型: bool
  • 默认值: False

说明: 是否返回每个样本在每棵树上的叶节点索引。若设为 True,返回的是一个二维数组,形状为 (n_samples, n_trees),其中每个元素表示对应的样本在对应树中的叶节点编号。这个功能常用于模型解释和可视化。

5. pred_contrib
  • 类型: bool
  • 默认值: False

说明: 是否返回特征对预测结果的边际贡献(SHAP-like values)。仅在模型训练时设置了 enable_pred_contrib=True 才有效。若设为 True,返回的是一个三维数组,形状为 (n_samples, n_features, n_classes),其中每个元素表示对应样本、对应特征对预测结果的边际贡献。对于回归任务,n_classes=1。

6. kwargs
  • 类型: 其他关键字参数

说明: 传递给底层 Booster.predict() 函数的额外参数。一般情况下不需要设置。
返回值:

如果没有启用 raw_score、pred_leaf 和 pred_contrib,返回一个一维 Numpy 数组,包含对 X 中每个样本的预测值。

如果启用了上述任一选项,返回相应类型的数组或数据结构,如原始得分、叶节点索引或特征边际贡献。

总结来说,LGBMRegressor.predict() 主要接收待预测数据 X 以及几个控制预测输出特性的参数,如指定使用多少棵树进行预测、是否返回原始得分、叶节点索引或特征边际贡献等。根据实际需求选择合适的参数,可以获得模型在不同层面的预测结果,以满足分析、解释或应用的需求。

二、LightGBM原生接口

LightGBM内置了建模方式,有如下的数据格式与核心训练方法:

  • 基于lightgbm.Dataset格式的数据。
  • 基于lightgbm.train接口训练。
import numpy as np
import pandas as pd
import lightgbm as lgb
from sklearn.model_selection import KFold

def cv_model(clf, train_x, train_y, test_x, seed=2024):
    folds = 5
    kf = KFold(n_splits=folds, shuffle=True, random_state=seed)
    oof = np.zeros(train_x.shape[0])
    test_predict = np.zeros(test_x.shape[0])
    cv_scores = []
    
    for i, (train_index, valid_index) in enumerate(kf.split(train_x, train_y)):
        print('**************** {} ****************'.format(str(i+1)))
        trn_x, trn_y, val_x, val_y = train_x.iloc[train_index], train_y[train_index], train_x.iloc[valid_index], train_y[valid_index]
        
        train_matrix = clf.Dataset(trn_x, label=trn_y)
        valid_matrix = clf.Dataset(val_x, label=val_y)
        params = {
            'boosting_type': 'gbdt',
            'objective': 'regression',
            'metric': 'rmse',
            'seed': 2023,
            'nthread' : 16,
            'verbose' : -1,
        }

        model = clf.train(params, train_matrix, valid_sets=[train_matrix, valid_matrix], verbose_eval=500, early_stopping_rounds=200)
        val_pred = model.predict(val_x, num_iteration=model.best_iteration)
        test_pred = model.predict(test_x, num_iteration=model.best_iteration)
        
        oof[valid_index] = val_pred
        test_predict += test_pred / kf.n_splits
        
        score = 1/(1+np.sqrt(mean_squared_error(val_pred, val_y)))
        cv_scores.append(score)
        print(cv_scores)
        
        if i == 0:
            imp_df = pd.DataFrame()
            imp_df["feature"] = cols
            imp_df["importance_gain"] = model.feature_importance(importance_type='gain')
            imp_df["importance_split"] = model.feature_importance(importance_type='split')
            imp_df["mul"] = imp_df["importance_gain"]*imp_df["importance_split"]
            imp_df = imp_df.sort_values(by='mul',ascending=False)
            imp_df.to_csv('feature_importance.csv', index=False)
            print(imp_df[:30])
            
    return oof, test_predict

lgb_oof, lgb_test = cv_model(lgb, train_df[cols], train_df['power'], test_df[cols])

LightGBM 是一个高效的梯度提升决策树(GBDT)框架,支持分类和回归任务。其参数众多,可以细分为以下几大类别:

基本设置

1.boosting_type:

梯度提升类型。可选值包括 ‘gbdt’(传统梯度提升决策树)、‘dart’(Dropouts meet Multiple Additive Regression Trees)、‘goss’(Gradient-based One-Side Sampling)等。默认为 ‘gbdt’。

2.objective:

目标函数。对于回归任务,常用值包括 ‘regression_l1’(L1 loss)、‘regression_l2’(L2 loss,即均方误差)、‘huber’(Huber loss)等。默认为 ‘regression’(等价于 ‘regression_l2’)。

3.metric:

评估指标。可选值包括 ‘l1’、‘l2’、‘rmse’、‘mae’、‘rmsle’ 等。可以指定多个评估指标,主指标用于早停和最优模型的选择。

数据处理与采样

4.max_bin:

构建直方图的最大bins数,影响特征离散化的精细程度。默认为 255。

5.min_data_in_bin:

一个bin中最小的数据数量。默认为 5。

6.min_child_samples:

创建子节点所需的最小样本数。默认为 20。

7.subsample:

数据采样的比例。取值范围为 (0, 1),默认为 1 表示使用全部数据。

8.sampling_method:

采样方法。可选值包括 ‘uniform’(均匀采样)和 ‘gradient_based’(基于梯度采样)。默认为 ‘uniform’。

9.colsample_bytree:

每棵树随机选择特征的比例。取值范围为 (0, 1),默认为 1 表示使用所有特征。

10.colsample_bylevel:

在每层节点分裂时使用的特征采样比例。取值范围为 (0, 1),默认为 1。

模型训练与正则化

11.learning_rate:

学习率,控制每次迭代更新权重的步长。默认为 0.1。

12.num_leaves:

每棵树的最大叶子节点数。影响模型复杂度。默认为 31。

13.min_split_gain:

创建新节点所需的最小增益。用于防止过拟合。默认为 0。

14.min_child_weight:

创建子节点所需的最小权重(样本数乘以样本权重)。默认为 1e-3。

15.lambda_l1/lambda_l2:

L1 和 L2 正则化项的系数,分别用于惩罚绝对值和平方和。默认均为 0。

16.alpha:

Dart 算法中的 dropout 参数。默认为 0。

17.n_estimators/num_iterations:

最大迭代次数(树的数量)。默认为 -1,表示无限制。

18.early_stopping_rounds:

早停轮数。当验证集分数在一定轮数内不再提升时停止训练。默认为 None。

树结构与剪枝

19.max_depth:

模型最大深度。若设置为 -1,表示不限制深度。默认为 -1。

20.tree_learner:

树学习器类型。可选值包括 ‘serial’、‘feature_parallel’、‘data_parallel’ 和 ‘voting’。默认为 ‘serial’。

21.verbosity:

输出日志的详细程度。默认为 1。

22.gamma:

节点分裂的最小损失减少。默认为 0。

23.grow_policy:

决策树增长策略。可选值包括 ‘depthwise’(深度优先)和 ‘lossguide’(损失降低优先)。默认为 ‘depthwise’。
分布式训练

24.num_threads/n_jobs:

使用的线程数。默认为 -1,表示使用所有可用CPU核心。

25.distribute: 是否开启分布式训练。默认为 False。

相关参数(如 machine_list_file、local_listen_port 等):用于配置分布式训练环境。

其他

26.seed:

随机种子,用于确保模型训练的可复现性。默认为 None。

27.callbacks:

回调函数列表,用于监控训练过程并在特定事件发生时执行操作。

lightgbm.train参数

lightgbm.train(params, train_set, num_boost_round=100, valid_sets=None, valid_names=None,
               fobj=None, feval=None, init_model=None, feature_name='auto', categorical_feature='auto',
               early_stopping_rounds=None, evals_result=None, verbose_eval=True, learning_rates=None,
               keep_training_booster=False, callbacks=None, show_stdv=True)
1.params:

字典类型,包含模型训练的参数,如 objective、metric、num_leaves、learning_rate 等。

2.train_set:

lightgbm.Dataset 类型,表示训练数据集。

3.num_boost_round:

整数,指定最大迭代次数(树的数量)。默认为 100。

4.valid_sets:

可选,lightgbm.Dataset 类型的列表,表示验证数据集。可以包含多个数据集,用于监控模型在不同数据上的表现。

5.valid_names:

可选,与 valid_sets 配对的字符串列表,为每个验证数据集指定名称。

6.fobj:

可选,自定义目标函数(Objective Function),用于替换默认的目标函数。需返回一个 (grad, hess) 元组,分别代表梯度和二阶导数。

7.feval:

可选,自定义评估函数(Evaluation Function),用于计算额外的评估指标。需返回一个 (name, value) 元组,其中 name 为指标名,value 为指标值。

8.init_model:

可选,已训练的 lightgbm.Booster 或保存的模型文件路径,用于继续训练或初始化模型。

9.feature_name:

可选,特征名称列表。默认为 ‘auto’,自动从 train_set 中获取特征名。

10.categorical_feature:

可选,类别特征索引列表或字典。默认为 ‘auto’,自动检测整数类型特征作为类别特征。

11.early_stopping_rounds:

可选,整数,早停轮数。当在指定轮数内验证集分数不再提升时停止训练。默认为 None,表示不启用早停。

12.evals_result:

可选,字典类型,用于存储每次迭代的评估结果。若提供,函数将填充此字典而不是输出到标准输出。

13.verbose_eval:

可选,布尔值或整数。默认为 True,表示在每个验证数据集上每 verbose_eval 轮输出一次评估结果。若为 False,则不输出。

14.learning_rates:

可选,列表或函数,用于指定每轮迭代的学习率。如果是一个列表,长度应等于 num_boost_round;如果是一个函数,将在每轮迭代时被调用以决定学习率。

15.keep_training_booster:

可选,布尔值。默认为 False,表示在训练结束后释放工作空间,节省内存。设为 True 则保留训练过程中使用的 Booster 对象,便于后续调用。

16.callbacks:

可选,回调函数列表,用于监控训练过程并在特定事件发生时执行操作。

17.show_stdv:

可选,布尔值。默认为 True,表示在输出评估结果时显示标准差(如果有多个数据并行验证)。

lightgbm可视化

1.特征重要性图

函数:lgb.plot_importance()
说明:绘制特征的重要性排名图,通常以特征的增益或覆盖度为度量标准。可以直观地看到哪些特征对模型预测最具影响力。

2.学习曲线图
  • 函数:lgb.plot_metric()

说明:绘制训练过程中评估指标(如损失函数、AUC、准确率等)随迭代次数的变化情况。可用于观察模型是否过拟合、欠拟合,以及何时达到最优性能。

3.特征分布直方图
  • 函数:lgb.plot_histogram()

说明:绘制单个特征在训练集、验证集(如有)和(或)测试集中的分布直方图,有助于对比不同数据集间特征分布的差异。

4.特征分裂图
  • 函数:lgb.plot_split_value_histogram()

说明:针对指定特征,绘制其在决策树分裂时所采用的阈值分布直方图,揭示模型在训练过程中如何对该特征进行分割。

5.决策树结构图
  • 函数:lgb.create_tree_digraph()(需安装 graphviz 库)

说明:生成单棵决策树的图形表示,展示树的层次结构、节点分裂条件和叶节点的预测值。通常需要配合 graphviz 库的 render 函数将生成的 DOT 文件转换为 PNG、SVG 等图像格式。

6.特征分布与分裂点图
  • 函数:lgb.plot_tree_split_value_histogram()

说明:在同一图表中同时展示特征的分布直方图和决策树在该特征上的分裂点,直观呈现特征值与模型决策的关系。

7.SHAP 贡献值分布图
  • 函数:shap.summary_plot()(需安装 shap 库)

说明:虽然不是 LightGBM 内置函数,但可以通过与 shap 库结合,绘制 SHAP(SHapley Additive exPlanations)值的分布图,展示每个特征对模型输出的平均效应及其分布情况。
这些函数通常返回 matplotlib 图形对象,可以直接显示或进一步定制。例如:

import lightgbm as lgb
import matplotlib.pyplot as plt

# 假设已训练好一个 LightGBM 模型,并有相应的数据集
model = lgb.Booster(model_file='my_model.txt')
train_data = lgb.Dataset(X_train, y_train)

# 绘制特征重要性图
plt.figure(figsize=(10, 6))
lgb.plot_importance(model, max_num_features=20, importance_type='gain')
plt.title('Feature Importance (Gain)')
plt.show()

# 绘制学习曲线
evals_result = model.evals_result_
lgb.plot_metric(evals_result, metric='rmse')
plt.show()

plt.title('Learning Curve')
lgb.plot_histogram(train_data, feature='feature_name', bins=20)
plt.title('Feature Distribution')
plt.show()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/560365.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Unity地形关联出错的解决办法以及地形深度拷贝

问题 最近发现unity地形系统的一个bug,导入的场景地形数据关联错乱了,关联到别的场景的地形数据了,meta替换了也没用,不清楚它具体是怎么关联的。 看下面的案例: 可以看到正常这个场景的地形数据应该关联的是Scene_E…

力扣HOT100 - 142. 环形链表 II

解题思路&#xff1a; public class Solution {public ListNode detectCycle(ListNode head) {Set<ListNode> set new HashSet<>();while (head ! null) {if (!set.add(head)) {return head;}head head.next;}return null;} }

文心一言 VS 讯飞星火 VS chatgpt (241)-- 算法导论17.3 7题

七、为动态整数多重集 S (允许包含重复值)设计一种数据结构&#xff0c;支持如下两个操作&#xff1a;① INSERT(S,x) 将 x 插入 S 中&#xff1b;② DELETE-LARGER-HALF(S) 将最大的 ⌈|S|/2⌉ 个元素从S中删除。解释如何实现这种数据结构&#xff0c;使得任意 m 个 INSERT 和…

Linux的firewalld防火墙

介绍firewalld&#xff1a; ①、firewalld&#xff08;Dynamic Firewall Manager of Linux systems&#xff0c;Linux系统的动态防火墙管理器&#xff09;服务是默认的防火墙配置管理工具&#xff0c;它拥有基于CLI&#xff08;命令行界面&#xff09;和基于GUI&#xff08;图…

Web Tours系统使用说明书

1.系统简介 产品名称&#xff1a;LoadRunner的Web Tours系统 产品功能&#xff1a;注册和登录用户信息、订票办理、退片办理、查询已定票信息、退出系统 系统默认用户&#xff1a;用户名jojo 密码&#xff1a;bean 2. 功能简介 2.1 注册用户信息 点击 sign up now&#xff…

(自学用)正演理论

基于波动方程如何解决数值频散问题——快速正演方法 NAD方法&#xff1a; 怎样离散/逼近高阶偏导数&#xff08;如何采样&#xff09;&#xff1a; 传统方法是用某一点及其周围点的函数f的线性组合来逼近导数。只有函数值&#xff0c;要想提高精度&#xff0c;压制数值频散就必…

(C语言)fscanf与fprintf函数详解

目录 1 fprintf详解 1.1 向文件流中输入数据 1.2 向标准输入流写数据 2. fscanf函数详解 2.1 从文件中读取格式化数据 2.2 从标准输入流中读取格式化数据 1 fprintf详解 头文件&#xff1a;stdio.h 该函数和printf的参数特别像&#xff0c;只是多了一个参数stream&#…

Unity类银河恶魔城学习记录13-5,6 p146 Delete save file,p147 Encryption of saved data源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释&#xff0c;可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili FileDataHandler.cs using System; using System.IO; using UnityEngine; p…

现代农业AI智能化升级之路:机器学习在现代农业领域的现状与未来发展

&#x1f9d1; 作者简介&#xff1a;阿里巴巴嵌入式技术专家&#xff0c;深耕嵌入式人工智能领域&#xff0c;具备多年的嵌入式硬件产品研发管理经验。 &#x1f4d2; 博客介绍&#xff1a;分享嵌入式开发领域的相关知识、经验、思考和感悟&#xff0c;欢迎关注。提供嵌入式方向…

Android AIDL接口

一.AlDI接口简介 AIDL&#xff08;Android Interface Definition Language&#xff09;是一种 IDL 语言&#xff0c;用于生成可以在 Android 设备上两个进程之间进行进程间通信&#xff08;IPC&#xff09;的代码。 通过 AIDL&#xff0c;可以在一个进程中获取另一个进程的数据…

力扣112,路径总和

给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径&#xff0c;这条路径上所有节点值相加等于目标和 targetSum 。如果存在&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 叶子节点 是指没有子节点…

.cur 鼠标光标编辑器

详解透明贴图和三元光栅操作 - CodeBus 鼠标指针文件格式解析——Windows&#xff08;二&#xff09; (qq.com) [C/C] RGBA数组生成Windows下的ico文件_c ico格式-CSDN博客 色环设计 - CodeBus 左键绘制 右键选颜色 ctrl右键设置鼠标热点 F1导出.cur文件 //代码来源&…

分组查询得到一列多行数据后,怎么用来和表中的某列数据进行一一比较

#10&#xff09;查询每个学生超过他自己选修课程平均成绩的课程号 这里要先进行分组得到每个学号对应的平均成绩&#xff0c;在用表中的成绩grade与得到的平均成绩一一比较 这里可以进行连表操作&#xff0c;把分组查询得到的结果与原表通过sno学号进行等值连接 &#xff0c;就…

轻量级SQLite可视化工具Sqliteviz

什么是 Sqliteviz &#xff1f; Sqliteviz 是一个单页面离线优先的渐进式网络应用&#xff08;PWA&#xff09;&#xff0c;用于完全客户端的 SQLite 数据库或 CSV 文件的可视化。 所谓完全客户端&#xff0c;就是您的数据库永远不会离开您的计算机。使用 sqliteviz&#xff0c…

ubuntu server 安装emqx tdengine

文章目录 1 安装emqx2 安装taos 1 安装emqx 86 wget https://www.emqx.com/zh/downloads/broker/5.6.0/emqx-5.6.0-ubuntu22.04-amd64.deb87 ls88 pwd89 sudo apt install ./emqx-5.6.0-ubuntu22.04-amd64.deb90 sudo systemctl start emqx91 systemctl status emqx92 s…

C语言求自幂数(水仙花数与其他自幂数)

前言 今天我们来看一下如果求解自幂数&#xff08;水仙花数&#xff09;&#xff0c;水仙花数是自幂数的一种&#xff0c;我们来看看自幂数的概念吧&#xff0c;当一个n位数&#xff0c;它的每个位上的数字的n次幂之和等于它本身的时候&#xff0c;我们称这个数为自幂数。水仙花…

文本溢出体验进阶:CSS 技巧实现单行/多行隐藏展示以及实际场景应用,确保内容可读性和布局整洁性

CSS文本溢出隐藏是一种常见的场景&#xff0c;它广泛应用于各种网页设计中&#xff0c;旨在确保内容的可读性和布局的整洁性&#xff0c;特别是在空间有限或需要适应不同屏幕尺寸的情况下。 一、文本溢出隐藏并显示省略号 1、单行文本溢出隐藏并显示省略号 对于单行文本&…

怎么找程序员对象?和程序员谈恋爱是什么体验?

和程序员谈恋爱是一种非常累的体验&#xff0c;因为他们大部分时间都会加班&#xff0c;守在电脑面前不能够陪自己。但是这样的男孩子&#xff0c;忠诚、认真、不会花花草草、收入贼高&#xff0c;恋爱幸福指数接近满分哦&#xff01; 程序员都是宅男&#xff0c;都是电脑狂魔&…

中科院JCR期刊分区介绍

文章目录 1. 背景2. 简介3. 学科分类方法4. 分区表计算方法5. 分区指标说明5.1 IF5.2 3年平均IF5.3 CI 6. 中科院分区和JCR期刊分区有哪些异同&#xff1f;6.1 数据基础相同6.2 学科划分小类部分相同 1. 背景 SCI作为论文与引文分析的重要手段, 被国内各级科研管理部门所重视,…

stm32开发之threadx之modulex模块文件的生成脚本项目

前言 为了保证在window上运行&#xff0c;且体积小的问题&#xff0c;所以采用c语言编写生成脚本,将相关路径由json文件进行配置,使用了一个cjson库进行解析项目构建使用的是cmake 项目代码 CMakeLists文件 cmake_minimum_required(VERSION 3.27) project(txm_bat_script C…
最新文章