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。 默认为Falsepred_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]。 默认为Truepred_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也是以这样的方式访问。
- 返回值:一个布尔值,指示该次更新迭代步是否成功结束。
- 参数:
学员评价