使用xgboost的documentation中的python API我通过以下方式创建列车数据:
dtrain = xgb.DMatrix(file_path)
此处file_path属于libsvm
格式的txt文件。当我进行成对排名时,我也输入了刚刚输入的dtrain数据中组的长度:
dtrain.set_group(group_len_file)
现在我正在训练模型:
param = {'bst:max_depth':2, 'bst:eta':1, 'silent':1, 'objective':'rank:pairwise' }
param['nthread'] = 4
param['eval_metric'] = 'ndcg'
bst = xgb.train(param,dtrain,10)
现在我想使用gridsearch
。所以我的问题是当我输入gridsearch
时如何使用sklearn中的DMatrix
?
Gennerally:
from sklearn.grid_search import GridSearchCV
param_test1 = {
'max_depth':list(range(3,10,2)),
'min_child_weiht':list(range(1,6,2))
}
gsearch = GridSearchCV(estimator=XGBClassifier(objective='rank:pairwise'),
param_grid = param_test1)
但gsearch
没有train
。它只有fit
,X
和y
作为输入,而不是DMatrix
。有办法吗?
如果不是,我可以将DMatrix
格式转换为Dmatrix
=> X
,y
但在文档中我无法找到如何输入set_group
的情况?有什么想法吗?