7分钟
xgboost.cv()
xgboost.cv(): 使用给定的参数执行交叉验证 。它常用作参数搜索 。
xgboost.cv(params, dtrain, num_boost_round=10, nfold=3, stratified=False, folds=None,
metrics=(), obj=None, feval=None, maximize=False, early_stopping_rounds=None,
fpreproc=None, as_pandas=True, verbose_eval=None, show_stdv=True, seed=0,
callbacks=None, shuffle=True)- 参数:
params: 一个列表(元素为键值对)、一个字典,表示训练的参数dtrain:一个DMatrix对象,表示训练集num_boost_round: 一个整数,表示boosting迭代数量nfold: 一个整数,表示交叉验证的fold的数量stratified: 一个布尔值。如果为True,则执行分层采样folds: 一个scikit-learn的KFold实例或者StratifiedKFold实例。metrics:一个字符串或者一个字符串的列表,指定了交叉验证时的evaluation metrics如果同时在params里指定了eval_metric,则metrics参数优先。obj:一个函数,它表示自定义的目标函数feval: 一个函数,它表示自定义的evaluation函数maximize: 一个布尔值。如果为True,则表示是对feval求最大值;否则为求最小值early_stopping_rounds:一个整数,表示早停参数。 如果在early_stopping_rounds个迭代步内,验证集的验证误差没有下降,则训练停止。- 返回
evaluation history结果中的最后一项是最佳的迭代步的评估结果
- 返回
fpreproc: 一个函数。它是预处理函数,其参数为(dtrain,dtest,param), 返回值是经过了变换之后的(dtrain,dtest,param)as_pandas: 一个布尔值。如果为True,则返回一个pandas.DataFrame;否则返回一个numpy.ndarrayverbose_eval: 参考xgboost.train()show_stdv: 一个布尔值。是否verbose中打印标准差。 它对返回结果没有影响。返回结果始终包含标准差。seed: 一个整数,表示随机数种子callbacks: 参考xgboost.train()shuffle: 一个布尔值。如果为True,则创建folds之前先混洗数据。
- 返回值:一个字符串的列表,给出了
evaluation history。它给的是早停时刻的history(此时对应着最优模型),早停之后的结果被抛弃。
学员评价