将xgboost二进制预测保存到提交csv文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将xgboost二进制预测保存到提交csv文件相关的知识,希望对你有一定的参考价值。

我有'train.csv'和'test.csv'文件。前者包含'Id',功能列表和带有值的'Status'列,'test.csv'文件包含除'Status'之外的相同列。

我的任务是在'train.csv'文件上训练XGboost模型并预测'test.csv'文件的'Status'的二进制结果,然后将'Id'和'Status'保存到单独的csv文件中以便提交。

我能够在'火车'文件上训练XGboost,并且roc_auc得分非常好(高于0.8)。我花了几个小时在互联网上搜索如何对“测试”文件进行预测并将它们保存到“提交”文件中。令我惊讶的是,尽管这是一项非常常见的任务,但我找不到任何能够可靠地执行上述操作的脚本。

我的'train.csv'文件的工作代码以防万一:

predict = pd.read_csv("train.csv")
predictors =['par48','par52','par75','par82','par84','par85','par86','par87','par89','par108','par109','par132','par156','par165','par167','par175','par190','par197']
X, y = predict[predictors], predict['Status']
X_train, X_test, y_train, y_test= train_test_split(X, y, test_size=0.2, random_state=123)
xg_cl=xgb.XGBClassifier(objective='binary:logistic',n_estimators=10,seed=123)
xg_cl.fit(X_train, y_train)
preds=xg_cl.predict(X_test)
accuracy = float(np.sum(preds==y_test))/y_test.shape[0]
print("accuracy: %f" % (accuracy))
print(xg_cl.feature_importances_)
print(roc_auc_score(y_test, xg_cl.predict_proba(X_test)[:,1]))

你有共享的工作代码吗?谢谢!

答案

好吧,model.predict代码以array格式返回预测结果,因此,首先您需要读取单独的test文件(如果存在),然后您可以使用您根据训练数据构建的模型来预测输出。最后,您可以将array的预测添加到您作为新列读取的pandas DataFrame中,然后将其写入csv文件:

#Separate test (evaluation) dataset that doesn't include the output
test_data = pd.read_csv('test.csv')
#Choose the same columns you trained the model with
X = test_data[predictors]  
test_data['predictions'] = xg_cl.predict(X)
test_data.to_csv('submission.csv')

以上是关于将xgboost二进制预测保存到提交csv文件的主要内容,如果未能解决你的问题,请参考以下文章

如何将 libsvm 预测的类标签保存到 csv?

基于xgboost 的贷款风险预测

在 Weka 中将分类预测输出到 CSV——输出文件保存在哪里?

如何使用 accuracy_score(或其他建议的函数)测量 xgboost 回归器的准确性

python回归预测数据怎么导出?

Xgboost 处理不平衡的分类数据