ソースを参照

add cal_score2 test

liqian 3 年 前
コミット
8d70330b01
2 ファイル変更15 行追加2 行削除
  1. 2 1
      config.py
  2. 13 1
      rule_rank_h.py

+ 2 - 1
config.py

@@ -74,7 +74,8 @@ class BaseConfig(object):
     RULE_PARAMS = {
         'rule1': {'return_count': 20, 'score_rule': 0.005},
         'rule2': {'return_count': 20, 'score_rule': 0.001},
-        'rule3': {'view_type': 'pre-view', 'return_count': 20, 'score_rule': 0.005}
+        'rule3': {'view_type': 'pre-view', 'return_count': 20, 'score_rule': 0.005},
+        'rule4': {'cal_score_func': 2, 'return_count': 20, 'score_rule': 0},
     }
 
     # app_type: [18, 19]预测表名

+ 13 - 1
rule_rank_h.py

@@ -99,6 +99,14 @@ def cal_score(df, param):
     return df
 
 
+def cal_score2(df):
+    # score2计算公式: score = lastonehour_return/(lastonehour_view+1000)
+    df = df.fillna(0)
+    df['score'] = df['lastonehour_return'] / (df['lastonehour_view'] + 1000)
+    df = df.sort_values(by=['score'], ascending=False)
+    return df
+
+
 def video_rank(df, now_date, now_h, rule_key, param):
     """
     获取符合进入召回源条件的视频,与每日更新的rov模型结果视频列表进行合并
@@ -171,7 +179,11 @@ def rank_by_h(now_date, now_h, rule_params):
     for key, value in rule_params.items():
         log_.info(f"rule = {key}, param = {value}")
         # 计算score
-        score_df = cal_score(df=feature_df, param=value)
+        cal_score_func = value.get('cal_score_func', 0)
+        if cal_score_func == 2:
+            score_df = cal_score2(df=feature_df)
+        else:
+            score_df = cal_score(df=feature_df, param=value)
         video_rank(df=score_df, now_date=now_date, now_h=now_h, rule_key=key, param=value)
         # to-csv
         score_filename = f"score_{key}_{datetime.datetime.strftime(now_date, '%Y%m%d%H')}.csv"