MultinomialLogisticRegression Class 
Namespace: Accord.Statistics.Models.Regression
[SerializableAttribute] public class MultinomialLogisticRegression : MulticlassLikelihoodClassifierBase<double[]>, ICloneable
The MultinomialLogisticRegression type exposes the following members.
Name  Description  

MultinomialLogisticRegression(Int32, Int32) 
Creates a new Multinomial Logistic Regression Model.
 
MultinomialLogisticRegression(Int32, Int32, Double) 
Creates a new Multinomial Logistic Regression Model.

Name  Description  

Categories  Obsolete.
Gets the number of categories of the model.
 
Coefficients 
Gets the coefficient vectors, in which the
first column are the intercept values.
 
Inputs  Obsolete.
Gets the number of inputs of the model.
 
NumberOfClasses 
Gets the number of classes expected and recognized by the classifier.
(Inherited from ClassifierBaseTInput, TClasses.)  
NumberOfInputs 
Gets the number of inputs accepted by the model.
(Inherited from TransformBaseTInput, TOutput.)  
NumberOfOutputs 
Gets the number of outputs generated by the model.
(Inherited from TransformBaseTInput, TOutput.)  
NumberOfParameters 
Gets the total number of parameters in the multinomial
logistic regression [(categories  1) * (inputs + 1)].
 
StandardErrors 
Gets the standard errors associated with each
coefficient during the model estimation phase.

Name  Description  

ChiSquare(Double, Double) 
The likelihood ratio test of the overall model, also called the model chisquare test.
 
ChiSquare(Double, Int32) 
The likelihood ratio test of the overall model, also called the model chisquare test.
 
Clone 
Creates a new MultinomialLogisticRegression that is a copy of the current instance.
 
Compute(Double)  Obsolete.
Computes the model output for the given input vector.
 
Compute(Double)  Obsolete.
Computes the model outputs for the given input vectors.
 
Decide(TInput) 
Computes classlabel decisions for a given set of input vectors.
(Inherited from ClassifierBaseTInput, TClasses.)  
Decide(TInput) 
Computes a classlabel decision for a given input.
(Inherited from MulticlassScoreClassifierBaseTInput.)  
Decide(TInput, TClasses) 
Computes a classlabel decision for a given input.
(Inherited from ClassifierBaseTInput, TClasses.)  
Decide(TInput, Boolean) 
Computes classlabel decisions for the given input.
(Inherited from MulticlassClassifierBaseTInput.)  
Decide(TInput, Double) 
Computes classlabel decisions for the given input.
(Inherited from MulticlassClassifierBaseTInput.)  
Decide(TInput, Int32) 
Computes classlabel decisions for the given input.
(Inherited from MulticlassClassifierBaseTInput.)  
Decide(TInput, Double) 
Computes a classlabel decision for a given input.
(Inherited from MulticlassClassifierBaseTInput.)  
Equals  Determines whether the specified object is equal to the current object. (Inherited from Object.)  
Finalize  Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.)  
GetConfidenceInterval(Int32) 
Gets the 95% confidence intervals for the Odds Ratios for all coefficients.
 
GetConfidenceInterval(Int32, Int32) 
Gets the 95% confidence interval for the Odds Ratio for a given coefficient.
 
GetDeviance(Double, Double) 
Gets the Deviance for the model.
 
GetDeviance(Double, Int32) 
Gets the Deviance for the model.
 
GetHashCode  Serves as the default hash function. (Inherited from Object.)  
GetLogLikelihood(Double, Double) 
Gets the LogLikelihood for the model.
 
GetLogLikelihood(Double, Int32) 
Gets the Deviance for the model.
 
GetLogLikelihoodRatio 
Gets the LogLikelihood Ratio between two models.
 
GetOddsRatio(Int32) 
Gets the Odds Ratio for all coefficients.
 
GetOddsRatio(Int32, Int32) 
Gets the Odds Ratio for a given coefficient.
 
GetType  Gets the Type of the current instance. (Inherited from Object.)  
GetWaldTest(Int32) 
Gets the Wald Test for all coefficients.
 
GetWaldTest(Int32, Int32) 
Gets the Wald Test for a given coefficient.
 
LogLikelihood(TInput) 
Computes the loglikelihood that the given input
vector belongs to its most plausible class.
(Inherited from MulticlassLikelihoodClassifierBaseTInput.)  
LogLikelihood(TInput) 
Computes the loglikelihood that the given input
vectors belongs to each of the possible classes.
(Inherited from MulticlassLikelihoodClassifierBaseTInput.)  
LogLikelihood(TInput, Int32) 
Predicts a class label vector for the given input vector, returning the
loglikelihood that the input vector belongs to its predicted class.
(Inherited from MulticlassLikelihoodClassifierBaseTInput.)  
LogLikelihood(TInput, Double) 
Computes the loglikelihood that the given input
vectors belongs to each of the possible classes.
(Inherited from MulticlassLikelihoodClassifierBaseTInput.)  
LogLikelihood(TInput, Int32) 
Computes the loglikelihood that the given input vector
belongs to the specified classIndex.
(Inherited from MulticlassLikelihoodClassifierBaseTInput.)  
LogLikelihood(TInput, Int32) 
Computes the loglikelihood that the given input vector
belongs to the specified classIndex.
(Inherited from MulticlassLikelihoodClassifierBaseTInput.)  
LogLikelihood(TInput, Int32) 
Predicts a class label for each input vector, returning the
loglikelihood that each vector belongs to its predicted class.
(Inherited from MulticlassLikelihoodClassifierBaseTInput.)  
LogLikelihood(Double, Int32) 
Computes the loglikelihood that the given input vector
belongs to the specified classIndex.
(Overrides MulticlassLikelihoodClassifierBaseTInputLogLikelihood(TInput, Int32).)  
LogLikelihood(TInput, Int32, Double) 
Computes the loglikelihood that the given input vector
belongs to the specified classIndex.
(Inherited from MulticlassLikelihoodClassifierBaseTInput.)  
LogLikelihood(TInput, Int32, Double) 
Computes the loglikelihood that the given input vector
belongs to the specified classIndex.
(Inherited from MulticlassLikelihoodClassifierBaseTInput.)  
LogLikelihood(TInput, Int32, Double) 
Predicts a class label for each input vector, returning the
loglikelihood that each vector belongs to its predicted class.
(Inherited from MulticlassLikelihoodClassifierBaseTInput.)  
LogLikelihoods(TInput) 
Computes the loglikelihood that the given input
vector belongs to each of the possible classes.
(Inherited from MulticlassLikelihoodClassifierBaseTInput.)  
LogLikelihoods(TInput) 
Computes the loglikelihood that the given input
vectors belongs to each of the possible classes.
(Inherited from MulticlassLikelihoodClassifierBaseTInput.)  
LogLikelihoods(TInput, Double) 
Computes the loglikelihood that the given input
vector belongs to each of the possible classes.
(Inherited from MulticlassLikelihoodClassifierBaseTInput.)  
LogLikelihoods(TInput, Int32) 
Predicts a class label vector for the given input vector, returning the
loglikelihoods of the input vector belonging to each possible class.
(Inherited from MulticlassLikelihoodClassifierBaseTInput.)  
LogLikelihoods(TInput, Double) 
Computes the loglikelihood that the given input
vector belongs to each of the possible classes.
(Inherited from MulticlassLikelihoodClassifierBaseTInput.)  
LogLikelihoods(TInput, Int32) 
Computes the loglikelihood that the given input vector
belongs to the specified classIndex.
(Inherited from MulticlassLikelihoodClassifierBaseTInput.)  
LogLikelihoods(TInput, Int32) 
Predicts a class label vector for each input vector, returning the
loglikelihoods of the input vector belonging to each possible class.
(Inherited from MulticlassLikelihoodClassifierBaseTInput.)  
LogLikelihoods(TInput, Int32, Double) 
Predicts a class label vector for the given input vector, returning the
loglikelihoods of the input vector belonging to each possible class.
(Inherited from MulticlassLikelihoodClassifierBaseTInput.)  
LogLikelihoods(TInput, Int32, Double) 
Computes the loglikelihood that the given input vector
belongs to the specified classIndex.
(Inherited from MulticlassLikelihoodClassifierBaseTInput.)  
LogLikelihoods(TInput, Int32, Double) 
Predicts a class label vector for each input vector, returning the
loglikelihoods of the input vector belonging to each possible class.
(Inherited from MulticlassLikelihoodClassifierBaseTInput.)  
LogLikelihoods(Double, Int32, Double) 
Predicts a class label vector for the given input vector, returning the
loglikelihoods of the input vector belonging to each possible class.
(Overrides MulticlassLikelihoodClassifierBaseTInputLogLikelihoods(TInput, Int32, Double).)  
MemberwiseClone  Creates a shallow copy of the current Object. (Inherited from Object.)  
Probabilities(TInput) 
Computes the probabilities that the given input
vector belongs to each of the possible classes.
(Inherited from MulticlassLikelihoodClassifierBaseTInput.)  
Probabilities(TInput) 
Computes the probabilities that the given input
vector belongs to each of the possible classes.
(Inherited from MulticlassLikelihoodClassifierBaseTInput.)  
Probabilities(TInput, Double) 
Computes the probabilities that the given input
vector belongs to each of the possible classes.
(Inherited from MulticlassLikelihoodClassifierBaseTInput.)  
Probabilities(TInput, Int32) 
Predicts a class label vector for the given input vector, returning the
probabilities of the input vector belonging to each possible class.
(Inherited from MulticlassLikelihoodClassifierBaseTInput.)  
Probabilities(TInput, Double) 
Computes the probabilities that the given input
vector belongs to each of the possible classes.
(Inherited from MulticlassLikelihoodClassifierBaseTInput.)  
Probabilities(TInput, Int32) 
Predicts a class label vector for each input vector, returning the
probabilities of the input vector belonging to each possible class.
(Inherited from MulticlassLikelihoodClassifierBaseTInput.)  
Probabilities(TInput, Int32, Double) 
Predicts a class label vector for the given input vector, returning the
probabilities of the input vector belonging to each possible class.
(Inherited from MulticlassLikelihoodClassifierBaseTInput.)  
Probabilities(TInput, Int32, Double) 
Predicts a class label vector for each input vector, returning the
probabilities of the input vector belonging to each possible class.
(Inherited from MulticlassLikelihoodClassifierBaseTInput.)  
Probability(TInput) 
Predicts a class label for the given input vector, returning the
probability that the input vector belongs to its predicted class.
(Inherited from MulticlassLikelihoodClassifierBaseTInput.)  
Probability(TInput) 
Predicts a class label for the given input vector, returning the
probability that the input vector belongs to its predicted class.
(Inherited from MulticlassLikelihoodClassifierBaseTInput.)  
Probability(TInput, Int32) 
Computes the probability that the given input vector
belongs to the specified classIndex.
(Inherited from MulticlassLikelihoodClassifierBaseTInput.)  
Probability(TInput, Int32) 
Predicts a class label for the given input vector, returning the
probability that the input vector belongs to its predicted class.
(Inherited from MulticlassLikelihoodClassifierBaseTInput.)  
Probability(TInput, Double) 
Predicts a class label for the given input vector, returning the
probability that the input vector belongs to its predicted class.
(Inherited from MulticlassLikelihoodClassifierBaseTInput.)  
Probability(TInput, Int32) 
Computes the probability that the given input vector
belongs to the specified classIndex.
(Inherited from MulticlassLikelihoodClassifierBaseTInput.)  
Probability(TInput, Int32) 
Computes the probability that the given input vector
belongs to the specified classIndex.
(Inherited from MulticlassLikelihoodClassifierBaseTInput.)  
Probability(TInput, Int32) 
Predicts a class label for each input vector, returning the
probability that each vector belongs to its predicted class.
(Inherited from MulticlassLikelihoodClassifierBaseTInput.)  
Probability(TInput, Int32, Double) 
Computes the probability that the given input vector
belongs to the specified classIndex.
(Inherited from MulticlassLikelihoodClassifierBaseTInput.)  
Probability(TInput, Int32, Double) 
Computes the probability that the given input vector
belongs to the specified classIndex.
(Inherited from MulticlassLikelihoodClassifierBaseTInput.)  
Probability(TInput, Int32, Double) 
Predicts a class label for each input vector, returning the
probability that each vector belongs to its predicted class.
(Inherited from MulticlassLikelihoodClassifierBaseTInput.)  
Score(TInput) 
Computes a numerical score measuring the association between
the given input vector and its most strongly
associated class (as predicted by the classifier).
(Inherited from MulticlassScoreClassifierBaseTInput.)  
Score(TInput) 
Computes a numerical score measuring the association between
the given input vector and its most strongly
associated class (as predicted by the classifier).
(Inherited from MulticlassScoreClassifierBaseTInput.)  
Score(TInput, Int32) 
Computes a numerical score measuring the association between
the given input vector and a given
classIndex.
(Inherited from MulticlassLikelihoodClassifierBaseTInput.)  
Score(TInput, Int32) 
Predicts a class label for the input vector, returning a
numerical score measuring the strength of association of the
input vector to its most strongly related class.
(Inherited from MulticlassScoreClassifierBaseTInput.)  
Score(TInput, Double) 
Computes a numerical score measuring the association between
the given input vector and its most strongly
associated class (as predicted by the classifier).
(Inherited from MulticlassScoreClassifierBaseTInput.)  
Score(TInput, Int32) 
Computes a numerical score measuring the association between
the given input vector and a given
classIndex.
(Inherited from MulticlassScoreClassifierBaseTInput.)  
Score(TInput, Int32) 
Computes a numerical score measuring the association between
the given input vector and a given
classIndex.
(Inherited from MulticlassScoreClassifierBaseTInput.)  
Score(TInput, Int32) 
Predicts a class label for each input vector, returning a
numerical score measuring the strength of association of the
input vector to the most strongly related class.
(Inherited from MulticlassScoreClassifierBaseTInput.)  
Score(TInput, Int32, Double) 
Computes a numerical score measuring the association between
the given input vector and a given
classIndex.
(Inherited from MulticlassScoreClassifierBaseTInput.)  
Score(TInput, Int32, Double) 
Computes a numerical score measuring the association between
the given input vector and a given
classIndex.
(Inherited from MulticlassScoreClassifierBaseTInput.)  
Score(TInput, Int32, Double) 
Predicts a class label for each input vector, returning a
numerical score measuring the strength of association of the
input vector to the most strongly related class.
(Inherited from MulticlassScoreClassifierBaseTInput.)  
Scores(TInput) 
Computes a numerical score measuring the association between
the given input vector and each class.
(Inherited from MulticlassScoreClassifierBaseTInput.)  
Scores(TInput) 
Computes a numerical score measuring the association between
the given input vector and each class.
(Inherited from MulticlassScoreClassifierBaseTInput.)  
Scores(TInput, Double) 
Computes a numerical score measuring the association between
the given input vector and each class.
(Inherited from MulticlassScoreClassifierBaseTInput.)  
Scores(TInput, Int32) 
Predicts a class label vector for the given input vector, returning a
numerical score measuring the strength of association of the input vector
to each of the possible classes.
(Inherited from MulticlassScoreClassifierBaseTInput.)  
Scores(TInput, Double) 
Computes a numerical score measuring the association between
the given input vector and each class.
(Inherited from MulticlassScoreClassifierBaseTInput.)  
Scores(TInput, Int32) 
Predicts a class label vector for each input vector, returning a
numerical score measuring the strength of association of the input vector
to each of the possible classes.
(Inherited from MulticlassScoreClassifierBaseTInput.)  
Scores(TInput, Int32, Double) 
Predicts a class label vector for the given input vector, returning a
numerical score measuring the strength of association of the input vector
to each of the possible classes.
(Inherited from MulticlassScoreClassifierBaseTInput.)  
Scores(TInput, Int32, Double) 
Predicts a class label vector for each input vector, returning a
numerical score measuring the strength of association of the input vector
to each of the possible classes.
(Inherited from MulticlassScoreClassifierBaseTInput.)  
ToMulticlass 
Views this instance as a multiclass generative classifier.
(Inherited from MulticlassLikelihoodClassifierBaseTInput.)  
ToMultilabel 
Views this instance as a multilabel generative classifier,
giving access to more advanced methods, such as the prediction
of onehot vectors.
(Inherited from MulticlassLikelihoodClassifierBaseTInput.)  
ToString  Returns a string that represents the current object. (Inherited from Object.)  
Transform(TInput) 
Applies the transformation to an input, producing an associated output.
(Inherited from ClassifierBaseTInput, TClasses.)  
Transform(TInput) 
Applies the transformation to a set of input vectors,
producing an associated set of output vectors.
(Inherited from TransformBaseTInput, TOutput.)  
Transform(TInput, TClasses) 
Applies the transformation to an input, producing an associated output.
(Inherited from ClassifierBaseTInput, TClasses.)  
Transform(TInput, Boolean) 
Applies the transformation to an input, producing an associated output.
(Inherited from MulticlassClassifierBaseTInput.)  
Transform(TInput, Int32) 
Applies the transformation to an input, producing an associated output.
(Inherited from MulticlassClassifierBaseTInput.)  
Transform(TInput, Boolean) 
Applies the transformation to an input, producing an associated output.
(Inherited from MulticlassClassifierBaseTInput.)  
Transform(TInput, Double) 
Applies the transformation to an input, producing an associated output.
(Inherited from MulticlassClassifierBaseTInput.)  
Transform(TInput, Int32) 
Applies the transformation to an input, producing an associated output.
(Inherited from MulticlassClassifierBaseTInput.)  
Transform(TInput, Double) 
Applies the transformation to an input, producing an associated output.
(Inherited from MulticlassLikelihoodClassifierBaseTInput.)  
Transform(TInput, Double) 
Applies the transformation to an input, producing an associated output.
(Inherited from MulticlassLikelihoodClassifierBaseTInput.) 
Name  Description  

HasMethod 
Checks whether an object implements a method with the given name.
(Defined by ExtensionMethods.)  
IsEqual  Compares two objects for equality, performing an elementwise comparison if the elements are vectors or matrices. (Defined by Matrix.)  
ToT 
Converts an object into another type, irrespective of whether
the conversion can be done at compile time or not. This can be
used to convert generic types to numeric types during runtime.
(Defined by ExtensionMethods.) 
The default optimizer for MultinomialLogisticRegression is the LowerBoundNewtonRaphson class:
// Declare a very simple classification/regression // problem with only 2 input variables (x and y): double[][] inputs = { new[] { 3.0, 1.0 }, new[] { 7.0, 1.0 }, new[] { 3.0, 1.1 }, new[] { 3.0, 2.0 }, new[] { 6.0, 1.0 }, }; // Class labels for each of the inputs int[] outputs = { 0, 2, 0, 1, 2 }; // Create a estimation algorithm to estimate the regression LowerBoundNewtonRaphson lbnr = new LowerBoundNewtonRaphson() { MaxIterations = 100, Tolerance = 1e6 }; // Now, we will iteratively estimate our model: MultinomialLogisticRegression mlr = lbnr.Learn(inputs, outputs); // We can compute the model answers int[] answers = mlr.Decide(inputs); // And also the probability of each of the answers double[][] probabilities = mlr.Probabilities(inputs); // Now we can check how good our model is at predicting double error = new ZeroOneLoss(outputs).Loss(answers); // We can also verify the classes with highest // probability are the ones being decided for: int[] argmax = probabilities.ArgMax(dimension: 1); // should be same as 'answers
Additionally, the MultinomialLogisticLearningTMethod class allows multinomial logistic regression models to be learnt using any mathematical optimization algorithm that implements the IFunctionOptimizationMethodTInput, TOutput interface.
// Declare a simple classification/regression // problem with 5 input variables (a,b,c,d,e): double[][] inputs = { new double[] { 1, 4, 2, 0, 1 }, new double[] { 1, 3, 2, 0, 1 }, new double[] { 3, 0, 1, 1, 1 }, new double[] { 3, 0, 1, 0, 1 }, new double[] { 0, 5, 5, 5, 5 }, new double[] { 1, 5, 5, 5, 5 }, new double[] { 1, 0, 0, 0, 0 }, new double[] { 1, 0, 0, 0, 0 }, new double[] { 2, 4, 2, 0, 1 }, new double[] { 2, 4, 2, 0, 1 }, new double[] { 2, 6, 2, 0, 1 }, new double[] { 2, 7, 5, 0, 1 }, }; // Class labels for each of the inputs int[] outputs = { 0, 0, 1, 1, 2, 2, 3, 3, 0, 0, 0, 0 };
Using Conjugate Gradient:
// Create a Conjugate Gradient algorithm to estimate the regression var mcg = new MultinomialLogisticLearning<ConjugateGradient>(); // Now, we can estimate our model using Conjugate Gradient MultinomialLogisticRegression mlr = mcg.Learn(inputs, outputs); // We can compute the model answers int[] answers = mlr.Decide(inputs); // And also the probability of each of the answers double[][] probabilities = mlr.Probabilities(inputs); // Now we can check how good our model is at predicting double error = new ZeroOneLoss(outputs).Loss(answers);
Using Gradient Descent:
// Create a Conjugate Gradient algorithm to estimate the regression var mgd = new MultinomialLogisticLearning<GradientDescent>(); // Now, we can estimate our model using Gradient Descent MultinomialLogisticRegression mlr = mgd.Learn(inputs, outputs); // We can compute the model answers int[] answers = mlr.Decide(inputs); // And also the probability of each of the answers double[][] probabilities = mlr.Probabilities(inputs); // Now we can check how good our model is at predicting double error = new ZeroOneLoss(outputs).Loss(answers);
Using BFGS:
// Create a Conjugate Gradient algorithm to estimate the regression var mlbfgs = new MultinomialLogisticLearning<BroydenFletcherGoldfarbShanno>(); // Now, we can estimate our model using BFGS MultinomialLogisticRegression mlr = mlbfgs.Learn(inputs, outputs); // We can compute the model answers int[] answers = mlr.Decide(inputs); // And also the probability of each of the answers double[][] probabilities = mlr.Probabilities(inputs); // Now we can check how good our model is at predicting double error = new ZeroOneLoss(outputs).Loss(answers);