public void TestCenterMatrixOnArithmeticMean() { var centeredMatrixA = MahalanobisDistanceCalculator.CenterMatrixOnArithmeticMean(m_matrixA, m_meanArrayA); var centeredMatrixB = MahalanobisDistanceCalculator.CenterMatrixOnArithmeticMean(m_matrixB, m_meanArrayB); double[,] testArrayA = { { -1.9, -2.3 }, { -1.9, 0.7 }, { 2.1, 0.7 }, { 3.1, -1.3 }, { 0.1, 2.7 }, { 2.1, -0.3 }, { 1.1, -1.3 }, { 0.1, 1.7 }, { -1.9, 0.7 }, { -2.9, -1.3 } }; double[,] testArrayB = { { -0.2, -0.2 }, { 0.8, -1.2 }, { 1.8, 1.8 }, { -1.2, 0.8 }, { -1.2, -1.2 } }; var testMatrixA = DenseMatrix.OfArray(testArrayA); var testMatrixB = DenseMatrix.OfArray(testArrayB); for (var i = 0; i < centeredMatrixA.RowCount; i++) { for (var j = 0; j < centeredMatrixA.ColumnCount; j++) { Assert.AreEqual(testMatrixA[i, j], centeredMatrixA[i, j], DELTA); } } for (var i = 0; i < centeredMatrixB.RowCount; i++) { for (var j = 0; j < centeredMatrixB.ColumnCount; j++) { Assert.AreEqual(testMatrixB[i, j], centeredMatrixB[i, j], DELTA); } } }
public void TestCalculateArithmeticMean() { var meanA = MahalanobisDistanceCalculator.CalculateArithmeticMean(m_matrixA); var meanB = MahalanobisDistanceCalculator.CalculateArithmeticMean(m_matrixB); Assert.AreEqual(3.9, meanA[0], DELTA); Assert.AreEqual(4.3, meanA[1], DELTA); Assert.AreEqual(6.2, meanB[0], DELTA); Assert.AreEqual(5.2, meanB[1], DELTA); }
public void TestCreateMeanDifferenceMatrix() { var meanDifferenceMatrix = MahalanobisDistanceCalculator.CreateMeanDifferenceMatrix(m_meanArrayA, m_meanArrayB); double[,] testArray = { { -2.3 }, { -0.9 } }; var testMatrix = DenseMatrix.OfArray(testArray); for (var i = 0; i < meanDifferenceMatrix.RowCount; i++) { for (var j = 0; j < meanDifferenceMatrix.ColumnCount; j++) { Assert.AreEqual(testMatrix[i, j], meanDifferenceMatrix[i, j], DELTA); } } }
public void TestCreatePooledCovarianceMatrix() { var pooledCovarianceMatrix = MahalanobisDistanceCalculator.CreatePooledCovarianceMatrix(m_covarianceMatrixA, m_covarianceMatrixB, m_matrixA, m_matrixB); double[,] testArray = { { 3.04667, 0.27333 }, { 0.27333, 1.92667 } }; var testMatrix = DenseMatrix.OfArray(testArray); for (var i = 0; i < pooledCovarianceMatrix.RowCount; i++) { for (var j = 0; j < pooledCovarianceMatrix.ColumnCount; j++) { Assert.AreEqual(testMatrix[i, j], Math.Round(pooledCovarianceMatrix[i, j], 5), DELTA); } } }
public void TestCreateCovarianceMatrix() { var covarianceMatrixA = MahalanobisDistanceCalculator.CreateCovarianceMatrix(m_matrixA, m_meanArrayA); var covarianceMatrixB = MahalanobisDistanceCalculator.CreateCovarianceMatrix(m_matrixB, m_meanArrayB); var testMatrixA = m_covarianceMatrixA; var testMatrixB = m_covarianceMatrixB; for (var i = 0; i < covarianceMatrixA.RowCount; i++) { for (var j = 0; j < covarianceMatrixA.ColumnCount; j++) { Assert.AreEqual(testMatrixA[i, j], covarianceMatrixA[i, j], DELTA); Assert.AreEqual(testMatrixB[i, j], covarianceMatrixB[i, j], DELTA); } } }
public void CalculateMahalanobisDistance() { var mahalanobisDistance = MahalanobisDistanceCalculator.CalculateMahalanobisDistance(m_matrixA, m_matrixB); Assert.AreEqual(1.4104178399830798, mahalanobisDistance); }