类 MultivariateNormalMixtureExpectationMaximization
java.lang.Object
org.hipparchus.stat.fitting.MultivariateNormalMixtureExpectationMaximization
用于拟合多元正态混合模型分布参数的期望最大化算法。此实现是基于华盛顿大学电气工程系Yihua Chen和Maya R. Gupta撰写的《EM Demystified: An Expectation-Maximization Tutorial》的纯原始代码。它使用外部工具(如CRAN Mixtools)进行验证(请参阅JUnit测试用例),但完全不基于Mixtools代码。关于此类起源的讨论可以在MATH-817 JIRA问题的评论中看到。
-
构造器概要
-
方法概要
修饰符和类型方法说明estimate
(double[][] data, int numComponents) 创建一个辅助方法,用于创建一个多元正态混合模型,该模型可用于初始化fit(MixtureMultivariateNormalDistribution)
。void
fit
(MixtureMultivariateNormalDistribution initialMixture) 将混合模型拟合到构造函数提供的数据中。void
fit
(MixtureMultivariateNormalDistribution initialMixture, int maxIterations, double threshold) 将混合模型拟合到构造函数提供的数据中。获取拟合的模型。double
获取拟合模型下数据的对数似然。
-
构造器详细资料
-
MultivariateNormalMixtureExpectationMaximization
public MultivariateNormalMixtureExpectationMaximization(double[][] data) throws MathIllegalArgumentException 创建一个对象,用于将多元正态混合模型拟合到数据中。- 参数:
-
data
- 用于拟合过程的数据 - 抛出:
-
MathIllegalArgumentException
- 如果数据没有行 -
MathIllegalArgumentException
- 如果数据的行具有不同数量的列 -
MathIllegalArgumentException
- 如果数据中的列数少于2
-
-
方法详细资料
-
fit
public void fit(MixtureMultivariateNormalDistribution initialMixture, int maxIterations, double threshold) throws MathIllegalArgumentException 将混合模型拟合到构造函数提供的数据中。拟合的质量取决于构造函数提供的数据的凹性和提供给此函数的初始混合。如果数据有许多局部最优解,则可能需要使用不同初始混合运行拟合函数的多次运行才能找到最佳解。如果遇到MathIllegalArgumentException,则可能需要尝试另一个初始化。- 参数:
-
initialMixture
- 包含权重和多元正态初始值的模型 -
maxIterations
- 允许的最大迭代次数 -
threshold
- 收敛阈值,计算为连续迭代之间的对数似然差异 - 抛出:
-
MathIllegalArgumentException
- 如果任何组件的协方差矩阵在拟合过程中是奇异的 -
MathIllegalArgumentException
- 如果numComponents小于1或threshold小于Double.MIN_VALUE -
MathIllegalArgumentException
- 如果initialMixture均值向量和数据列数不相等
-
fit
public void fit(MixtureMultivariateNormalDistribution initialMixture) throws MathIllegalArgumentException 将混合模型拟合到构造函数提供的数据中。拟合的质量取决于构造函数提供的数据的凹性和提供给此函数的初始混合。如果数据有许多局部最优解,则可能需要使用不同初始混合运行拟合函数的多次运行才能找到最佳解。如果遇到MathIllegalArgumentException,则可能需要尝试另一个初始化。- 参数:
-
initialMixture
- 包含权重和多元正态初始值的模型 - 抛出:
-
MathIllegalArgumentException
- 如果任何组件的协方差矩阵在拟合过程中是奇异的 -
MathIllegalArgumentException
- 如果numComponents小于1或threshold小于Double.MIN_VALUE
-
estimate
public static MixtureMultivariateNormalDistribution estimate(double[][] data, int numComponents) throws MathIllegalArgumentException 创建一个辅助方法,用于创建一个多元正态混合模型,该模型可用于初始化fit(MixtureMultivariateNormalDistribution)
。此方法使用构造函数提供的数据来尝试确定一个良好的混合模型,从而开始拟合,但不能保证提供的模型将找到最佳解决方案或甚至收敛。- 参数:
-
data
- 用于估计分布的数据 -
numComponents
- 估计混合物的组件数 - 返回:
- 从数据估计的多元正态混合模型
- 抛出:
-
MathIllegalArgumentException
- 如果numComponents
大于数据行数。 -
MathIllegalArgumentException
- 如果numComponents < 2
。 -
MathIllegalArgumentException
- 如果数据少于2行 -
MathIllegalArgumentException
- 如果数据的行具有不同数量的列
-
getLogLikelihood
public double getLogLikelihood()获取拟合模型下数据的对数似然。- 返回:
- 数据的对数似然或如果尚未拟合任何数据则为零
-
getFittedModel
获取拟合的模型。- 返回:
-
拟合的模型或
null
如果尚未执行拟合。
-