public void MultinomialPartDistribution_MaximumLikelihood_FromClassifiedSample_UseSmoothing() { // arrange var sample = new ClassifiedSample <double[]> { { new[] { 1.0D, 2.0D, 0.0D }, new Class("A", 0) }, { new[] { 3.0D, 0.0D, 2.0D }, new Class("A", 0) }, { new[] { 0.0D, 3.0D, 1.0D }, new Class("B", 1) }, { new[] { 0.0D, 2.0D, 0.0D }, new Class("B", 1) }, { new[] { 0.0D, 2.0D, 2.0D }, new Class("B", 1) }, }; var n = 3; // sample[i].Key.Length - the length of the word dictionary var distr = new MultinomialPartDistribution { N = n, UseSmoothing = true, Alpha = 2 }; // act var res = distr.FromSample(sample); var dA1 = res[0][0]; var dA2 = res[0][1]; var dA3 = res[0][2]; var dB1 = res[1][0]; var dB2 = res[1][1]; var dB3 = res[1][2]; // assert Assert.AreEqual(6.0D / 14, dA1.P, EPS); Assert.AreEqual(4.0D / 14, dA2.P, EPS); Assert.AreEqual(4.0D / 14, dA3.P, EPS); Assert.AreEqual(2.0D / 16, dB1.P, EPS); Assert.AreEqual(9.0D / 16, dB2.P, EPS); Assert.AreEqual(5.0D / 16, dB3.P, EPS); }
public void MultinomialPartDistribution_MaximumLikelihood_FromSample() { // arrange var distr = new MultinomialPartDistribution { TotalCount = 10 }; var sample = new[] { 2.0D, 1.0D, 0.0D, 3.0D }; // act distr.FromSample(sample); var pars = distr.Params; // assert Assert.AreEqual(0.60D, pars.P, EPS); }
public void MultinomialPartDistribution_MaximumLikelihood_FromSample_UseSmoothing() { // arrange var distr = new MultinomialPartDistribution { N = 10, UseSmoothing = true, Alpha = 2, TotalCount = 80 }; var sample = new[] { 0.0D, 0.0D, 0.0D, 0.0D }; // act distr.FromSample(sample); var pars = distr.Params; // assert Assert.AreEqual(0.02D, pars.P, EPS); }
public void MultinomialPartDistribution_Value() { // arrange var distr = new MultinomialPartDistribution(); distr.Params = new MultinomialPartDistribution.Parameters(0.3D); // act var v0 = distr.Value(0); var v1 = distr.Value(1); var v2 = distr.Value(2); // assert Assert.AreEqual(1.0D, v0); Assert.AreEqual(0.3D, v1); Assert.AreEqual(0.09D, v2); }