【发布时间】:2020-06-03 05:44:21
【问题描述】:
我尝试使用curve_fit 拟合日期时间与浮点数据。据我了解,curve_fit 不适用于日期时间,因此我首先必须将数据转换为数值。这给了我非常大的 x 值,导致 exp 函数溢出。我的代码如下。如果我拟合多项式而不是指数,则相同的代码确实有效。
def func(x, a):
return (np.exp(a*x))
def fit_exponential(gd):
gdtemp['Date'] = pd.to_datetime(gdtemp.Date)
mask = (gdtemp['Date'] > '2020-01-30') & (gdtemp['Date'] <= '2020-03-20')
gdtemp = gdtemp.loc[mask].copy()
x = pd.to_numeric(gdtemp.Date)
y=gdtemp['Confirmed']
popt, pcov = curve_fit(func,x, y)
如何修改代码以使用指数?
我对如何解决此问题有两个想法,但不确定如何实施:
第一个想法:不要用 to_numeric 转换,而是用其他产生较小数字的方式。我的输入数据相当简单,每天只包含 1 行,所以我不需要时间或其他任何东西。是否有另一个类似于 to_numeric() 的函数忽略时间部分并产生更小的数字?
第二个想法:将数字日期值除以某个大数,然后再相乘。我应该使用什么数字来划分?
【问题讨论】:
标签: python pandas overflow curve-fitting exponential