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 chi-square test.
| |
ChiSquare(Double, Int32) |
The likelihood ratio test of the overall model, also called the model chi-square 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 class-label decisions for a given set of input vectors.
(Inherited from ClassifierBaseTInput, TClasses.) | |
Decide(TInput) |
Computes a class-label decision for a given input.
(Inherited from MulticlassScoreClassifierBaseTInput.) | |
Decide(TInput, TClasses) |
Computes a class-label decision for a given input.
(Inherited from ClassifierBaseTInput, TClasses.) | |
Decide(TInput, Boolean) |
Computes class-label decisions for the given input.
(Inherited from MulticlassClassifierBaseTInput.) | |
Decide(TInput, Double) |
Computes class-label decisions for the given input.
(Inherited from MulticlassClassifierBaseTInput.) | |
Decide(TInput, Int32) |
Computes class-label decisions for the given input.
(Inherited from MulticlassClassifierBaseTInput.) | |
Decide(TInput, Double) |
Computes a class-label 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 Log-Likelihood for the model.
| |
GetLogLikelihood(Double, Int32) |
Gets the Deviance for the model.
| |
GetLogLikelihoodRatio |
Gets the Log-Likelihood 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 log-likelihood that the given input
vector belongs to its most plausible class.
(Inherited from MulticlassLikelihoodClassifierBaseTInput.) | |
LogLikelihood(TInput) |
Computes the log-likelihood 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
log-likelihood that the input vector belongs to its predicted class.
(Inherited from MulticlassLikelihoodClassifierBaseTInput.) | |
LogLikelihood(TInput, Double) |
Computes the log-likelihood that the given input
vectors belongs to each of the possible classes.
(Inherited from MulticlassLikelihoodClassifierBaseTInput.) | |
LogLikelihood(TInput, Int32) |
Computes the log-likelihood that the given input vector
belongs to the specified classIndex.
(Inherited from MulticlassLikelihoodClassifierBaseTInput.) | |
LogLikelihood(TInput, Int32) |
Computes the log-likelihood 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
log-likelihood that each vector belongs to its predicted class.
(Inherited from MulticlassLikelihoodClassifierBaseTInput.) | |
LogLikelihood(Double, Int32) |
Computes the log-likelihood that the given input vector
belongs to the specified classIndex.
(Overrides MulticlassLikelihoodClassifierBaseTInputLogLikelihood(TInput, Int32).) | |
LogLikelihood(TInput, Int32, Double) |
Computes the log-likelihood that the given input vector
belongs to the specified classIndex.
(Inherited from MulticlassLikelihoodClassifierBaseTInput.) | |
LogLikelihood(TInput, Int32, Double) |
Computes the log-likelihood 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
log-likelihood that each vector belongs to its predicted class.
(Inherited from MulticlassLikelihoodClassifierBaseTInput.) | |
LogLikelihoods(TInput) |
Computes the log-likelihood that the given input
vector belongs to each of the possible classes.
(Inherited from MulticlassLikelihoodClassifierBaseTInput.) | |
LogLikelihoods(TInput) |
Computes the log-likelihood that the given input
vectors belongs to each of the possible classes.
(Inherited from MulticlassLikelihoodClassifierBaseTInput.) | |
LogLikelihoods(TInput, Double) |
Computes the log-likelihood 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
log-likelihoods of the input vector belonging to each possible class.
(Inherited from MulticlassLikelihoodClassifierBaseTInput.) | |
LogLikelihoods(TInput, Double) |
Computes the log-likelihood that the given input
vector belongs to each of the possible classes.
(Inherited from MulticlassLikelihoodClassifierBaseTInput.) | |
LogLikelihoods(TInput, Int32) |
Computes the log-likelihood 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
log-likelihoods 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
log-likelihoods of the input vector belonging to each possible class.
(Inherited from MulticlassLikelihoodClassifierBaseTInput.) | |
LogLikelihoods(TInput, Int32, Double) |
Computes the log-likelihood 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
log-likelihoods 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
log-likelihoods 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 multi-class generative classifier.
(Inherited from MulticlassLikelihoodClassifierBaseTInput.) | |
ToMultilabel |
Views this instance as a multi-label generative classifier,
giving access to more advanced methods, such as the prediction
of one-hot 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.) | |
To(Type) | Overloaded.
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.) | |
ToT | Overloaded.
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 = 1e-6 }; // 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);