You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在DataFrame中实现随活跃时长动态调整的加权特征计算

可变权重FS计算实现方案

最简实现(仅适配当前需求)

直接用numpy.where做行级条件判断,不需要修改原有标准化逻辑,仅调整FS计算段代码即可:

import numpy as np

# 动态计算S1权重:活跃月小于6时用10%,否则用默认15%
s1_weight = np.where(df_final['Months'] < 6, 0.1, 0.15)
# 加权计算FS,其余列权重保持原规则不变
df_final['FS'] = (df_final['S1'] * s1_weight) + \
                 (df_final['S2'] * 0.15) + \
                 (df_final['S3'] * 0.5) + \
                 (df_final['S4'] * 0.2)

注意:如果需要保证总权重始终为100%,可将S1下调的5%分配到其他列,比如补到S3的话可新增S3的动态权重逻辑:

s1_weight = np.where(df_final['Months'] < 6, 0.1, 0.15)
s3_weight = np.where(df_final['Months'] < 6, 0.55, 0.5)
df_final['FS'] = (df_final['S1'] * s1_weight) + (df_final['S2'] * 0.15) + (df_final['S3'] * s3_weight) + (df_final['S4'] * 0.2)

通用扩展实现(适配多档位权重规则)

如果后续需要新增更多权重调整规则(比如不同活跃月区间对应多套权重),可以用自定义函数配合apply实现更灵活的配置:

def calc_fs(row):
    # 可根据需求新增任意条件分支
    if row['Months'] < 6:
        s1_w, s2_w, s3_w, s4_w = 0.1, 0.15, 0.55, 0.2
    elif row['Months'] > 24:
        # 可自定义高活跃用户的权重规则
        s1_w, s2_w, s3_w, s4_w = 0.05, 0.2, 0.5, 0.25
    else:
        s1_w, s2_w, s3_w, s4_w = 0.15, 0.15, 0.5, 0.2
    return row['S1']*s1_w + row['S2']*s2_w + row['S3']*s3_w + row['S4']*s4_w

df_final['FS'] = df_final.apply(calc_fs, axis=1)

内容的提问来源于stack exchange,提问作者woahtherebud

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 01:06:06