如何以编程方式获取 scipy 中的参数名称和值
How to programatically get parameter names and values in scipy
有什么方法可以获取分布的参数吗?我知道几乎每个发行版都有 "loc" 和 "scale" 但它们之间存在差异,例如 alpha 有 "a",beta 有 "a" ,"b".
我想做的是以编程方式打印(在拟合分布之后)参数、值的键值对。
但我不想为每个可能的分发编写打印例程。
inspect
使用 _pdf
方法似乎有效:
import inspect
# keys
[p for p in inspect.signature(stats.beta._pdf).parameters if not p=='x']
# ['a', 'b']
# keys and values
dist = stats.alpha(a=1)
inspect.signature(stats.alpha._pdf).bind('x', *dist.args, **dist.kwds).arguments
# OrderedDict([('x', 'x'), ('a', 1)])
# 'x' probably doesn't count as a parameter
最后我做的是:
parameter_names = [p for p in inspect.signature(distribution._pdf).parameters if not p=='x'] + ["loc","scale"]
parameters = distribution.fit(pd_series)
distribution_parameters_dictionary =dict(zip(parameter_names,parameters))
其中 pd_series 是正在拟合的 pandas 系列数据。
有什么方法可以获取分布的参数吗?我知道几乎每个发行版都有 "loc" 和 "scale" 但它们之间存在差异,例如 alpha 有 "a",beta 有 "a" ,"b".
我想做的是以编程方式打印(在拟合分布之后)参数、值的键值对。
但我不想为每个可能的分发编写打印例程。
inspect
使用 _pdf
方法似乎有效:
import inspect
# keys
[p for p in inspect.signature(stats.beta._pdf).parameters if not p=='x']
# ['a', 'b']
# keys and values
dist = stats.alpha(a=1)
inspect.signature(stats.alpha._pdf).bind('x', *dist.args, **dist.kwds).arguments
# OrderedDict([('x', 'x'), ('a', 1)])
# 'x' probably doesn't count as a parameter
最后我做的是:
parameter_names = [p for p in inspect.signature(distribution._pdf).parameters if not p=='x'] + ["loc","scale"]
parameters = distribution.fit(pd_series)
distribution_parameters_dictionary =dict(zip(parameter_names,parameters))
其中 pd_series 是正在拟合的 pandas 系列数据。