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

多项式回归预测累计值缩放:如何匹配目标列形态?

累计预测值的缩放方案

你的核心需求是将排序后的predicted_rev_running_total缩放,使其曲线形态与new_predicted_rev_running_total匹配,同时保留项目时间线(0-1)上的累计属性。以下是几种实用的解决方法:

  • 最小-最大归一化(线性缩放)
    适用于仅需匹配数值范围的场景,能让预测列的起点和终点完全贴合目标列:

    # 基于pandas实现
    target_col = df['new_predicted_rev_running_total']
    pred_col = df['predicted_rev_running_total']
    
    # 计算目标列和预测列的极值
    t_min, t_max = target_col.min(), target_col.max()
    p_min, p_max = pred_col.min(), pred_col.max()
    
    # 执行线性缩放
    df['scaled_pred'] = t_min + (pred_col - p_min) * (t_max - t_min) / (p_max - p_min)
    
  • 分位数映射(非线性形态匹配)
    当曲线形态差异较大时,用分位数对齐的方式让预测列的分布趋势贴合目标列:

    import pandas as pd
    
    # 设定分位数数量(可根据数据密度调整,比如20个分位点)
    quantile_bins = pd.qcut(df['predicted_rev_running_total'], q=20, duplicates='drop')
    # 建立分位数到目标列均值的映射关系
    quantile_map = df.groupby(quantile_bins)['new_predicted_rev_running_total'].mean().to_dict()
    
    # 将预测列的每个值映射到对应分位数的目标值
    df['scaled_pred'] = df['predicted_rev_running_total'].apply(
        lambda x: quantile_map[pd.qcut([x], q=20, duplicates='drop')[0]]
    )
    
  • 累计函数拟合调整
    如果目标列的累计曲线符合特定函数(如S型、对数型),可以先拟合目标列的累计模型,再将预测列代入逆函数实现形态匹配:
    比如假设目标列符合对数累计趋势,先拟合new_predicted_rev_running_total = a * np.log(t) + b(t为时间线0-1),再将预测列的累计值转换为对应的t,最后代入目标函数得到缩放结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 00:22:24