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

Python 使用scipy.stats自动拟合并在pdf计算中使用参数,python,pdf,scipy,Python,Pdf,Scipy,我想让我的程序自动选择具有最佳适应度的分布,并使用此分布的概率密度函数来计算概率 使用scipy.stats.rv_continuous.fit获取拟合参数,例如 paras=scipy.stats.norm.fit(数据数组) 使用scipy.stats.kstest测试适应性 fitness=scipy.stats.kstest(数据数组,段落) 选择给出最低测试分数的分布 计算概率,例如 scipy.stats.norm.pdf(my_值,段落) 我不确定这是否是一个严格正确的方法来选择最

我想让我的程序自动选择具有最佳适应度的分布,并使用此分布的概率密度函数来计算概率

  • 使用
    scipy.stats.rv_continuous.fit
    获取拟合参数,例如

    paras=scipy.stats.norm.fit(数据数组)

  • 使用
    scipy.stats.kstest
    测试适应性

    fitness=scipy.stats.kstest(数据数组,段落)

  • 选择给出最低测试分数的分布

  • 计算概率,例如

    scipy.stats.norm.pdf(my_值,段落)

  • 我不确定这是否是一个严格正确的方法来选择最适合的分布。目前它适用于正态分布

    我的问题是如何将参数解析为
    scipy.stats.rv\u 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])
    
    但结果却很微妙。有没有人想做这样的事情,遇到同样的问题


    我的目标是在朴素贝叶斯分类中用更好的分布代替高斯分布,以期提高预测精度。

    如果您的主要问题是如何选择最“严格正确的方法来选择最佳拟合分布”,而不是如何在
    scipy
    中对过程进行编码,你最好问问Hi@GeauxEric,你解决过这个问题吗?我想做一些类似的事情(如果简单分布失败,则移动到各种分布的总和和最终的核密度估计)。变量参数问题的答案是在函数调用中使用
    *paras
    。除此之外,我认为一个通用的、健壮的解决方案并不是一个微不足道的问题。嗨@Ed Smith,我没有成功地自动解决这个问题。因为我发现几个分布足以描述我的模型,所以我手动传递这些分布的参数。我想我会得到一个类似的解决方案。。。