Browse Source

add region rule2 video-show

liqian 2 years ago
parent
commit
90ff23232a
2 changed files with 11 additions and 6 deletions
  1. 3 3
      config.py
  2. 8 3
      region_rule_rank_h.py

+ 3 - 3
config.py

@@ -72,9 +72,9 @@ class BaseConfig(object):
 
     # 小程序小时级规则参数
     RULE_PARAMS = {
-        'rule1': {'return_count': 20, 'score_rule': 0.005, 'platform_return_rate': 0.001},
+        # 'rule1': {'return_count': 20, 'score_rule': 0.005, 'platform_return_rate': 0.001},  # 下线
         # 'rule2': {'return_count': 20, 'score_rule': 0.001},  # 下线
-        'rule3': {'view_type': 'pre-view', 'return_count': 20, 'score_rule': 0.005, 'platform_return_rate': 0.001},
+        # 'rule3': {'view_type': 'pre-view', 'return_count': 20, 'score_rule': 0.005, 'platform_return_rate': 0.001},  # 下线
         # 'rule4': {'cal_score_func': 2, 'return_count': 20, 'score_rule': 0},  # 下线
         # 'rule5': {'cal_score_func': 3, 'return_count': 20, 'score_rule': 0},  # 下线
         'rule6': {'view_type': 'video-show', 'return_count': 20, 'score_rule': 0.005, 'platform_return_rate': 0.001},
@@ -120,8 +120,8 @@ class BaseConfig(object):
 
     # 地域分组小时级规则参数
     RULE_PARAMS_REGION = {
-        # 'rule1': {'view_type': 'pre-view', 'return_count': 20, 'score_rule': 0.005},
         'rule1': {'view_type': 'pre-view', 'platform_return_rate': 0.001},
+        'rule2': {'view_type': 'video-show', 'platform_return_rate': 0.001},
     }
 
     # 地域分组天级规则更新使用数据

+ 8 - 3
region_rule_rank_h.py

@@ -67,6 +67,7 @@ features = [
     'lastonehour_play_total',  # 过去1小时播放次数
     'lastonehour_share_total',  # 过去1小时分享次数
     'platform_return',
+    'lastonehour_show',
 ]
 
 
@@ -127,10 +128,11 @@ def get_feature_data(project, table, now_date):
     return feature_df
 
 
-def cal_score(df):
+def cal_score(df, param):
     """
     计算score
     :param df: 特征数据
+    :param param: 规则参数
     :return:
     """
     # score计算公式: sharerate*backrate*logback*ctr
@@ -143,7 +145,10 @@ def cal_score(df):
     df['share_rate'] = df['lastonehour_share'] / (df['lastonehour_play'] + 1000)
     df['back_rate'] = df['lastonehour_return'] / (df['lastonehour_share'] + 10)
     df['log_back'] = (df['lastonehour_return'] + 1).apply(math.log)
-    df['ctr'] = df['lastonehour_play'] / (df['lastonehour_preview'] + 1000)
+    if param.get('view_type', None) == 'video-show':
+        df['ctr'] = df['lastonehour_play'] / (df['lastonehour_show'] + 1000)
+    else:
+        df['ctr'] = df['lastonehour_play'] / (df['lastonehour_preview'] + 1000)
     df['K2'] = df['ctr'].apply(lambda x: 0.6 if x > 0.6 else x)
     df['score'] = df['share_rate'] * df['back_rate'] * df['log_back'] * df['K2']
     df['platform_return_rate'] = df['platform_return'] / df['lastonehour_return']
@@ -306,7 +311,7 @@ def rank_by_h(project, table, now_date, now_h, rule_params, region_code_list):
             # 计算score
             region_df = feature_df[feature_df['code'] == region]
             log_.info(f'region_df count = {len(region_df)}')
-            score_df = cal_score(df=region_df)
+            score_df = cal_score(df=region_df, param=value)
             video_rank(df=score_df, now_date=now_date, now_h=now_h, rule_key=key, param=value, region=region)
             # to-csv
             score_filename = f"score_{region}_{key}_{datetime.datetime.strftime(now_date, '%Y%m%d%H')}.csv"