【问题标题】:least squares curve fitting最小二乘曲线拟合
【发布时间】:2014-03-05 05:18:57
【问题描述】:

我有一组距离x=c*r/rs

 array([ 0.09317335,  0.1863467 ,  0.27952006,  0.37269341,  0.46586676,
        0.55904011,  0.65221346,  0.74538682,  0.83856017,  0.93173352,
        1.02490687,  1.11808022,  1.21125357,  1.30442693,  1.39760028,
        1.49077363,  1.58394698,  1.67712033,  1.77029369,  1.86346704])

数密度(sigma) array([ 9.56085037e+14, 5.13431506e+14, 3.26960286e+14, 2.27865084e+14, 1.68325130e+14, 1.29590176e+14, 1.02918831e+14, 8.37487042e+13, 6.94971037e+13, 5.86086377e+13, 5.00994710e+13, 4.33218850e+13, 3.78349864e+13, 3.33300619e+13, 2.95856349e+13, 2.64394232e+13, 2.37702922e+13, 2.14863249e+13, 1.95167455e+13, 1.78063354e+13])

我已经绘制得到下图。这是一个对数日志图。

我有一个函数

根据理论应该适合我的图表。我不知道如何使用scipy.opt.leastsquare 来使用该功能并适合我的图表。要拟合的参数是crs

【问题讨论】:

  • 用图表和公式写的很棒。
  • 你的模型函数除了一个常数因子外没有参数,你要拟合什么,只是因子??
  • @Nabla 其实x=c*r/rs,其中c和rs是我需要拟合的参数
  • 这对你来说可能是一个很好的起点Non-linear optimization with scipy
  • @srivatsan 但是如果你只有xSigma(x) 那么你不能适应参数c 因为Sigma(x) 不依赖它。如果 delta_crho_c 是常量,您只能适应 r_s。另外你把Sigma(x)写成一个普通的python函数,你可以在不同的条件下使用if

标签: python scipy least-squares


【解决方案1】:

选项 1:使用 scipy.optimize.curve_fit

选项 2:编写自己的函数来输出 R2 或 sse,然后使用 scipy.optimize 最小化此函数。我一直用这种方法解决复杂的问题,推荐SLSQP和L-BFGS-B的算法。

【讨论】:

    猜你喜欢
    • 2013-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-29
    • 2012-07-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多