本文整理汇总了Java中org.apache.commons.math3.distribution.MultivariateNormalDistribution.getCovariances方法的典型用法代码示例。如果您正苦于以下问题:Java MultivariateNormalDistribution.getCovariances方法的具体用法?Java MultivariateNormalDistribution.getCovariances怎么用?Java MultivariateNormalDistribution.getCovariances使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类org.apache.commons.math3.distribution.MultivariateNormalDistribution
的用法示例。
在下文中一共展示了MultivariateNormalDistribution.getCovariances方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: testMahalanobis
import org.apache.commons.math3.distribution.MultivariateNormalDistribution; //导入方法依赖的package包/类
@Test
public void testMahalanobis() {
MultivariateNormalDistribution mvNormal = getSample3dNormal();
Gaussian gaussian = new Gaussian(mvNormal.getMeans(), mvNormal.getCovariances());
int N = 100000;
int k = 3;
double[][] testData = new double[N][k];
for (int i = 0; i < N; i++) {
testData[i] = mvNormal.sample();
}
double[] mScores = new double[N];
long startTime = System.currentTimeMillis();
for (int i = 0; i < N; i++) {
mScores[i] = gaussian.mahalanobis(testData[i]);
}
long endTime = System.currentTimeMillis();
log.debug("Mahalobis distance on {} in {}", N, endTime-startTime);
double[] dScores = new double[N];
startTime = System.currentTimeMillis();
for (int i = 0; i < N; i++) {
dScores[i] = -Math.log(mvNormal.density(testData[i]));
}
endTime = System.currentTimeMillis();
log.debug("LogPDF on {} in {}", N, endTime-startTime);
// Check that mahalonbis distance has same relative magnitude as -log(pdf)
for (int i = 1; i < N; i++) {
assertEquals(mScores[i] > mScores[i-1], dScores[i] > dScores[i-1]);
}
}
示例2: testFit
import org.apache.commons.math3.distribution.MultivariateNormalDistribution; //导入方法依赖的package包/类
@Test
public void testFit() {
// Test that the loglikelihood, weights, and models are determined and
// fitted correctly
final double[][] data = getTestSamples();
final double correctLogLikelihood = -4.292431006791994;
final double[] correctWeights = new double[] { 0.2962324189652912, 0.7037675810347089 };
final double[][] correctMeans = new double[][]{
{-1.4213112715121132, 1.6924690505757753},
{4.213612224374709, 7.975621325853645}
};
final RealMatrix[] correctCovMats = new Array2DRowRealMatrix[2];
correctCovMats[0] = new Array2DRowRealMatrix(new double[][] {
{ 1.739356907285747, -0.5867644251487614 },
{ -0.5867644251487614, 1.0232932029324642 } }
);
correctCovMats[1] = new Array2DRowRealMatrix(new double[][] {
{ 4.245384898007161, 2.5797798966382155 },
{ 2.5797798966382155, 3.9200272522448367 } });
final MultivariateNormalDistribution[] correctMVNs = new MultivariateNormalDistribution[2];
correctMVNs[0] = new MultivariateNormalDistribution(correctMeans[0], correctCovMats[0].getData());
correctMVNs[1] = new MultivariateNormalDistribution(correctMeans[1], correctCovMats[1].getData());
MultivariateNormalMixtureExpectationMaximization fitter
= new MultivariateNormalMixtureExpectationMaximization(data);
MixtureMultivariateNormalDistribution initialMix
= MultivariateNormalMixtureExpectationMaximization.estimate(data, 2);
fitter.fit(initialMix);
MixtureMultivariateNormalDistribution fittedMix = fitter.getFittedModel();
List<Pair<Double, MultivariateNormalDistribution>> components = fittedMix.getComponents();
Assert.assertEquals(correctLogLikelihood,
fitter.getLogLikelihood(),
Math.ulp(1d));
int i = 0;
for (Pair<Double, MultivariateNormalDistribution> component : components) {
final double weight = component.getFirst();
final MultivariateNormalDistribution mvn = component.getSecond();
final double[] mean = mvn.getMeans();
final RealMatrix covMat = mvn.getCovariances();
Assert.assertEquals(correctWeights[i], weight, Math.ulp(1d));
Assert.assertTrue(Arrays.equals(correctMeans[i], mean));
Assert.assertEquals(correctCovMats[i], covMat);
i++;
}
}