指数曲线拟合不正确

问题描述

我有两个数据集LST和HSIR绘制在散点图上:

Scatter Plot

我想在绘图中添加一条指数曲线拟合线。我用于大量此类绘图的代码是:

import matplotlib
import matplotlib.pyplot as plt
from matplotlib import style
from matplotlib import pylab
import numpy as np
from scipy.optimize import curve_fit
import pandas as pd

x = df.loc[:,'LST']
y = df['HSIR']

def exponential_func(x,a,b,c):
    return a*np.exp(b*x)+c

popt,pcov = curve_fit(exponential_func,x,y,p0=(1,-1e-6,1))
xx = np.linspace(25.2,37.8,1000)
yy = exponential_func(xx,*popt)

r2 = 1. - sum((exponential_func(x,*popt) - y) ** 2) / sum((y - np.mean(y)) ** 2)
popt = np.round(popt,3)

plt.figure(figsize=(12,8))
plt.plot(x,".",xx,yy,color = "b",linewidth = "2")
plt.xticks([24,25,26,27,28,29,30,31,32,33,34,35,36,37,38])
plt.yticks([0,5,10,15,20,40,45,50])
plt.style.use("ggplot")

plt.text(26,"R^2 = n {}".format(r2),size=20)
plt.text(26,f'$y ={1.5}/{10}^{6} \cdot exp({popt[1]}x) {popt[2]}$',size=20)
plt.show()

尽管将此代码用于具有相似数据集的许多图,但我始终收到以下错误:

---------------------------------------------------------------------------
RuntimeError                              Traceback (most recent call last)
<ipython-input-86-9d0c81b3c9a9> in <module>
      5     return a*np.exp(b*x)+c
      6 
----> 7 popt,1))
      8 xx = np.linspace(25.2,1000)
      9 yy = exponential_func(xx,*popt)

e:\Anaconda3\lib\site-packages\scipy\optimize\minpack.py in curve_fit(f,xdata,ydata,p0,sigma,absolute_sigma,check_finite,bounds,method,jac,**kwargs)
    787         cost = np.sum(infodict['fvec'] ** 2)
    788         if ier not in [1,2,3,4]:
--> 789             raise RuntimeError("Optimal parameters not found: " + errmsg)
    790     else:
    791         # Rename maxfev (leastsq) to max_nfev (least_squares),if specified.

RuntimeError: Optimal parameters not found: Number of calls to function has reached maxfev = 800.

我很困惑,因为我没有在代码中使用 maxfev 。我也想像一下,我需要更改初始参数 p0 =(1,-1e-6,1)的猜测,但是我不确定该怎么做,担心如果这样做,我将无法将R²值与其他类似图进行比较。

如何调整代码以绘制指数曲线?任何帮助将不胜感激。

这是我的数据框:

df = pd.read_clipboard(sep=',')

LST,HSIR
26.64,3.222
25.595,0.0
27.07,2.861
29.37,0.8677
26.69,0.8055
25.59,5.8123
26.675,0.0
29.34,0.3471
26.125,0.0
25.07,0.0
26.42,1.4305
29.67,0.3471
26.67,0.0
25.6,0.0
26.81,0.0
30.81,0.3471
27.31,1.611
25.45,0.0
26.62,1.4305
29.26,1.0412
29.05,1.611
27.43,11.6245
28.645,1.4305
32.41,1.2148
28.69,1.611
27.7,0.0
29.02,0.0
32.03,1.5618
29.815,1.611
28.6,11.6245
29.17,5.722
32.97,0.6942
26.73,0.8055
25.57,0.0
26.17,0.0
30.53,1.7354
27.87,0.8055
26.27,5.8123
29.61,5.722
31.23,2.4295
29.55,0.0
28.01,0.0
29.69,1.4305
33.04,0.8677
31.995,4.8331
30.51,5.8123
30.38,5.722
33.86,3.1237
28.83,0.0
27.55,0.0
27.37,5.722
33.46,0.8677
29.19,4.0275
27.75,5.8123
28.19,2.861
33.26,1.9089
28.31,3.222
27.74,0.0
28.65,5.722
33.115,2.256
29.38,0.8055
28.1,5.8123
29.46,2.861
32.46,0.5206
28.64,2.4165
27.25,0.0
28.91,1.4305
30.89,2.0825
29.88,2.4165
28.22,0.0
30.175,2.861
33.04,1.9089
30.41,1.611
29.31,5.8123
31.03,4.2915
34.19,2.0825
26.32,14.4992
26.93,5.8123
29.35,4.2915
33.21,1.9089
33.01,11.2771
31.59,5.8123
33.57,7.1525
36.93,9.3711
33.875,12.0826
33.03,11.6245
34.17,28.6098
36.29,13.0154
32.01,19.3322
30.28,17.4368
33.35,24.3184
35.61,14.2302
33.15,13.6937
31.39,0.0
31.89,28.6098
36.31,18.048
32.545,6.4441
31.56,5.8123
33.055,15.7354
36.13,10.2388
33.11,28.9983
31.92,23.2491
33.435,30.0403
36.555,19.2628
33.05,10.4716
32.63,23.2491
32.15,22.8879
35.11,6.4209
33.51,9.6661
31.65,23.2491
33.42,20.0269
35.45,11.8006
34.09,27.3873
32.44,34.8736
33.835,50.0672
36.505,30.5428
32.11,8.8606
31.33,34.8736
32.15,15.7354
35.61,7.6357
32.67,18.5267
31.1,23.2491
33.09,25.7489
36.11,17.0068
30.8,12.8882
29.67,17.4368
31.73,22.8879
34.805,12.6683
33.38,9.6661
32.61,17.4368
33.67,22.8879
37.23,10.0653
32.73,14.4992
31.69,11.6245
33.09,30.0403
36.03,12.8419
32.76,12.8882
31.15,34.8736
31.87,25.7489
36.64,12.8419
33.73,16.1102
33.37,23.2491
34.67,14.3049
37.15,13.536
32.35,8.0551
31.97,5.8123
32.67,7.1525
35.55,8.8505
32.23,5.6386
30.78,5.8123
31.22,8.583
33.97,8.3299
33.63,14.4992
32.2,23.2491
33.12,34.3318
35.33,24.469
32.94,21.7488
32.25,11.6245
33.085,45.7758
36.32,26.8985
29.46,2.4165
28.18,5.8123
29.785,4.2915
31.69,4.6855
28.7,3.222
28.14,0.0
29.51,4.2915
31.25,2.0825
28.79,2.4165
28.005,11.6245
28.81,1.4305
30.695,2.0825
28.03,1.611
27.34,0.0
28.47,1.4305
31.27,1.3883
27.25,0.8055
26.31,0.0
26.91,1.4305
29.83,0.1735
27.045,0.8055
25.96,0.0
27.255,0.0
30.085,0.6942
28.95,2.4165
27.46,0.0
28.49,4.2915
30.39,1.7354
26.8,2.4165
26.3,0.0
27.72,1.4305
29.91,0.8677
28.03,0.0
27.57,0.0
28.51,1.4305
31.28,1.3883
28.67,2.4165
27.89,11.6245
28.55,12.8744
30.87,4.512

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...