使用scipy.stats自动拟合并使用pdf计算中的参数

sc4hvdpw  于 7个月前  发布在  其他
关注(0)|答案(1)|浏览(82)

我希望我的程序能自动选择具有最佳适应度的分布,并使用该分布的概率密度函数来计算概率
1.使用scipy.stats.rv_continuous.fit获取拟合参数,例如:
paras = scipy.stats.norm.fit(data_array)
1.使用scipy.stats.kstest测试适应性
fitness = scipy.stats.kstest(data_array, paras)
1.选择给出最低kstest分数的分布
1.计算概率,例如
scipy.stats.norm.pdf(my_values, paras)
我不确定这是否是一个严格正确的选择最佳拟合分布的方法,目前它适用于正态分布。
我的问题是如何解析scipy.stats.rv_continuous.pdf()的参数。对于某些分布,有三个参数从scipy.stats.rv_continuous.fit()计算,包括形状,位置和规模。我试图直接解析,如

scipy.stats.rv_continuous.pdf(my_values, paras[0], paras[1], paras[2])

字符串
这将给予一个点的两个pdf值。
我也试着用这种方式来解析

scipy.stats.rv_continuous.pdf(my_values, paras[0], paras[1], paras[2])


但结果是奇怪的,有人想做这样的事情,遇到同样的问题吗?
我的目标是在朴素贝叶斯分类中用任何更好的分布来代替高斯分布,希望能提高预测精度。

ifsvaxew

ifsvaxew1#

我的问题是如何解析scipy.stats.rv_continuous.pdf()的参数
从字面上解释,这听起来像是你试图使用scipy.stats.rv_continuous类的pdf方法,但是在使用pdf方法之前,rv_continuous类必须被子类化和示例化。
接下来,我假设你使用rv_continuous作为引用SciPy发行版的变量,例如rv_continuous = stats.norm。你可能想跳到最后的代码,但我将首先解决每个指示问题的语句。
我试着像scipy.stats.rv_continuous.pdf(my_values, paras[0], paras[1], paras[2])那样直接解析,这将为一个点给予两个pdf值。
如果不知道rv_continuous指的是什么分布,my_values是什么分布,很难调试这个。如果rv_continuous是指SciPy分布的变量,如果my_values是标量,如果parasrv_continuous.fit的输出,如果rv_continuous有三个参数(包括locscale),只会有一个输出,所以问题一定出在这里没有包括的信息上。
我也试着用这种方式解析scipy.stats.rv_continuous.pdf(my_values, paras[0], paras[1], paras[2]),但结果很奇怪。
由于这与前面的方法相同,我们希望它具有相同的行为。请考虑详细说明输出是什么,因为“怪异”可以意味着很多事情。
无论如何,这段代码听起来都很有用。对于两个不同的分布,它将分布拟合到数据,从拟合的参数创建冻结分布,并计算某个点的PDF。这两个分布具有不同数量的参数,因此您可以看到无论分布有多少参数,代码都可以工作。

import numpy as np
from scipy import stats

rng = np.random.default_rng()
data = rng.normal(size=1000)

for family_name in ['norm', 'skewnorm']:
  family = getattr(stats, family_name)
  params = family.fit(data)
  dist = family(*params)  # note use of `*` to automatically unpack `params`
  print(f"{family_name}{params}.pdf(1): {dist.pdf(1)}")

# norm(-0.004263933560864075, 0.9864850754623957).pdf(1): 0.2408655741640401
# skewnorm(-0.9815681271426395, 0.660439450142722, 1.1895346103612483).pdf(1): 0.25093359040244

字符串

相关问题