lightgbm.cv
- lightgbm.cv(params, train_set, num_boost_round=100, folds=None, nfold=5, stratified=True, shuffle=True, metrics=None, feval=None, init_model=None, feature_name='auto', categorical_feature='auto', fpreproc=None, seed=0, callbacks=None, eval_train_metric=False, return_cvbooster=False)[源代码]
使用给定的参数执行交叉验证。
- 参数:
params (dict) – 训练参数。通过
params
传递的值优先于通过参数提供的值。train_set (Dataset) – 要训练的数据。
num_boost_round (int, optional (default=100)) – 提升迭代的次数。
folds (generator or iterator of (train_idx, test_idx) tuples, scikit-learn splitter object or None, optional (default=None)) – 如果是生成器或迭代器,它应该为每个折叠生成训练和测试索引。如果是对象,它应该是scikit-learn的分割器类之一(https://scikit-learn.org/stable/modules/classes.html#splitter-classes)并具有``split``方法。此参数在其他数据分割参数中具有最高优先级。
nfold (int, optional (default=5)) – CV 中的折数。
stratified (bool, optional (default=True)) – 是否进行分层抽样。
shuffle (bool, optional (default=True)) – 是否在分割数据前进行洗牌。
metrics (str, list of str, or None, optional (default=None)) – 在CV期间要监控的评估指标。如果不是None,``params``中的指标将被覆盖。
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
。
要忽略与所用目标对应的默认指标,请将
metrics
设置为字符串"None"
。init_model (str, pathlib.Path, Booster or None, optional (default=None)) – 用于继续训练的 LightGBM 模型文件名或 Booster 实例。
feature_name (list of str, or 'auto', optional (default="auto")) – 已弃用。 请在
train_set
上设置feature_name
。特征名称。如果为 ‘auto’ 且数据为 pandas DataFrame,则使用数据列名称。categorical_feature (list of str or int, or 'auto', optional (default="auto")) – 已弃用。 请在
train_set
上设置categorical_feature
。分类特征。如果是整数列表,则解释为索引。如果是字符串列表,则解释为特征名称(还需要指定feature_name
)。如果是 ‘auto’ 并且数据是 pandas DataFrame,则使用 pandas 无序分类列。分类特征中的所有值将被转换为 int32,因此应小于 int32 的最大值(2147483647)。大值可能会消耗大量内存。建议使用从零开始的连续整数。分类特征中的所有负值将被视为缺失值。输出不能相对于分类特征进行单调约束。分类特征中的浮点数将向 0 舍入。fpreproc (callable or None, optional (default=None)) – 预处理函数,接受 (dtrain, dtest, params) 并返回这些内容的转换版本。
seed (int, optional (default=0)) – 用于生成折叠的种子(传递给 numpy.random.seed)。
callbacks (list of callable, or None, optional (default=None)) – 在每次迭代时应用的回调函数列表。更多信息请参见 Python API 中的回调函数。
eval_train_metric (bool, optional (default=False)) – 是否在训练过程中显示训练指标。每次训练步骤后都会重新计算指标的分数,因此会对性能产生一定影响。
return_cvbooster (bool, optional (default=False)) – 是否通过
CVBooster
返回在每个折叠上训练的 Booster 模型。
备注
可以为
objective
参数提供自定义目标函数。它应接受两个参数:preds, train_data 并返回 (grad, hess)。- 预测numpy 一维数组或 numpy 二维数组(用于多类任务)
预测值。预测值在任何转换之前返回,例如,对于二分类任务,它们是原始边际而不是正类的概率。
- 训练数据数据集
训练数据集。
- 梯度numpy 一维数组或 numpy 二维数组(用于多类任务)
每个样本点相对于preds元素的损失的一阶导数(梯度)的值。
- hessnumpy 一维数组或 numpy 二维数组(用于多类任务)
每个样本点关于 preds 元素的损失的二阶导数(Hessian)的值。
对于多类任务,preds 是形状为 [n_样本, n_类] 的 numpy 二维数组,grad 和 hess 应以相同格式返回。
- 返回:
eval_results – 每个指标的评估结果历史。字典具有以下格式:{‘valid metric1-mean’: [values], ‘valid metric1-stdv’: [values], ‘valid metric2-mean’: [values], ‘valid metric2-stdv’: [values], …}。如果
return_cvbooster=True
,还会通过cvbooster
键返回一个包含训练好的提升器的CVBooster
对象。如果eval_train_metric=True
,还会返回训练指标历史。在这种情况下,字典具有以下格式:{‘train metric1-mean’: [values], ‘valid metric1-mean’: [values], ‘train metric2-mean’: [values], ‘valid metric2-mean’: [values], …}。- 返回类型:
dict