繁体   English   中英

如何使用列表设置scipy.stats分发的参数

[英]How to set parameters for scipy.stats distribution with a list

我正在使用包fitter来使连续分布适合Python中的numpy数据数组。 fitter.fitted_param返回具有不同长度的tupple的字典,其中包含每个分布的最佳拟合参数。 这些参数与用于在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)

如果我现在要创建一个新的伽玛分布产生伽玛分布的随机值与同alocscale在指定param上面,我需要写:

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

如何设置aloc ,以及scale的情况下直接键入出来明确? 我希望能够使用任意数量的参数快速拟合任何分布,并生成遵循该分布的随机值。

谢谢你的帮助!

您可以执行<distribution>(*param) ,只要参数param列表的顺序正确。

如果不是,则必须在字典中包含参数,并使用<distribution>(**param)将其作为关键字参数调用,例如:

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

编辑:更多信息在这里: * args和** kwargs?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM