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
的次数。默认为100
valid_sets
:一个Dataset
的列表或者None
,给出了训练期间用于evaluate
的数据集。默认为None
valid_names
:一个字符串列表或者None
, 给出了valid_sets
中每个数据集的名字。默认为None
fobj
:一个可调用对象或者None
,表示自定义的目标函数。默认为None
feval
:一个可调用对象或者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
实例的基础上继续训练。默认为None
feature_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
中指定的所有验证集的所有验证结果。默认为None
verbose_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
实例
学员评价