Commit a892d9e7 authored by 高雅喆's avatar 高雅喆

增加分数指数衰减的函数

parent 04f0591c
This diff is collapsed.
......@@ -174,33 +174,53 @@ def get_tag2_from_tag3(tag3, all_3tag_2tag, user_log_df_tag2_list):
print(e)
def compute_henqiang(x):
score = 15-x*((15-0.5)/180)
if score>0.5:
def compute_henqiang(x, decay_days=180, normalization_size=7, exponential=1):
if exponential:
alpha = exponential_decay(x, decay_days, normalization_size)
score = 15 - 2**alpha * ((15-0.5)/decay_days)
else:
score = 15 - x * ((15-0.5)/decay_days)
if score > 0.5:
return score
else:
return 0.5
def compute_jiaoqiang(x):
score = 12-x*(12/180)
if score>0.5:
def compute_jiaoqiang(x, decay_days=180, normalization_size=7, exponential=1):
if exponential:
alpha = exponential_decay(x, decay_days, normalization_size)
score = 12 - 2**alpha * ((12-0.5)/decay_days)
else:
score = 12 - x * ((12-0.5)/decay_days)
if score > 0.5:
return score
else:
return 0.5
def compute_ruoyixiang(x):
score = 5-x*((5-0.5)/180)
if score>0.5:
def compute_ruoyixiang(x, decay_days=180, normalization_size=7, exponential=1):
if exponential:
alpha = exponential_decay(x, decay_days, normalization_size)
score = 5 - 2**alpha * ((5-0.5)/decay_days)
else:
score = 5 - x * ((5-0.5)/decay_days)
if score > 0.5:
return score
else:
return 0.5
def compute_validate(x):
score = 10-x*((10-0.5)/180)
if score>0.5:
def compute_validate(x, decay_days=180, normalization_size=7, exponential=1):
if exponential:
alpha = exponential_decay(x, decay_days, normalization_size)
score = 10 - 2**alpha * ((10-0.5)/decay_days)
else:
score = 10 - x * ((10-0.5)/decay_days)
if score > 0.5:
return score
else:
return 0.5
def compute_ai_scan(x):
score = 2 - x * ((2 - 0.5) / 180)
if score>0.5:
def compute_ai_scan(x, decay_days=180, normalization_size=7, exponential=1):
if exponential:
alpha = exponential_decay(x, decay_days, normalization_size)
score = 2 - 2**alpha * ((2-0.5)/decay_days)
else:
score = 2 - x * ((2-0.5)/decay_days)
if score > 0.5:
return score
else:
return 0.5
......@@ -212,3 +232,10 @@ def get_action_tag_count(df, action_time):
return 1
except Exception as e:
print(e)
def exponential_decay(days_diff, decay_days=180, normalization_size=7):
x = np.arange(1, decay_days+1, 1)
# 天数差归一化到[0, normalization_size]
a = (normalization_size - 0) * (days_diff - min(x)) / (max(x) - min(x))
return a
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment