public class LDA extends java.lang.Object implements SoftClassifier<double[]>, java.io.Serializable
LDA is closely related to ANOVA (analysis of variance) and linear regression analysis, which also attempt to express one dependent variable as a linear combination of other features or measurements. In the other two methods, however, the dependent variable is a numerical quantity, while for LDA it is a categorical variable (i.e. the class label). Logistic regression and probit regression are more similar to LDA, as they also explain a categorical variable. These other methods are preferable in applications where it is not reasonable to assume that the independent variables are normally distributed, which is a fundamental assumption of the LDA method.
One complication in applying LDA (and Fisher's discriminant) to real data occurs when the number of variables/features does not exceed the number of samples. In this case, the covariance estimates do not have full rank, and so cannot be inverted. This is known as small sample size problem.
FLD
,
QDA
,
RDA
,
NaiveBayes
,
Serialized FormModifier and Type  Class and Description 

static class 
LDA.Trainer
Trainer for linear discriminant analysis.

Constructor and Description 

LDA(double[][] x,
int[] y)
Constructor.

LDA(double[][] x,
int[] y,
double tol)
Constructor.

LDA(double[][] x,
int[] y,
double[] priori)
Constructor.

LDA(double[][] x,
int[] y,
double[] priori,
double tol)
Constructor.

Modifier and Type  Method and Description 

double[] 
getPriori()
Returns a priori probabilities.

int 
predict(double[] x)
Predicts the class label of an instance.

int 
predict(double[] x,
double[] posteriori)
Predicts the class label of an instance and also calculate a posteriori
probabilities.

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
predict
public LDA(double[][] x, int[] y)
x
 training samples.y
 training labels in [0, k), where k is the number of classes.public LDA(double[][] x, int[] y, double[] priori)
x
 training samples.y
 training labels in [0, k), where k is the number of classes.priori
 the priori probability of each class.public LDA(double[][] x, int[] y, double tol)
x
 training samples.y
 training labels in [0, k), where k is the number of classes.tol
 a tolerance to decide if a covariance matrix is singular; it
will reject variables whose variance is less than tol^{2}.public LDA(double[][] x, int[] y, double[] priori, double tol)
x
 training samples.y
 training labels in [0, k), where k is the number of classes.priori
 the priori probability of each class. If null, it will be
estimated from the training data.tol
 a tolerance to decide if a covariance matrix is singular; it
will reject variables whose variance is less than tol^{2}.public double[] getPriori()
public int predict(double[] x)
Classifier
predict
in interface Classifier<double[]>
x
 the instance to be classified.public int predict(double[] x, double[] posteriori)
SoftClassifier
predict
in interface SoftClassifier<double[]>
x
 the instance to be classified.posteriori
 the array to store a posteriori probabilities on output.