我的資料集有點遵循指數衰減
df_A
Period Count
0 1600
1 894
2 959
3 773
4 509
5 206
我想通過使用 2 種方法來計算衰減率,因為我希望兩者都給出相同的結果,但是,我得到不同的結果?
這是第一種方法:
decay_rate1 = (10**(log(df_A['Count'].iloc[5]/df_A['Count'].iloc[0]) / 5)) - 1
這是第二種方法:
decay_rate2 = np.log(df_A['Count'].iloc[0])/log(df_A['Count'].iloc[5]
計算資料集衰減率的正確方法是什么?
uj5u.com熱心網友回復:
不知道你所說的“過于復雜”是什么意思。你能解釋一下你的兩種方法嗎?我不確定我是否了解您是如何通過他們到達的?無論如何,scipy.optimize.curve_fit為您完成所有繁重的作業:
import numpy as np
import pandas as pd
from scipy.optimize import curve_fit
def f(t, a, b):
return a * np.exp(-b * t)
(a, b), *_ = curve_fit(f, df.Period, df.Count)
結果:
In [4]: a
Out[4]: 1519.9510695102867
In [5]: b
Out[5]: 0.29266498021489273

請注意,由于您的資料具有相當大的值,您實際上會得到 a RunTimeWarning,因此您可以縮放df.Count列并仍然獲得衰減率,b:
(a, b), *_ = curve_fit(f, df.Period, df.Count / df.Count.max())
輸出:
In [6]: a
Out[6]: 0.9499694152031338
In [7]: b
Out[7]: 0.29266497643362804
您還可以a通過乘以 來恢復真值df.Count.max():
In [8]: a * df.Count.max()
Out[8]: 1519.9510643250142
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/473650.html
