Implementation:Scikit learn Scikit learn MinCovDet
| Knowledge Sources | |
|---|---|
| Domains | Machine Learning, Covariance Estimation |
| Last Updated | 2026-02-08 15:00 GMT |
Overview
Concrete tool for robust covariance estimation using the Minimum Covariance Determinant method provided by scikit-learn.
Description
This module implements the MinCovDet (Minimum Covariance Determinant) estimator, a robust covariance estimator resistant to outliers. It implements the Fast-MCD algorithm by Rousseeuw and Van Driessen, which finds the subset of observations (of size h) whose covariance matrix has the smallest determinant. The module also provides the c_step helper function implementing the concentration step procedure. MinCovDet extends EmpiricalCovariance and provides robust location and scatter estimates.
Usage
Use MinCovDet when your data may contain outliers and you need a covariance estimate that is not influenced by contaminated observations, such as in robust Mahalanobis distance calculations or outlier detection.
Code Reference
Source Location
- Repository: scikit-learn
- File: sklearn/covariance/_robust_covariance.py
Signature
class MinCovDet(EmpiricalCovariance):
"""Minimum Covariance Determinant (MCD): robust estimator of covariance."""
def __init__(
self,
*,
store_precision=True,
assume_centered=False,
support_fraction=None,
random_state=None,
):
...
def c_step(
X,
n_support,
remaining_iterations=30,
initial_estimates=None,
verbose=False,
cov_computation_method=empirical_covariance,
random_state=None,
):
...
Import
from sklearn.covariance import MinCovDet
I/O Contract
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
| X | array-like of shape (n_samples, n_features) | Yes | Training data for robust covariance estimation |
| store_precision | bool | No | Whether to store the precision matrix (default: True) |
| assume_centered | bool | No | Whether data is centered (default: False) |
| support_fraction | float or None | No | Fraction of data used for MCD; None for automatic (default: None) |
| random_state | int or None | No | Random state for reproducibility (default: None) |
Outputs
| Name | Type | Description |
|---|---|---|
| covariance_ | ndarray of shape (n_features, n_features) | Robust estimated covariance matrix |
| location_ | ndarray of shape (n_features,) | Robust estimated location (mean) |
| precision_ | ndarray of shape (n_features, n_features) | Robust estimated precision matrix |
| support_ | ndarray of shape (n_samples,) | Boolean mask of inlier observations |
| dist_ | ndarray of shape (n_samples,) | Mahalanobis distances of training samples |
Usage Examples
Basic Usage
import numpy as np
from sklearn.covariance import MinCovDet
# Generate data with outliers
rng = np.random.RandomState(42)
X = rng.randn(100, 2)
X[:10] = rng.uniform(low=5, high=10, size=(10, 2)) # outliers
# Fit robust covariance
mcd = MinCovDet(random_state=42).fit(X)
print("Robust location:", mcd.location_)
print("Inlier fraction:", mcd.support_.mean())