擅长:python、mysql、java
<p>想想你的数据和你的功能。ydata是一个相当大的值。最大值是多少</p>
<pre><code>def func(t,lam):
return 1 - (np.exp(-lam * t))
</code></pre>
<p>我想你会发现函数的最大值出现在lam接近无穷大时,函数接近1。最大值==1的函数如何在1000秒内拟合数据?如果希望能够扩展到1以上,则需要在函数中添加更多参数。试一试</p>
<pre><code>def func(t,lam,scale):
return ( 1 - (np.exp(-lam * t)) ) * scale
</code></pre>
<p>看看scipy是否能够更好地拟合数据</p>
<p>编辑:
我设法让它工作,但是,您甚至没有绘制最佳参数。为此,请参阅我的模拟扩展数据和ydata代码:</p>
<pre><code>#Plot Data
import numpy as np
from scipy.optimize import curve_fit
from matplotlib import pyplot as plt
def func(t,lam,scale):
return ( 1 - (np.exp(-lam * t)) ) * scale
xdata = np.arange(25.)
ydata = func(xdata, 1.12, 2000.)
plt.figure(1,dpi=120)
plt.title("Cell A3")
plt.xlabel(rawdata[0][0])
plt.ylabel(rawdata[0][1])
plt.scatter(xdata,ydata,label="A3 Cell 1")
#CurveFit data to model
popt, pcov = curve_fit(func,xdata,ydata,p0=[0.5, 1000.1])
plt.plot(np.arange(25),func(np.arange(25), *popt),label="Model")
plt.legend()
</code></pre>
<p>产出:
<a href="https://i.stack.imgur.com/vRGBO.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/vRGBO.png" alt="Optimized curve_fit"/></a></p>