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

如何基于42个数据点的曲线数据集筛选不符合Sigmoid函数的曲线?

筛选非Sigmoid曲线的可行方案

R2作为整体拟合指标对局部形态偏差不敏感,所以会出现区分度不足的问题,可通过以下多维度组合方案解决:

1. 先校验Sigmoid固有形态特征

Sigmoid曲线有三个不可违背的数学特性,不符合的直接判定为非Sigmoid曲线:

  • 单调一致性:标准Sigmoid是严格单调递增/递减的,不会出现局部反向波动。可统计原始曲线一阶差分的符号一致率,低于95%直接排除。你提供的非Sigmoid示例数据在x>25后出现明显的先升后降波动,该特征即可直接筛出。
  • 凹凸性变化次数:Sigmoid仅存在1个拐点,拐点前后凹凸性完全相反,二阶差分的符号只会变化1次,变化次数超过2次直接判定为不符合。
  • 渐近段平稳性:Sigmoid首尾两端的变化速率趋近于0,可取前5个点、后5个点的一阶差分值的绝对值,和曲线中间段的最大差分值做对比,比值超过20%即可判定不符合。

2. 替换拟合评价指标提升区分度

将单一R2指标替换为多指标组合,放大两类曲线的拟合效果差异:

  • 补充平均绝对百分比误差(MAPE):该指标对低幅值区间的拟合偏差更敏感,非Sigmoid曲线的MAPE会是正常Sigmoid曲线的3~5倍,区分度远高于R2。
  • 增加残差自相关检验:正常Sigmoid的拟合残差是随机正态分布的,若残差存在明显的趋势性或周期性,说明曲线本身形态和Sigmoid存在本质差异,直接排除。你提供的非Sigmoid曲线拟合后残差会呈现明显波浪形,自相关系数远高于正常Sigmoid。

3. 增加拟合参数约束提升区分度

原有无约束拟合会为了贴合波动曲线输出不合理的Sigmoid参数,添加合理边界后可大幅降低非Sigmoid曲线的拟合得分:

from scipy.optimize import curve_fit
import numpy as np

def sigmoid(x, L, x0, k, b):
    y = L / (1 + np.exp(-k*(x-x0)))+b
    return y

# 初始参数
p0 = [max(y), np.median(x), 1, min(y)]
# 加参数边界,可根据你的数据集范围调整
bounds = (
    [0.5*max(y), 10, 0.01, min(y)-10], 
    [2*max(y), 32, 2, min(y)+10]
)
popt, pcov = curve_fit(sigmoid, x, y, p0, method='dogbox', maxfev=10000, bounds=bounds)

加约束后非Sigmoid曲线的拟合R2会降到0.9以下,和正常Sigmoid的0.99得分差距非常明显,很容易设置阈值区分。

判定规则参考

可基于标注的正负样本调优阈值,示例组合规则如下,测试你提供的两个样本可100%区分:

一阶差分符号一致率>95% AND 二阶差分符号变化次数<=1 AND 约束拟合后R2>0.985,判定为符合Sigmoid曲线,否则判定为不符合。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 03:36:03