预测
前一文中,我们得到了训练的XGBoost模型,现在利用这个模型来预测测试集
- 1、引包
-
import pandas as pd import numpy as np import xgboost import matplotlib.pyplot as plt import time import os import sys import json import operator
- 2、文件路径
-
# raw field name user_label = 'User_id' coupon_label = 'Coupon_id' date_received_label = 'Date_received' probability_consumed_label = 'Probability'
- 3、预测
-
# 加载模型 model_file_path='D:/workspace/gitWorkSpace/O2O-Coupon-Usage-Forecast-master/O2O-Coupon-Usage-Forecast-master/code/wepon/data1/model/trainModel_2018081901PM40.model' model = xgboost.Booster(model_file=model_file_path) # 加载测试集 fileDir='D:/workspace/gitWorkSpace/O2O-Coupon-Usage-Forecast-master/O2O-Coupon-Usage-Forecast-master/code/wepon/data1/' predict_path=fileDir+'data/dataset3.csv' predict_features = pd.read_csv(predict_path).astype(float) predict_matrix = xgboost.DMatrix(predict_features.values, feature_names=predict_features.columns) # 预测模型 labels = model.predict(predict_matrix) frame = pd.Series(labels, index=predict_features.index) frame.name = probability_consumed_label plt.figure() frame.hist(figsize=(10, 8)) plt.title('results histogram') plt.xlabel('predict probability') plt.gcf().savefig('{0}_{1}{2}'.format(fileDir+"/predit",'1111123', '.jpg')) plt.close() # 将预测标签和数据集合在一起 data_split_path= 'D:/workspace/gitWorkSpace/O2O-Coupon-Usage-Forecast-master/O2O-Coupon-Usage-Forecast-master/code/charles/data_split' submission = pd.read_csv(data_split_path+"/predict_data/dataset.csv") submission = submission[[user_label, coupon_label, date_received_label]].join(frame) # 把核销概率拼接在一起 submission.to_csv('{0}_{1}{2}'.format(fileDir+"/predit",'123', '.txt'), index=False)
预测测试集的使用优惠卷的概率,并按照官网的格式输出到文件中。
提交结果
这个文件结果提交到天池官网,得到的结果不是很理想
图片结果与第一名实际得到的结果又很大差别,第一名在初赛中的成绩是0.7多,我按照他们的代码得到的结果,结果差别有点大,其实在训练模型的时候,测试集上交叉验证中,得到的准确率并不低,都是0.8以上,在测试集上不知怎么就0.4,想不明白,回头再看下代码。