SKLearner Home | About | Contact | Examples

Configure LinearDiscriminantAnalysis "tol" Parameter

The tol parameter in scikit-learn’s LinearDiscriminantAnalysis (LDA) controls the threshold for stopping the algorithm’s optimization process.

LDA is a dimensionality reduction and classification technique that projects features onto a lower-dimensional space while maximizing class separability. It’s particularly useful when the classes are assumed to have multivariate Gaussian distributions with equal covariance matrices.

The tol parameter sets the tolerance for the stopping criterion. A smaller value leads to more precise results but may require more iterations to converge, while a larger value might converge faster but potentially with less accurate results.

The default value for tol is 1e-4 (0.0001). In practice, values typically range from 1e-6 to 1e-3, depending on the desired trade-off between precision and computation time.

from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
from sklearn.metrics import accuracy_score

# Generate synthetic dataset
X, y = make_classification(n_samples=1000, n_features=20, n_classes=3,
                           n_informative=10, n_redundant=5,
                           n_clusters_per_class=1, random_state=42)

# Split into train and test sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Train with different tol values
tol_values = [1e-6, 1e-5, 1e-4, 1e-3]
accuracies = []

for tol in tol_values:
    lda = LinearDiscriminantAnalysis(tol=tol)
    lda.fit(X_train, y_train)
    y_pred = lda.predict(X_test)
    accuracy = accuracy_score(y_test, y_pred)
    accuracies.append(accuracy)
    print(f"tol={tol:.1e}, Accuracy: {accuracy:.3f}")

Running the example gives an output like:

tol=1.0e-06, Accuracy: 0.910
tol=1.0e-05, Accuracy: 0.910
tol=1.0e-04, Accuracy: 0.910
tol=1.0e-03, Accuracy: 0.910

The key steps in this example are:

  1. Generate a synthetic multi-class classification dataset
  2. Split the data into train and test sets
  3. Train LinearDiscriminantAnalysis models with different tol values
  4. Evaluate the accuracy of each model on the test set

Some tips and heuristics for setting tol:

Issues to consider:



See Also