Einführung
In diesem Lab lernst du, wie du die scikit-learn-Bibliothek in Python verwendest, um robuste Kovarianzmatrizen zu schätzen. Der Tutorial wird dir das Konzept der robusten Kovarianzschätzung vorstellen und demonstrieren, wie es verwendet werden kann, um die Kovarianzmatrix von Datensätzen zu schätzen, die mit Ausreißern kontaminiert sind.
Tipps für die VM
Nachdem der VM-Start abgeschlossen ist, klicke in der oberen linken Ecke, um zur Registerkarte Notebook zu wechseln und Jupyter Notebook für die Übung zu nutzen.
Manchmal musst du einige Sekunden warten, bis Jupyter Notebook vollständig geladen ist. Die Validierung von Vorgängen kann aufgrund von Einschränkungen in Jupyter Notebook nicht automatisiert werden.
Wenn du bei der Lernphase Probleme hast, kannst du Labby gerne fragen. Gib nach der Sitzung Feedback, und wir werden das Problem für dich prompt beheben.
Bibliotheken importieren
Der erste Schritt besteht darin, die erforderlichen Bibliotheken zu importieren. In diesem Tutorial werden wir NumPy, Matplotlib und scikit-learn verwenden.
import numpy as np
import matplotlib.pyplot as plt
from sklearn.covariance import MinCovDet, EmpiricalCovariance
Daten generieren
In diesem Schritt generieren wir einen zufälligen Datensatz mit n_samples Proben und n_features Merkmalen. Wir fügen auch einige Ausreißer dem Datensatz hinzu.
n_samples = 80
n_features = 5
## Generiere zufälligen Datensatz
rng = np.random.RandomState(42)
X = rng.randn(n_samples, n_features)
## Füge Ausreißer zum Datensatz hinzu
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
Schätze robuste Kovarianzmatrix
In diesem Schritt schätzen wir eine robuste Kovarianzmatrix des Datensatzes mithilfe des Minimum Covariance Determinant (MCD)-Schätzers.
## Schätze eine robuste Kovarianzmatrix des Datensatzes
mcd = MinCovDet().fit(X)
robust_cov = mcd.covariance_
Schätze empirische Kovarianzmatrix
In diesem Schritt schätzen wir eine empirische Kovarianzmatrix des Datensatzes mithilfe des Maximum Likelihood Estimate (MLE)-Schätzers.
## Schätze eine empirische Kovarianzmatrix des Datensatzes
emp_cov = EmpiricalCovariance().fit(X).covariance_
Vergleiche Kovarianzmatrizen
In diesem Schritt vergleichen wir die geschätzten robusten und empirischen Kovarianzmatrizen des Datensatzes.
## Vergleiche die geschätzten Kovarianzmatrizen
print("Robuste Kovarianzmatrix:")
print(robust_cov)
print("\nEmpirische Kovarianzmatrix:")
print(emp_cov)
Visualisiere die Ergebnisse
In diesem Schritt visualisieren wir die Ergebnisse der robusten und empirischen Kovarianzschätzung.
## Visualisiere die Ergebnisse
fig, ax = plt.subplots()
## Zeichne den Datensatz
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="Inlier"
)
ax.scatter(X[outliers_index, 0], X[outliers_index, 1], color="red", label="Ausreißer")
## Zeichne die geschätzten Kovarianzmatrizen
for covariance, color, label in zip(
[emp_cov, robust_cov], ["grün", "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)
## Setze die Plotoptionen
plt.legend()
plt.title("Robuste Kovarianzschätzung")
plt.show()
Zusammenfassung
In diesem Tutorial haben Sie gelernt, wie Sie die scikit-learn-Bibliothek in Python verwenden, um robuste Kovarianzmatrizen zu schätzen. Sie haben auch gelernt, wie Sie den Minimum Covariance Determinant (MCD)-Schätzer verwenden, um die Kovarianzmatrix von Datensätzen zu schätzen, die mit Ausreißern kontaminiert sind.