ad_xgboost_predict.py 1.1 KB

123456789101112131415161718192021222324252627282930313233343536
  1. import os
  2. import pandas as pd
  3. import xgboost as xgb
  4. from xgboost.sklearn import XGBClassifier
  5. # 1. 模型加载
  6. model = XGBClassifier()
  7. booster = xgb.Booster()
  8. booster.load_model('./data/ad_xgb.model')
  9. model._Booster = booster
  10. # 2. 预测:ad_status = 0, 不出广告
  11. df_0 = pd.read_csv('./data/predict_data/predict_data_0.csv')
  12. columns_0 = df_0.columns.values.tolist()
  13. columns_0.remove('videoid')
  14. y_pred_proba_0 = model.predict_proba(df_0[columns_0[2:]])
  15. df_0['y_0'] = [x[1] for x in y_pred_proba_0]
  16. pre_df_0 = df_0[['apptype', 'mid', 'videoid', 'y_0']].copy()
  17. # 3. 预测:ad_status = 1, 不出广告
  18. df_1 = pd.read_csv('./data/predict_data/predict_data_1.csv')
  19. columns_1 = df_1.columns.values.tolist()
  20. columns_1.remove('videoid')
  21. y_pred_proba_1 = model.predict_proba(df_1[columns_1[2:]])
  22. df_1['y_1'] = [x[1] for x in y_pred_proba_1]
  23. pre_df_1 = df_1[['apptype', 'mid', 'videoid', 'y_1']].copy()
  24. # 4. merge 结果
  25. res_df = pd.merge(pre_df_0, pre_df_1, how='left', on=['apptype', 'mid', 'videoid'])
  26. res_df['res_predict'] = res_df['y_0'] - res_df['y_1']
  27. print(res_df.head())
  28. # 5. to redis