我希望我的程序能够自动选择具有最佳适应度的分布,并使用此分布的概率密度函数来计算概率
使用scipy.stats.rv_continuous.fit
获取拟合参数,例如
paras = scipy.stats.norm.fit(data_array)
使用scipy.stats.kstest
来测试适合度
fitness = scipy.stats.kstest(data_array, paras)
选择得出最低kstest得分的分布
计算概率,例如
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])
但结果很奇怪。有没有人想做这样的事情并遇到同样的问题?
我的目标是用朴素贝叶斯分类中的任何更好的分布替换高斯分布,以期提高预测精度。