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

scipy curve_fit初始值过小致部分参数无法优化问题求助

Scipy curve_fit线性拟合参数优化异常问题求助

我正在用scipy的curve_fit工具做线性函数拟合时遇到参数优化异常:

  • 为适配不同y变量,我将截距初始值设为前20个数据点的均值(x值已做偏移处理,起始值接近0),斜率初始值设为0(因不同变量可能有任意符号关系或无关联)
  • 测试发现,当斜率初始值为0时,curve_fit完全不调整斜率参数,仅通过修改截距拟合数据,导致截距偏离最优值
  • 即使将斜率初始值改为极小非零值(如0.001、0.01),上述现象仍会出现,同时还会抛出“无法估计参数协方差”的警告

已排除数据类型问题:所有数据均为float64类型,排除了已知的类型相关问题。

以下是可复现问题的代码(使用scipy 1.11.3版本):

import numpy as np
from scipy.optimize import curve_fit
import matplotlib.pyplot as plt
import pickle

def fit1(x, alpha, beta_t):
    yhat = alpha + beta_t*x
    return yhat

with open('example_data.pkl', 'rb') as handle:
    xs, ys = pickle.load(handle)
    
plt.plot(xs, ys, color='blue')

for guess in [0, 0.001, 0.01, 0.1, 1, 10]:
    init_guess = np.zeros(2)
    init_guess[0] = np.mean(ys[:20])
    init_guess[1] = guess
    params, _ = curve_fit(fit1, xs, ys, p0=init_guess)
    
    plt.plot(xs, fit1(xs, *params), label=f'init_guess[1] = {init_guess[1]}')

plt.legend()

拟合结果如下:
拟合结果图

恳请帮忙分析问题原因!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 11:25:35