20分钟
直接学习
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)参数:
params: 一个字典,给出了训练参数train_set: 一个Dataset对象,给出了训练集num_boost_round: 一个整数,给出了boosting iteration的次数。默认为100valid_sets:一个Dataset的列表或者None,给出了训练期间用于evaluate的数据集。默认为Nonevalid_names:一个字符串列表或者None, 给出了valid_sets中每个数据集的名字。默认为Nonefobj:一个可调用对象或者None,表示自定义的目标函数。默认为Nonefeval:一个可调用对象或者None, 它表示自定义的evaluation函数。默认为None。它的输入为(y_true, y_pred)、或者( y_true, y_pred, weight)、或者(y_true, y_pred, weight, group), 返回一个元组:(eval_name,eval_result,is_higher_better)。或者返回该元组的列表。init_model:一个字符串或者None,它给出了lightgbm model保存的文件名,或者Booster实例的名字。后续的训练在该model或者Booster实例的基础上继续训练。默认为Nonefeature_name: 一个字符串列表或者'auto',它指定了特征的名字。默认为'auto'- 如果数据源为
pandas DataFrame并且feature_name='auto',则使用DataFrame的column names
- 如果数据源为
categorical_feature:一个字符串列表、整数列表、或者'auto'。它指定了categorical特征。默认为'auto'- 如果是整数列表,则给定了
categorical特征的下标 - 如果是字符串列表,在给定了
categorical特征的名字。此时必须设定feature_name参数。 - 如果是
'auto'并且数据源为pandas DataFrame,则DataFrame的categorical列将作为categorical特征
- 如果是整数列表,则给定了
early_stopping_rounds:一个整数或者None,表示验证集的score在连续多少轮未改善之后就早停。默认为None该参数要求至少有一个验证集以及一个metric。 如果由多个验证集或者多个metric,则对所有的验证集和所有的metric执行。 如果发生了早停,则模型会添加一个best_iteration字段。该字段持有了最佳的迭代步。evals_result:一个字典或者None,这个字典用于存储在valid_sets中指定的所有验证集的所有验证结果。默认为Noneverbose_eval:一个布尔值或者整数。默认为True- 如果是
True,则在验证集上每个boosting stage打印对验证集评估的metric。 - 如果是整数,则每隔
verbose_eval个boosting stage打印对验证集评估的metric。 - 否则,不打印这些
该参数要求至少由一个验证集。
- 如果是
learning_rates:一个列表、None、 可调用对象。它指定了学习率。默认为None- 如果为列表,则它给出了每一个
boosting步的学习率 - 如果为一个可调用对象,则在每个
boosting步都调用它,从而生成一个学习率 - 如果为一个数值,则学习率在学习期间都固定为它。
你可以使用学习率衰减从而生成一个更好的学习率序列。
- 如果为列表,则它给出了每一个
keep_training_booster:一个布尔值,指示训练得到的Booster对象是否还会继续训练。默认为False- 如果为
False,则返回的booster对象在返回之前将被转换为_InnerPredictor。 当然你也可以将_InnerPredictor传递给init_model参数从而继续训练。
- 如果为
callbacks:一个可调用对象的列表,或者None。 它给出了在每个迭代步之后需要执行的函数。默认为None
返回:一个Booster 实例
学员评价