如何解决XGBRanker:无法使用 qid 作为拟合参数
我正在尝试使用 XGBoost.XGBRanker 来构建排名模型。
(数据集为 mslr web-10k,折叠 1)
我已将 fold 1 train.txt 转换为 Pandas 数据框,现在我正在尝试构建 XGBRanker 模型。我不确定如何有效地为 .fit 方法导出“组”参数,但文档清楚地说明:
通过使用以下任一方式对任务进行排名需要查询组信息 fit方法中的group参数或qid参数。
在拟合模型之前,您的数据需要按查询组进行排序。 拟合模型时,您需要提供一个额外的数组 包含每个查询组的大小。
例如,如果您的原始数据如下所示:
qid
标签
特点
1
0
x_1
1
1
x_2
1
0
x_3
2
0
x_4
2
1
x_5
2
1
x_6
2
1
x_7
那么你的组数组应该是 [3,4]。有时使用查询 id (qid) 而不是组可以更方便。
这里我正在尝试拟合模型:
X = np.array(df.drop(columns = ['label','query_id']))
y = np.array(df['label'])
qid = np.array(df['query_id'])
scaler = StandardScaler()
scaler.fit(X)
model = XGB.XGBRanker(verbosity = 3,n_jobs = -1,learning_rate = 0.1,subsample = 0.5,n_estimators = 1000)
model.fit(X,y,group = None,qid = qid)
但我收到以下错误
fit() got an unexpected keyword argument 'qid'
文档是 here。 (可能需要 ctrl+f 才能使用 'XGBRanker')
谁能告诉我我在这里做错了什么?或者如何导出合适的组数组?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。