Label Propagation Lernen

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 werden wir lernen, wie man LabelPropagation verwendet, um die Labels unbekannter Proben aus markierten Proben zu lernen. Wir werden einen Datensatz generieren, der zwei konzentrische Kreise enthält, und jedem Sample ein Label zuweisen. Anschließend werden wir LabelPropagation verwenden, um die Labels der unbekannten Proben zu lernen.

VM-Tipps

Nachdem die VM gestartet ist, klicken Sie in der oberen linken Ecke, um zur Registerkarte Notebook zu wechseln und Jupyter Notebook für die Übung zu nutzen.

Manchmal müssen Sie einige Sekunden warten, bis Jupyter Notebook vollständig geladen ist. Die Validierung von Operationen kann aufgrund von Einschränkungen in Jupyter Notebook nicht automatisiert werden.

Wenn Sie während des Lernens Probleme haben, können Sie Labby gerne fragen. Geben Sie nach der Sitzung Feedback, und wir werden das Problem für Sie prompt beheben.

Importieren der erforderlichen Bibliotheken

Wir beginnen mit dem Importieren der erforderlichen Bibliotheken für dieses Lab.

import numpy as np
from sklearn.datasets import make_circles
import matplotlib.pyplot as plt
from sklearn.semi_supervised import LabelSpreading

Datensatz generieren

Als nächstes generieren wir einen Datensatz, der zwei konzentrische Kreise enthält, mithilfe von make_circles. Wir weisen den Datensatz Labels zu, sodass alle Samples unbekannt sind, außer zwei Samples, die jeweils dem äußeren und inneren Kreis angehören.

n_samples = 200
X, y = make_circles(n_samples=n_samples, shuffle=False)
outer, inner = 0, 1
labels = np.full(n_samples, -1.0)
labels[0] = outer
labels[-1] = inner

Rohe Daten plotten

Wir plotten die rohen Daten, um die Kreise und Labels zu visualisieren.

plt.figure(figsize=(4, 4))
plt.scatter(
    X[labels == outer, 0],
    X[labels == outer, 1],
    color="navy",
    marker="s",
    lw=0,
    label="outer labeled",
    s=10,
)
plt.scatter(
    X[labels == inner, 0],
    X[labels == inner, 1],
    color="c",
    marker="s",
    lw=0,
    label="inner labeled",
    s=10,
)
plt.scatter(
    X[labels == -1, 0],
    X[labels == -1, 1],
    color="darkorange",
    marker=".",
    label="unlabeled",
)
plt.legend(scatterpoints=1, shadow=False, loc="center")
_ = plt.title("Raw data (2 classes=outer and inner)")

Labels mit LabelPropagation lernen

Wir verwenden LabelSpreading, um die Labels der unbekannten Proben zu lernen.

label_spread = LabelSpreading(kernel="knn", alpha=0.8)
label_spread.fit(X, labels)

Gelernt Labels plotten

Schließlich plotten wir die gelernten Labels, um die Genauigkeit von LabelPropagation zu visualisieren.

output_labels = label_spread.transduction_
output_label_array = np.asarray(output_labels)
outer_numbers = np.where(output_label_array == outer)[0]
inner_numbers = np.where(output_label_array == inner)[0]

plt.figure(figsize=(4, 4))
plt.scatter(
    X[outer_numbers, 0],
    X[outer_numbers, 1],
    color="navy",
    marker="s",
    lw=0,
    s=10,
    label="outer learned",
)
plt.scatter(
    X[inner_numbers, 0],
    X[inner_numbers, 1],
    color="c",
    marker="s",
    lw=0,
    s=10,
    label="inner learned",
)
plt.legend(scatterpoints=1, shadow=False, loc="center")
plt.title("Labels learned with Label Spreading (KNN)")
plt.show()

Zusammenfassung

In diesem Lab haben wir gelernt, wie man LabelPropagation verwendet, um die Labels unbekannter Proben aus markierten Proben zu lernen. Wir haben einen Datensatz erzeugt, der zwei konzentrische Kreise enthält, und jedem Sample Labels zugewiesen. Anschließend haben wir LabelPropagation verwendet, um die Labels der unbekannten Proben zu lernen und die Genauigkeit der gelernten Labels visualisiert.