lightgbm.Booster
- class lightgbm.Booster(params=None, train_set=None, model_file=None, model_str=None)[源代码]
基类:
object
LightGBM 中的 Booster。
- __init__(params=None, train_set=None, model_file=None, model_str=None)[源代码]
初始化加速器。
- 参数:
params (dict or None, optional (default=None)) – Booster 的参数
train_set (Dataset or None, optional (default=None)) – 训练数据集。
model_file (str, pathlib.Path or None, optional (default=None)) – 模型文件的路径。
model_str (str or None, optional (default=None)) – 模型将从该字符串加载。
方法
__init__
([params, train_set, model_file, ...])初始化加速器。
add_valid
(data, name)添加验证数据。
获取当前迭代的索引。
dump_model
([num_iteration, start_iteration, ...])将 Booster 转储为 JSON 格式。
eval
(data, name[, feval])评估数据。
eval_train
([feval])评估训练数据。
eval_valid
([feval])评估验证数据。
feature_importance
([importance_type, iteration])获取特征重要性。
获取特征的名称。
Free Booster 的数据集。
Free Booster 的网络。
get_leaf_output
(tree_id, leaf_id)获取叶子的输出。
get_split_value_histogram
(feature[, bins, ...])获取指定特征的分割值直方图。
获取模型的下限值。
model_from_string
(model_str)从字符串加载 Booster。
model_to_string
([num_iteration, ...])将 Booster 保存为字符串。
获取特征数量。
获取每次迭代的模型数量。
获取弱子模型的数量。
predict
(data[, start_iteration, ...])做出预测。
refit
(data, label[, decay_rate, reference, ...])用新数据重新调整现有助推器。
reset_parameter
(params)重置 Booster 的参数。
回滚一个迭代。
save_model
(filename[, num_iteration, ...])将助推器保存到文件。
set_leaf_output
(tree_id, leaf_id, value)设置叶子的输出。
set_network
(machines[, local_listen_port, ...])设置网络配置。
set_train_data_name
(name)将名称设置为训练数据集。
shuffle_models
([start_iteration, end_iteration])洗牌模型。
解析拟合的模型并以易于阅读的 pandas DataFrame 形式返回。
update
([train_set, fobj])更新助推器进行一次迭代。
获取模型的上界值。
- dump_model(num_iteration=None, start_iteration=0, importance_type='split', object_hook=None)[源代码]
将 Booster 转储为 JSON 格式。
- 参数:
num_iteration (int or None, optional (default=None)) – 应转储的迭代索引。如果为 None,如果存在最佳迭代,则转储最佳迭代;否则,转储所有迭代。如果 <= 0,则转储所有迭代。
start_iteration (int, optional (default=0)) – 应该转储的迭代的起始索引。
importance_type (str, optional (default="split")) – 应该转储哪种特征重要性。如果选择“split”,结果包含特征在模型中使用的次数。如果选择“gain”,结果包含使用该特征的分割的总增益。
object_hook (callable or None, optional (default=None)) – 如果不是 None,
object_hook
是在解析 C API 返回的 json 字符串时调用的函数。它可用于修改 json,在构建 json 结构时存储特定值。它避免了再次遍历结构。如果树的数量巨大,它可以节省大量时间。签名是def object_hook(node: dict) -> dict
。None 等同于lambda node: node
。有关更多详细信息,请参阅json.loads()
的文档。
- 返回:
json_repr – Booster 的 JSON 格式。
- 返回类型:
dict
- eval(data, name, feval=None)[源代码]
评估数据。
- 参数:
data (Dataset) – 评估数据。
name (str) – 数据名称。
feval (callable, list of callable, or None, optional (default=None)) –
自定义评估函数。每个评估函数应接受两个参数:preds, eval_data,并返回 (eval_name, eval_result, is_higher_better) 或此类元组的列表。
- 预测numpy 一维数组或 numpy 二维数组(用于多类任务)
预测值。对于多分类任务,preds 是形状为 [n_samples, n_classes] 的 numpy 二维数组。如果使用了自定义目标函数,预测值在任何转换之前返回,例如在这种情况下,它们是原始边际而不是二分类任务中正类的概率。
- eval_data数据集
一个用于评估的
Dataset
。- eval_namestr
评估函数的名称(不包含空格)。
- eval_result浮动
评估结果。
- is_higher_better布尔
评估结果是否越高越好,例如 AUC 是
is_higher_better
。
- 返回:
结果 – 包含 (数据集名称, 评估名称, 评估结果, 是否越高越好) 元组的列表。
- 返回类型:
list
- eval_train(feval=None)[源代码]
评估训练数据。
- 参数:
feval (callable, list of callable, or None, optional (default=None)) –
自定义评估函数。每个评估函数应接受两个参数:preds, eval_data,并返回 (eval_name, eval_result, is_higher_better) 或此类元组的列表。
- 预测numpy 一维数组或 numpy 二维数组(用于多类任务)
预测值。对于多分类任务,preds 是形状为 [n_samples, n_classes] 的 numpy 二维数组。如果使用了自定义目标函数,预测值在任何转换之前返回,例如在这种情况下,它们是原始边际而不是二分类任务中正类的概率。
- eval_data数据集
训练数据集。
- eval_namestr
评估函数的名称(不包含空格)。
- eval_result浮动
评估结果。
- is_higher_better布尔
评估结果是否越高越好,例如 AUC 是
is_higher_better
。
- 返回:
结果 – 包含 (训练数据集名称, 评估名称, 评估结果, 是否越高越好) 元组的列表。
- 返回类型:
list
- eval_valid(feval=None)[源代码]
评估验证数据。
- 参数:
feval (callable, list of callable, or None, optional (default=None)) –
自定义评估函数。每个评估函数应接受两个参数:preds, eval_data,并返回 (eval_name, eval_result, is_higher_better) 或此类元组的列表。
- 预测numpy 一维数组或 numpy 二维数组(用于多类任务)
预测值。对于多分类任务,preds 是形状为 [n_samples, n_classes] 的 numpy 二维数组。如果使用了自定义目标函数,预测值在任何转换之前返回,例如在这种情况下,它们是原始边际而不是二分类任务中正类的概率。
- eval_data数据集
验证数据集。
- eval_namestr
评估函数的名称(不包含空格)。
- eval_result浮动
评估结果。
- is_higher_better布尔
评估结果是否越高越好,例如 AUC 是
is_higher_better
。
- 返回:
result – 包含 (validation_dataset_name, eval_name, eval_result, is_higher_better) 元组的列表。
- 返回类型:
list
- feature_importance(importance_type='split', iteration=None)[源代码]
获取特征重要性。
- 参数:
importance_type (str, optional (default="split")) – 重要性是如何计算的。如果选择“分割”,结果包含特征在模型中使用的次数。如果选择“增益”,结果包含使用该特征的分割的总增益。
iteration (int or None, optional (default=None)) – 限制特征重要性计算中的迭代次数。如果为 None,如果存在最佳迭代,则使用它;否则,使用所有树。如果 <= 0,则使用所有树(无限制)。
- 返回:
结果 – 包含特征重要性的数组。
- 返回类型:
numpy array
- get_leaf_output(tree_id, leaf_id)[源代码]
获取叶子的输出。
- 参数:
tree_id (int) – 树的索引。
leaf_id (int) – 树中叶子的索引。
- 返回:
结果 – 叶子的输出。
- 返回类型:
float
- get_split_value_histogram(feature, bins=None, xgboost_style=False)[源代码]
获取指定特征的分割值直方图。
- 参数:
feature (int or str) – 直方图计算所针对的特征名称或索引。如果是整数,则解释为索引。如果是字符串,则解释为名称。 .. warning:: 不支持分类特征。
bins (int, str or None, optional (default=None)) – 最大分箱数。如果为 None,或者为 int 且大于唯一分割值的数量并且
xgboost_style=True
,则分箱数等于唯一分割值的数量。如果为 str,则应为numpy.histogram()
函数支持的值列表中的一个。xgboost_style (bool, optional (default=False)) – 返回的结果是否应与在XGBoost中的形式相同。如果为False,返回值是两个numpy数组的元组,如同在
numpy.histogram()
函数中那样。如果为True,返回值是一个矩阵,其中第一列是非空箱的右边缘,第二列是直方图值。
- 返回:
result_tuple (2个numpy数组的元组) – 如果
xgboost_style=False
,则为指定特征的分裂值直方图的值和箱边缘。result_array_like (numpy 数组或 pandas DataFrame(如果安装了 pandas)) – 如果
xgboost_style=True
,则为指定特征的使用分割值的直方图。
- model_from_string(model_str)[源代码]
从字符串加载 Booster。
- 参数:
model_str (str) – 模型将从该字符串加载。
- 返回:
self – 加载的 Booster 对象。
- 返回类型:
- model_to_string(num_iteration=None, start_iteration=0, importance_type='split')[源代码]
将 Booster 保存为字符串。
- 参数:
num_iteration (int or None, optional (default=None)) – 应保存的迭代索引。如果为 None,如果存在最佳迭代,则保存最佳迭代;否则,保存所有迭代。如果 <= 0,则保存所有迭代。
start_iteration (int, optional (default=0)) – 应保存的迭代的起始索引。
importance_type (str, optional (default="split")) – 应该保存哪种类型的特征重要性。如果选择“split”,结果包含特征在模型中使用的次数。如果选择“gain”,结果包含使用该特征的分割的总增益。
- 返回:
str_repr – Booster 的字符串表示。
- 返回类型:
str
- predict(data, start_iteration=0, num_iteration=None, raw_score=False, pred_leaf=False, pred_contrib=False, data_has_header=False, validate_features=False, **kwargs)[源代码]
做出预测。
- 参数:
data (str, pathlib.Path, numpy array, pandas DataFrame, pyarrow Table, H2O DataTable's Frame or scipy.sparse) – 预测的数据源。如果是 str 或 pathlib.Path,它表示指向一个文本文件(CSV、TSV 或 LibSVM)的路径。
start_iteration (int, optional (default=0)) – 开始预测的迭代索引。如果 <= 0,则从第一次迭代开始。
num_iteration (int or None, optional (default=None)) – 预测中使用的总迭代次数。如果为 None,如果存在最佳迭代并且 start_iteration <= 0,则使用最佳迭代;否则,使用从
start_iteration
开始的所有迭代(无限制)。如果 <= 0,则使用从start_iteration
开始的所有迭代(无限制)。raw_score (bool, optional (default=False)) – 是否预测原始分数。
pred_leaf (bool, optional (default=False)) – 是否预测叶索引。
pred_contrib (bool, optional (default=False)) – 是否预测特征贡献。 .. 注意:: 如果你想使用 SHAP 值为你的模型预测获得更多解释, 比如 SHAP 交互值, 你可以安装 shap 包 (https://github.com/slundberg/shap)。 请注意,与 shap 包不同,使用
pred_contrib
我们返回一个带有额外列的矩阵,其中最后一列是期望值。data_has_header (bool, optional (default=False)) – 数据是否有标题。仅在数据为字符串时使用。
validate_features (bool, optional (default=False)) – 如果为真,确保用于预测的特征与用于训练的特征匹配。仅在数据为 pandas DataFrame 时使用。
**kwargs – 预测的其他参数。
- 返回:
result – 预测结果。可以是稀疏的或稀疏对象列表(每个元素代表一个类的预测)用于特征贡献(当
pred_contrib=True
时)。- 返回类型:
numpy array, scipy.sparse or list of scipy.sparse
- refit(data, label, decay_rate=0.9, reference=None, weight=None, group=None, init_score=None, feature_name='auto', categorical_feature='auto', dataset_params=None, free_raw_data=True, validate_features=False, **kwargs)[源代码]
用新数据重新调整现有助推器。
- 参数:
data (str, pathlib.Path, numpy array, pandas DataFrame, H2O DataTable's Frame, scipy.sparse, Sequence, list of Sequence or list of numpy array) – refit 的数据源。如果是 str 或 pathlib.Path,它表示指向一个文本文件(CSV、TSV 或 LibSVM)的路径。
label (list, numpy 1-D array, pandas Series / one-column DataFrame, pyarrow Array or pyarrow ChunkedArray) – 重构的标签。
decay_rate (float, optional (default=0.9)) – 重拟合的衰减率,将使用
leaf_output = decay_rate * old_leaf_output + (1.0 - decay_rate) * new_leaf_output
来重拟合树。reference (Dataset or None, optional (default=None)) –
data
的参考。 .. versionadded:: 4.0.0weight (list, numpy 1-D array, pandas Series, pyarrow Array, pyarrow ChunkedArray or None, optional (default=None)) – 每个
data
实例的权重。权重应为非负数。 .. versionadded:: 4.0.0group (list, numpy 1-D array, pandas Series, pyarrow Array, pyarrow ChunkedArray or None, optional (default=None)) –
data
的组/查询大小。仅在排序学习任务中使用。sum(group) = n_samples。例如,如果您有一个包含 100 个文档的数据集,且group = [10, 20, 40, 10, 10, 10]
,这意味着您有 6 个组,其中前 10 条记录在第一组,记录 11-30 在第二组,记录 31-70 在第三组,依此类推。 .. versionadded:: 4.0.0init_score (list, list of lists (for multi-class task), numpy array, pandas Series, pandas DataFrame (for multi-class task), pyarrow Array, pyarrow ChunkedArray, pyarrow Table (for multi-class task) or None, optional (default=None)) –
data
的初始分数。 .. versionadded:: 4.0.0feature_name (list of str, or 'auto', optional (default="auto")) –
data
的特征名称。如果为 ‘auto’ 且数据是 pandas DataFrame,则使用数据列名。 .. versionadded:: 4.0.0categorical_feature (list of str or int, or 'auto', optional (default="auto")) –
data
的分类特征。如果是整数列表,则解释为索引。如果是字符串列表,则解释为特征名称(还需要指定feature_name
)。如果是 ‘auto’ 并且数据是 pandas DataFrame,则使用 pandas 的无序分类列。分类特征中的所有值将被转换为 int32,因此应小于 int32 的最大值(2147483647)。大值可能会消耗大量内存。建议使用从零开始的连续整数。分类特征中的所有负值将被视为缺失值。输出不能相对于分类特征进行单调约束。分类特征中的浮点数将向 0 舍入。 .. versionadded:: 4.0.0dataset_params (dict or None, optional (default=None)) – 数据集
data
的其他参数。 .. versionadded:: 4.0.0free_raw_data (bool, optional (default=True)) – 如果为 True,则在构建
data
的内部数据集后释放原始数据。 .. versionadded:: 4.0.0validate_features (bool, optional (default=False)) – 如果为 True,确保用于重新拟合模型的特征与原始特征匹配。仅在数据为 pandas DataFrame 时使用。 .. versionadded:: 4.0.0
**kwargs – refit 的其他参数。这些参数将被传递给
predict
方法。
- 返回:
结果 – 重新改装的助推器。
- 返回类型:
- reset_parameter(params)[源代码]
重置 Booster 的参数。
- 参数:
params (dict) – Booster 的新参数
- 返回:
self – 带有新参数的提升器。
- 返回类型:
- save_model(filename, num_iteration=None, start_iteration=0, importance_type='split')[源代码]
将助推器保存到文件。
- 参数:
filename (str or pathlib.Path) – 保存助推器的文件名。
num_iteration (int or None, optional (default=None)) – 应保存的迭代索引。如果为 None,如果存在最佳迭代,则保存最佳迭代;否则,保存所有迭代。如果 <= 0,则保存所有迭代。
start_iteration (int, optional (default=0)) – 应保存的迭代的起始索引。
importance_type (str, optional (default="split")) – 应该保存哪种类型的特征重要性。如果选择“split”,结果包含特征在模型中使用的次数。如果选择“gain”,结果包含使用该特征的分割的总增益。
- 返回:
self – 返回自身。
- 返回类型:
- set_leaf_output(tree_id, leaf_id, value)[源代码]
设置叶子的输出。
Added in version 4.0.0.
- 参数:
tree_id (int) – 树的索引。
leaf_id (int) – 树中叶子的索引。
value (float) – 设置为叶子的输出值。
- 返回:
self – 设置了叶子输出的提升器。
- 返回类型:
- set_network(machines, local_listen_port=12400, listen_time_out=120, num_machines=1)[源代码]
设置网络配置。
- 参数:
machines (list, set or str) – 机器的名称。
local_listen_port (int, optional (default=12400)) – 本地机器的TCP监听端口。
listen_time_out (int, optional (default=120)) – 套接字超时时间,单位为分钟。
num_machines (int, optional (default=1)) – 分布式学习应用的机器数量。
- 返回:
self – 带有设置网络的助推器。
- 返回类型:
- set_train_data_name(name)[源代码]
将名称设置为训练数据集。
- 参数:
name (str) – 训练数据集的名称。
- 返回:
self – 带有设置训练数据集名称的提升器。
- 返回类型:
- shuffle_models(start_iteration=0, end_iteration=-1)[源代码]
洗牌模型。
- 参数:
start_iteration (int, optional (default=0)) – 将要被打乱的第一次迭代。
end_iteration (int, optional (default=-1)) – 将要进行洗牌的最后一次迭代。如果 <= 0,则表示最后一次可用迭代。
- 返回:
self – 带有打乱模型的提升器。
- 返回类型:
- trees_to_dataframe()[源代码]
解析拟合的模型并以易于阅读的 pandas DataFrame 形式返回。
返回的 DataFrame 具有以下列。
tree_index
: int64, 节点所属的树。从0开始,因此例如值为6
意味着“此节点在第7棵树中”。node_depth
: int64, 节点距离树根的深度。根节点的值为1
,其直接子节点为2
,依此类推。node_index
: str, 节点的唯一标识符。left_child
: str, 分割点左侧子节点的node_index
。叶子节点则为None
。right_child
: str, 分割右侧子节点的node_index
。叶子节点为None
。parent_index
: str, 此节点的父节点的node_index
。根节点为None
。split_feature
: str, 用于分割的特征名称。叶子节点为None
。split_gain
: float64, 将此分割添加到树中获得的增益。叶子节点为NaN
。threshold
: float64, 用于决定记录将沿分割的哪一侧下降的特征值。叶子节点为NaN
。decision_type
: str, 描述如何将值与threshold
进行比较的逻辑运算符。例如,split_feature = "Column_10", threshold = 15, decision_type = "<="
意味着记录中Column_10 <= 15
的部分遵循分割的左侧,否则遵循分割的右侧。叶子节点为None
。missing_direction
: str, 缺失值应流向的方向。对于叶节点,则为None
。missing_type
: str, 描述了哪些类型的值被视为缺失。value
: float64, 此叶节点的预测值,乘以学习率。weight
: float64 或 int64, Hessian 的总和(目标的二阶导数),对落入该节点的观测值求和。count
: int64, 训练数据中落入此节点的记录数量。
- 返回:
结果 – 返回解析模型的 pandas DataFrame。
- 返回类型:
pandas DataFrame
- update(train_set=None, fobj=None)[源代码]
更新助推器进行一次迭代。
- 参数:
train_set (Dataset or None, optional (default=None)) – 训练数据。如果为 None,则使用上一次的训练数据。
fobj (callable or None, optional (default=None)) –
自定义目标函数。应接受两个参数:preds, train_data,并返回 (grad, hess)。
- 预测numpy 一维数组或 numpy 二维数组(用于多类任务)
预测值。预测值在任何转换之前返回,例如,对于二分类任务,它们是原始边际而不是正类的概率。
- 训练数据数据集
训练数据集。
- 梯度numpy 一维数组或 numpy 二维数组(用于多类任务)
每个样本点相对于preds元素的损失的一阶导数(梯度)的值。
- hessnumpy 一维数组或 numpy 二维数组(用于多类任务)
每个样本点关于 preds 元素的损失的二阶导数(Hessian)的值。
对于多类任务,preds 是形状为 [n_样本, n_类] 的 numpy 二维数组,grad 和 hess 应以相同格式返回。
- 返回:
is_finished – 更新是否成功完成。
- 返回类型:
bool