【问题标题】:How to set parameters for scipy.stats distribution with a list如何使用列表设置 scipy.stats 分布的参数
【发布时间】:2017-03-30 00:45:57
【问题描述】:

我正在使用包 fitter 将连续分布拟合到 Python 中的 numpy 数据数组。 fitter.fitted_param 返回一个由不同长度的元组组成的字典,其中包含每个分布的最佳拟合参数。这些是用于在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 分布以生成具有相同 alocscale 在上面 param 中指定的 gamma 分布的随机值,我需要编写:

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

如何在不明确输入的情况下直接设置alocscale?我希望能够使用任意数量的参数快速拟合任何分布,并生成遵循该分布的随机值。

感谢您的帮助!

【问题讨论】:

    标签: python scipy statistics


    【解决方案1】:

    可以在<distribution>(*param),前提是参数列表param符合正确的顺序。

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

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

    编辑:此处的更多信息:*args and **kwargs?

    【讨论】:

    • 谢谢 - 这非常简单。我也很欣赏链接! span>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-09
    • 1970-01-01
    • 2023-02-01
    • 2019-01-25
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    相关资源
    最近更新 更多