Robuste Kovarianzschätzung in Python

Machine LearningMachine LearningBeginner
Jetzt üben

This tutorial is from open-source community. Access the source code

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

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.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL sklearn(("Sklearn")) -.-> sklearn/AdvancedDataAnalysisandDimensionalityReductionGroup(["Advanced Data Analysis and Dimensionality Reduction"]) ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) sklearn/AdvancedDataAnalysisandDimensionalityReductionGroup -.-> sklearn/covariance("Covariance Estimators") ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills sklearn/covariance -.-> lab-49272{{"Robuste Kovarianzschätzung in Python"}} ml/sklearn -.-> lab-49272{{"Robuste Kovarianzschätzung in Python"}} end

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.