20分钟
模型接口
方法:
.add_valid(data,name)
: 添加一个验证集。- 参数:
data
: 一个Dataset
,代表一个验证集name
: 一个字符串,表示该验证集的名字。不同的验证集通过名字来区分
- 参数:
.attr(key)
: 获取属性的值。- 参数:
key
: 一个字符串,表示属性的名字 - 返回值:该属性的名字。如果属性不存在则返回
None
- 参数:
.current_iteration()
: 返回当前的迭代的index
(即迭代的编号).dump_model(num_iteration=-1)
:dump
当前的Booster
对象为json
格式。- 参数:
num_iteration
: 一个整数,指定需要dump
第几轮训练的结果。如果小于0,则最佳迭代步的结果(如果存在的话)将被dump
。默认为-1
。 - 返回值:一个字典,它表示
dump
之后的json
- 参数:
.eval(data,name,feval=None)
: 对指定的数据集evaluate
- 参数:
data
: 一个Dataset
对象,代表被评估的数据集name
: 一个字符串,表示被评估的数据集的名字。不同的验证集通过名字来区分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)
。或者返回该元组的列表。
- 返回值:一个列表,给出了
evaluation
的结果。
- 参数:
.eval_train(feval=None)
: 对训练集进行evaluate
- 参数:
feval
: 参考.eval()
方法 - 返回值:一个列表,给出了
evaluation
的结果。
- 参数:
.eval_valid(feval=None)
:对验证集进行evaluate
- 参数:
feval
: 参考.eval()
方法 - 返回值:一个列表,给出了
evaluation
的结果。
- 参数:
.feature_importance(importance_type='split', iteration=-1)
: 获取特征的importance
- 参数:
importance_type
: 一个字符串,给出了特征的importance
衡量指标。默认为'split'
。 可以为:'split'
: 此时特征重要性衡量标准为:该特征在所有的树中,被用于划分数据集的总次数。'gain'
: 此时特征重要性衡量标准为:该特征在所有的树中获取的总收益。
iteration
: 一个整数,指定需要考虑的是第几轮训练的结果。如果小于0,则最佳迭代步的结果(如果存在的话)将被考虑。默认为-1
。
- 返回值:一个
numpy array
,表示每个特征的重要性
- 参数:
.feature_name()
: 获取每个特征的名字。- 返回值:一个字符串的列表,表示每个特征的名字
.free_dataset()
:释放Booster
对象的数据集.free_network()
: 释放Booster
对象的Network
.get_leaf_output(tree_id, leaf_id)
: 获取指定叶子的输出- 输入:
tree_id
: 一个整数,表示子学习器的编号leaf_id
: 一个整数,表示该子学习器的叶子的编号
- 返回值:一个浮点数,表示该叶子节点的输出
- 输入:
.num_feature()
: 获取特征的数量(即由多少列特征).predict(data, num_iteration=-1, raw_score=False, pred_leaf=False, pred_contrib=False, data_has_header=False, is_reshape=True, pred_parameter=None)
: 执行预测- 参数:
data
: 一个字符串、numpy array
或者scipy.sparse
, 表示被测试的数据集。如果为字符串,则表示测试集所在的文件的文件名。 注意:如果是numpy array
或者pandas dataframe
时,要求数据的列必须与训练时的列顺序一致。num_iteration
:一个整数,表示用第几轮的迭代结果来预测。如果小于0,则最佳迭代步的结果(如果存在的话)将被使用。默认为-1
。raw_score
: 一个布尔值,指示是否输出raw scores
。 默认为False
pred_leaf
: 一个布尔值。如果为True
,则会输出每个样本在每个子树的哪个叶子上。它是一个nsample x ntrees
的矩阵。默认为False
。 每个子树的叶节点都是从1
开始编号的。pred_contrib
:一个布尔值。如果为True
, 则输出每个特征对每个样本预测结果的贡献程度。它是一个nsample x ( nfeature+1)
的矩阵。默认为False
。 之所以加1,是因为有bias
的因素。它位于最后一列。 其中样本所有的贡献程度相加,就是该样本最终的预测的结果。data_has_header
:一个布尔值,指示数据集是否含有标题。仅当data
是字符串时有效。默认为False
。is_reshape
:一个布尔值,指示是否reshape
结果成[nrow,ncol]
。 默认为True
pred_parameter
: 一个字典或者None
,给出了其它的参数。默认为None
- 返回值:一个
numpy array
,表示预测结果
- 参数:
.reset_parameter(params)
:重设Booster
的参数。- 参数:
params
:一个字典,给出了新的参数
- 参数:
.rollback_one_iter()
: 将Booster
回滚一个迭代步.save_model(filename,num_iteration=-1)
: 保存Booster
对象到文件中。- 参数:
filename
: 一个字符串,给出了保存的文件的文件名num_iteration
: 一个整数,指定需要保存的是第几轮训练的结果。如果小于0,则最佳迭代步的结果(如果存在的话)将被保存。默认为-1
。
- 参数:
.set_attr(**kwargs)
: 设置Booster
的属性。- 参数:
kwargs
: 关键字参数,用于设定Booster
属性。对于值为None
的设置,等效于删除该属性。
- 参数:
.set_network(machines,local_listen_port=12400,listen_time_out=120,num_machines=1)
: 配置网络- 参数:
machines
:一个字符串的列表、或者字符串的集合。它给出了每台机器的名字local_listen_port
: 一个整数,默认为12400
,指定了监听端口listen_time_out
: 一个整数,默认为120
, 制定了socket
超时的时间(单位为分钟)num_machines
: 一个整数,默认为1
,表示并行学习的机器的数量
- 参数:
.set_train_data_name(name)
: 设置训练集的名字- 参数:
name
: 一个字符串,表示训练集的名字
- 参数:
.update(train_set=None, fobj=None)
: 更新一个迭代步- 参数:
train_set
: 一个Dataset
或者None
, 表示训练集。如果为None
,则上一个训练集被使用fobj
: 一个可调用对象或者None
,表示自定义的目标函数。 注意:如果是多类别分类任务,则:score
首先根据class_id
进行分组,然后根据row_id
分组。如果你想得到第i
个样本在第j
个类别上的得分,访问方式为:score[j*num_data+i]
。 同理:grad
和hess
也是以这样的方式访问。
- 返回值:一个布尔值,指示该次更新迭代步是否成功结束。
- 参数:
学员评价