public void JointEntropyTest() { var a = new[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }; var b = new[] { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1 }; Assert.AreEqual(4, PipExtensions.JointEntropy(a, b), 1e-300); }
public void MutualInformationTest() { var a = new[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }; var b = new[] { 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1 }; Assert.AreEqual(1, PipExtensions.MutualInformation(a, b), 1e-300); }
public void MinkowskiDistanceTest() { var v1 = new[] { 1.0, 2, 3, 4, 5 }; var v2 = new[] { -1.0, 0, 3, 2, 8 }; var distanceL1 = PipExtensions.MinkowskiDistance(v1, v2, 1); var distanceL2 = PipExtensions.MinkowskiDistance(v1, v2, 2); Assert.AreEqual(9, distanceL1, 1e-300); Assert.AreEqual(Math.Sqrt(21), distanceL2, 1e-300); }
public void HammingDistanceTest() { var v1 = new[] { 1.0, 2, 3, 4, 5 }; var v2 = new[] { -1.0, 0, 3, 2, 8 }; var s1 = "abcdef".ToCharArray(); var s2 = "axcyzf".ToCharArray(); var d1 = PipExtensions.HammingDistance(v1, v2); var d2 = PipExtensions.HammingDistance(s1, s2); Assert.AreEqual(4, d1); Assert.AreEqual(3, d2); }
public void QFunctionTest() { var array = new[] { 0.0, 0.1, 0.2, 0.3, 0.4, -0.5, -1.0, -1.5, -2.0, -3.0 }; var ans = new[] { 0.500000000, 0.460172163, 0.420740291, 0.382088578, 0.344578258, 0.308537539, 0.158655254, 0.066807201, 0.022750132, 0.001349898 }; for (var i = 0; i < array.Length; i++) { Assert.AreEqual(ans[i], PipExtensions.QFunction(array[i], 0, 1), 1e-6); } }
public void ErfTest() { var array = new[] { 0.00, 0.05, 0.10, 0.20, 0.30, 0.40, 0.50, 1.00, 1.50, 2.00 }; var ans = new[] { 0.0000000, 0.0563720, 0.1124629, 0.2227026, 0.3286268, 0.4283924, 0.5204999, 0.8427008, 0.9661051, 0.9953223 }; for (var i = 0; i < array.Length; i++) { Assert.AreEqual(ans[i], PipExtensions.Erf(array[i]), 1e-6); } }