public static CreateInputOutputsExample2 ( double &inputs, int &outputs ) : void | ||
inputs | double | |
outputs | int | |
return | void |
public void CoefficientsTest1() { double[][] inputs; int[] outputs; MultinomialLogisticRegressionTest.CreateInputOutputsExample2(out inputs, out outputs); var analysis = new MultinomialLogisticRegressionAnalysis(inputs, outputs); int inputCount = 5; int coeffCount = inputCount + 1; var mlr = analysis.regression; analysis.Iterations = 100; analysis.Tolerance = 1e-6; analysis.Compute(); foreach (var coefficient in analysis.Coefficients) { Assert.IsNotNull(coefficient.Analysis); Assert.IsNotNull(coefficient.Confidence); Assert.IsNotNull(coefficient.ConfidenceLower); Assert.IsNotNull(coefficient.ConfidenceUpper); Assert.IsNotNull(coefficient.Name); Assert.IsNotNull(coefficient.Class); Assert.IsNotNull(coefficient.StandardError); Assert.IsNotNull(coefficient.Value); } Assert.AreEqual(13, analysis.Coefficients.Count); Assert.AreEqual(2, analysis.CoefficientValues.Length); var class1 = analysis.CoefficientValues[0]; Assert.AreEqual(-11.774547061739975, class1[0], 1e-10); Assert.AreEqual(0.523813075806107, class1[1], 1e-10); Assert.AreEqual(0.36820307277024716, class1[2], 1e-10); Assert.AreEqual(0, class1[3], 1e-6); Assert.AreEqual(0, class1[4], 1e-6); Assert.AreEqual(0, class1[5], 1e-6); var class2 = analysis.CoefficientValues[1]; Assert.AreEqual(-22.721272157115514, class2[0], 1e-10); Assert.AreEqual(0.46593949381162203, class2[1], 1e-10); Assert.AreEqual(0.68590438098052586, class2[2], 1e-10); Assert.AreEqual(0, class2[3], 1e-6); Assert.AreEqual(0, class2[4], 1e-6); Assert.AreEqual(0, class2[5], 1e-6); }
public void ComputeTest2() { double[][] inputs; int[] outputs; MultinomialLogisticRegressionTest.CreateInputOutputsExample2(out inputs, out outputs); var analysis = new MultinomialLogisticRegressionAnalysis(inputs, outputs); int inputCount = 5; int outputCount = 3; int coeffCount = inputCount + 1; var mlr = analysis.regression; Assert.AreEqual(inputCount, mlr.Inputs); Assert.AreEqual(outputCount, mlr.Categories); Assert.AreEqual(inputCount, analysis.Inputs.Length); Assert.AreEqual(outputCount, analysis.OutputNames.Length); analysis.Iterations = 100; analysis.Tolerance = 1e-6; analysis.Compute(); Assert.AreEqual(outputCount - 1, analysis.CoefficientValues.Length); Assert.AreEqual(outputCount - 1, analysis.StandardErrors.Length); Assert.AreEqual(outputCount - 1, analysis.WaldTests.Length); Assert.AreEqual(outputCount - 1, analysis.Confidences.Length); for (int i = 0; i < analysis.CoefficientValues.Length; i++) { Assert.AreEqual(coeffCount, analysis.CoefficientValues[i].Length); Assert.AreEqual(coeffCount, analysis.StandardErrors[i].Length); Assert.AreEqual(coeffCount, analysis.WaldTests[i].Length); Assert.AreEqual(coeffCount, analysis.Confidences[i].Length); for (int j = 0; j < analysis.CoefficientValues[i].Length; j++) { Assert.IsFalse(double.IsNaN(analysis.CoefficientValues[i][j])); Assert.IsFalse(double.IsNaN(analysis.StandardErrors[i][j])); } } var coefficients = analysis.CoefficientValues; // brand 2 Assert.AreEqual(-11.774655, coefficients[0][0], 1e-3); // intercept Assert.AreEqual(0.523814, coefficients[0][1], 1e-3); // female Assert.AreEqual(0.368206, coefficients[0][2], 1e-3); // age // brand 3 Assert.AreEqual(-22.721396, coefficients[1][0], 1e-3); // intercept Assert.AreEqual(0.465941, coefficients[1][1], 1e-3); // female Assert.AreEqual(0.685908, coefficients[1][2], 1e-3); // age var standard = analysis.StandardErrors; Assert.AreEqual(-702.97, analysis.LogLikelihood, 1e-2); Assert.AreEqual(185.85, analysis.ChiSquare.Statistic, 1e-2); Assert.AreEqual(1405.9414080469473, analysis.Deviance, 1e-5); }