首页 > 解决方案 > 如何在使用 XGBoost 学习排名时保留 id 以供以后预测

问题描述

我正在使用 xgboost 进行排名,请考虑以下代码:

X_train = train_data.loc[:, ~train_data.columns.isin(['id','rank'])]
y_train = train_data.loc[:, train_data.columns.isin(['rank'])]
groups = train_data.groupby('id').size().to_frame('size')['size'].to_numpy()
X_test = test_data.loc[:, ~test_data.columns.isin(['rank'])]
y_test = test_data.loc[:, test_data.columns.isin(['rank'])]

因为需要保留 id 以供以后预测。下面的代码对吗?

def predict(model, df):
    return model.predict(df.loc[:, ~df.columns.isin(['id'])])  
predictions = (X_test.groupby('id')
               .apply(lambda X_test: predict(model, X_test)))

价值越高越好吗?

标签: pythonxgboostrankfeature-selectionmismatch

解决方案


推荐阅读