Introduction
Dans ce laboratoire, vous allez apprendre à utiliser la bibliothèque scikit-learn en Python pour estimer des matrices de covariance robustes. Le tutoriel vous présentera le concept d'estimation de covariance robuste et démontrera comment il peut être utilisé pour estimer la matrice de covariance de jeux de données contaminés par des valeurs aberrantes.
Conseils sur la machine virtuelle
Une fois le démarrage de la machine virtuelle terminé, cliquez dans le coin supérieur gauche pour basculer vers l'onglet Notebook pour accéder à Jupyter Notebook pour la pratique.
Parfois, vous devrez peut-être attendre quelques secondes pour que Jupyter Notebook ait fini de charger. La validation des opérations ne peut pas être automatisée en raison des limitations de Jupyter Notebook.
Si vous rencontrez des problèmes pendant l'apprentissage, n'hésitez pas à demander à Labby. Donnez votre feedback après la session, et nous résoudrons rapidement le problème pour vous.
Importation des bibliothèques
La première étape consiste à importer les bibliothèques requises. Dans ce tutoriel, nous utiliserons NumPy, Matplotlib et scikit-learn.
import numpy as np
import matplotlib.pyplot as plt
from sklearn.covariance import MinCovDet, EmpiricalCovariance
Générer des données
Dans cette étape, nous générons un ensemble de données aléatoires avec n_samples échantillons et n_features caractéristiques. Nous ajoutons également quelques valeurs aberrantes à l'ensemble de données.
n_samples = 80
n_features = 5
## Générer un ensemble de données aléatoire
rng = np.random.RandomState(42)
X = rng.randn(n_samples, n_features)
## Ajouter des valeurs aberrantes à l'ensemble de données
n_outliers = 20
outliers_index = rng.permutation(n_samples)[:n_outliers]
outliers_offset = 10.0 * (
np.random.randint(2, size=(n_outliers, n_features)) - 0.5
)
X[outliers_index] += outliers_offset
Estimer la matrice de covariance robuste
Dans cette étape, nous estimons une matrice de covariance robuste de l'ensemble de données en utilisant l'estimateur Minimum Covariance Determinant (MCD).
## Estimate a robust covariance matrix of the dataset
mcd = MinCovDet().fit(X)
robust_cov = mcd.covariance_
Estimer la matrice de covariance empirique
Dans cette étape, nous estimons une matrice de covariance empirique de l'ensemble de données en utilisant l'estimateur Maximum Likelihood Estimate (MLE).
## Estimate an empirical covariance matrix of the dataset
emp_cov = EmpiricalCovariance().fit(X).covariance_
Comparer les matrices de covariance
Dans cette étape, nous comparons les matrices de covariance robuste et empirique estimées de l'ensemble de données.
## Compare the estimated covariance matrices
print("Robust Covariance Matrix:")
print(robust_cov)
print("\nEmpirical Covariance Matrix:")
print(emp_cov)
Visualiser les résultats
Dans cette étape, nous visualisons les résultats de l'estimation de la covariance robuste et empirique.
## Visualize the results
fig, ax = plt.subplots()
## Plot the dataset
inliers_index = np.arange(n_samples)[~np.in1d(np.arange(n_samples), outliers_index)]
ax.scatter(
X[inliers_index, 0], X[inliers_index, 1], color="black", label="Inliers"
)
ax.scatter(X[outliers_index, 0], X[outliers_index, 1], color="red", label="Outliers")
## Plot the estimated covariance matrices
for covariance, color, label in zip(
[emp_cov, robust_cov], ["green", "magenta"], ["MLE", "MCD"]
):
v, w = np.linalg.eigh(covariance)
u = w[0] / np.linalg.norm(w[0])
angle = np.arctan2(u[1], u[0])
angle = 180 * angle / np.pi
v = 2.0 * np.sqrt(2.0) * np.sqrt(v)
ell = mpl.patches.Ellipse(
mcd.location_,
v[0],
v[1],
180 + angle,
color=color,
label=label,
alpha=0.2,
)
ell.set_clip_box(ax.bbox)
ell.set_facecolor(color)
ax.add_artist(ell)
## Set plot options
plt.legend()
plt.title("Robust Covariance Estimation")
plt.show()
Sommaire
Dans ce tutoriel, vous avez appris à utiliser la bibliothèque scikit - learn en Python pour estimer des matrices de covariance robustes. Vous avez également appris à utiliser l'estimateur Minimum Covariance Determinant (MCD) pour estimer la matrice de covariance d'ensembles de données contaminés par des valeurs aberrantes.