Python 指数曲线拟合不正确

Python 指数曲线拟合不正确,python,scatter-plot,exponential,Python,Scatter Plot,Exponential,我有两个数据集LST和HSIR,它们绘制在散点图上: 我想在绘图中添加一条指数曲线拟合线。我在许多此类绘图中使用的代码是: 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

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

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

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,y,".", 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,25,30,35,40,45,50])
plt.style.use("ggplot")

plt.text(26, 40, "R^2 = n {}".format(r2), size=20)
plt.text(26, 45, f'$y ={1.5}/{10}^{6} \cdot exp({popt[1]}x) {popt[2]}$', size=20)
plt.show()
尽管对许多具有类似数据集的绘图使用了此代码,但我始终得到以下错误:

---------------------------------------------------------------------------
运行时错误回溯(上次最近调用)
在里面
5返回a*np.exp(b*x)+c
6.
---->7 popt,pcov=曲线拟合(指数函数,x,y,p0=(1,-1e-6,1))
8xx=np.linspace(25.2,37.81000)
9 yy=指数函数(xx,*popt)
e:\Anaconda3\lib\site packages\scipy\optimize\minpack.py曲线拟合(f、扩展数据、ydata、p0、西格玛、绝对西格玛、检查有限、边界、方法、jac、**kwargs)
787成本=总成本(infodict['fvec']**2)
788如果ier不在[1,2,3,4]中:
-->789 raise RUNTIMERROR(“未找到最佳参数:”+errmsg)
790其他:
791#如果指定,将maxfev(leastsq)重命名为max_nfev(最小二乘)。
RuntimeError:未找到最佳参数:函数调用数已达到maxfev=800。
我很困惑,因为我的代码中没有使用maxfev。另外,我想我需要更改我的初始参数p0=(1,-1e-6,1),但我不确定如何更改,并且担心如果更改,我将无法将R²值与其他类似图进行比较

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

这是我的数据框:

df=pd.read_剪贴板(sep=',')
西铁
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

它是
曲线拟合的一个参数
。将函数调用更新为
popt,pcov=curve\u fit(指数函数,x,y,p0=(1,-1e-6,1),maxfev=4000)