2016-11-15 89 views
0

我正在使用軟件包fitter來將連續分佈適合Python中數據的數組結構。 fitter.fitted_param返回每個分佈的最適合參數的不同長度的花紋詞典。這些參數與用於在scipy.stats中設置這些分佈的參數相同。我想用這些元組直接設置參數scipy.stats,但我不知道如何去做。有任何想法嗎?如何使用列表爲scipy.stats分配設置參數

例子:

>from fitter import Fitter 
>import numpy as np 
>data = np.random.random((1000,1)) 
>f = Fitter(data,distributions = ['norm','gamma']) 
>f.fit() 
>param = f.fitted_param['gamma'] 
>param 
out:(20759.430545279687, -41.012521759919224, 0.0019996776498165851) 

如果我現在要創建一個新的Gamma分佈產生伽瑪分佈的隨機值相同aloc在上述param指定scale,我需要寫:

>from scipy import stats 
>rv = stats.gamma(a=param[0],loc=param[1],scale=param[2]) 
>rv.rvs(100) 

如何設置alocscale直接而無需鍵入出來明確?我希望能夠快速適應具有任意數量參數的任何分佈,並生成遵循該分佈的隨機值。

感謝您的幫助!

回答

1

如果param的參數列表按正確順序排列,則可以執行<distribution>(*param)

如果不是,你必須有你的PARAMS在字典中,並與<distribution>(**param)稱呼其爲關鍵字參數,例如:

param = {"a": 20759, "scale": 0.001, "loc": -41} 
stats.gamma(**param) 

編輯:點擊此處瞭解詳情:*args and **kwargs?

+0

謝謝 - 那非常簡單。我也很欣賞鏈接! –