【问题标题】:Automatically fitting distribution to histogram in Matlab or Java [closed]在 Matlab 或 Java 中自动将分布拟合到直方图 [关闭]
【发布时间】:2016-06-12 12:25:36
【问题描述】:

我有一个特征(机器学习)的直方图。这意味着在 x 轴上我有几个特征可以采用的值,在 y 轴上我有出现次数。

如果我不知道它是哪种类型的分布(正态分布或几何分布等),是否可以在 Matlab(或 Java)中自动将概率分布拟合到该直方图?这意味着 Matlab(或 Java)应该找出它是哪个分布并给我最佳参数。

问题是我有很多功能,手动检查功能需要太多时间。

编辑:我发现以下 Matlab 工具可以完成这项工作:http://blogs.mathworks.com/pick/2012/02/10/finding-the-best/ 不幸的是它只支持参数模型。

Edit2:我现在有点困惑。我已经读过我必须标准化我的直方图,以便我看到经验概率而不是数字。如果我想尝试所有可能的参数分布并选择最好的,这是真的吗?在 Matlab 中如何进行这种归一化?

【问题讨论】:

  • 没有任何类型的训练 + 建模,你最好的办法是强行将每个分布强加到数据上并计算 RMSE(或其他说明分布与数据拟合程度的方法)并选择一个RMSE 最低,但这远非理想,很容易导致错误。
  • @GameOfThrows 我已经更新了我的问题。
  • 如果您对参数模型不感兴趣,那么您需要为您的问题添加更多解释。为什么你认为参数模型是不够的?如果您对参数模型不感兴趣,为什么不直接使用经验分布?您有兴趣使用哪些拟合标准?你为什么要做这个装修?你希望通过这次装修达到什么目的?您放弃了很多上下文(这很好),但是当您陈述的问题 (allfitdist) 的答案不够好时,您需要说明更多。
  • 您在编辑 1 中发布的链接正是我所说的,如果您阅读此处的文件描述mathworks.com/matlabcentral/fileexchange/… 这个工具箱基本上使用了许多分布来尝试拟合您的数据。每次计算 RMSE 并在最后决定最佳拟合。您实际上不需要使事情复杂化。首先,您想尝试哪些发行版?正常,线性,二次等?您只需要编写一个带有 IF 条件的循环来执行此操作。相信我,这很简单。
  • 还要回答您的 EDIT 2,将您的数据标准化为 PDF 不会改变您的拟合,是的,它会改变您的 RMSE 计算。所以你要么规范化它们中的每一个,要么不规范化任何东西。当您比较每个直方图时,标准化是一种很好的做法,但不会影响您的曲线拟合。

标签: java matlab statistics histogram distribution


【解决方案1】:

我不知道有任何工具可以自动找到最佳分发类型。但是,由于真实数据通常不完全对应于一个分布,并且存在任意数量的可能分布,因此存在这样的工具也没有什么意义。

我建议将您的问题限制在某些分布模型(高斯、对称、...),计算各个模型的最佳拟合,为每个拟合生成似然参数,然后采用最高的拟合/模型可能性。

【讨论】:

  • 感谢您的回答。请在原帖中查看我的第二次编辑。
  • 归一化意味着直方图的总体概率为 1。要在 matlab 中为 vetcor“数据”执行此操作,您可以使用:data = data./sum(data);这样 sum(data) = 1;
猜你喜欢
  • 2017-03-21
  • 1970-01-01
  • 2017-09-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-24
  • 1970-01-01
相关资源
最近更新 更多