|
@@ -67,6 +67,7 @@ features = [
|
|
|
'lastonehour_play_total',
|
|
|
'lastonehour_share_total',
|
|
|
'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:
|
|
|
"""
|
|
|
|
|
@@ -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):
|
|
|
|
|
|
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)
|
|
|
|
|
|
score_filename = f"score_{region}_{key}_{datetime.datetime.strftime(now_date, '%Y%m%d%H')}.csv"
|