Reduktion von Swiss Roll und Swiss-Hole

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 zwei beliebte nichtlineare Dimensionalitätstechniken, Locally Linear Embedding (LLE) und T-distributed Stochastic Neighbor Embedding (t-SNE), auf dem klassischen Swiss Roll-Datensatz verglichen. Wir werden untersuchen, wie beide mit der Hinzufügung eines Lochs im Datensatz umgehen.

VM-Tipps

Nachdem der VM-Start abgeschlossen ist, klicken Sie in der oberen linken Ecke, um zur Registerkarte Notebook zu wechseln und Jupyter Notebook für die Übung zu öffnen.

Manchmal müssen Sie 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 Sie bei der Lernphase Probleme haben, können Sie Labby gerne fragen. Geben Sie nach der Sitzung Feedback, und wir werden das Problem für Sie prompt beheben.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL sklearn(("Sklearn")) -.-> sklearn/UtilitiesandDatasetsGroup(["Utilities and Datasets"]) ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) sklearn/UtilitiesandDatasetsGroup -.-> sklearn/datasets("Datasets") ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills sklearn/datasets -.-> lab-49313{{"Reduktion von Swiss Roll und Swiss-Hole"}} ml/sklearn -.-> lab-49313{{"Reduktion von Swiss Roll und Swiss-Hole"}} end

Swiss Roll-Datensatz generieren

Wir beginnen mit der Generierung des Swiss Roll-Datensatzes mithilfe der Funktion make_swiss_roll() aus sklearn.datasets. Diese Funktion erzeugt einen 3D-Datensatz mit einer spiralförmigen Gestalt.

import matplotlib.pyplot as plt
from sklearn import manifold, datasets

sr_points, sr_color = datasets.make_swiss_roll(n_samples=1500, random_state=0)

Visualisierung des Swiss Roll-Datensatzes

Wir können den generierten Swiss Roll-Datensatz mithilfe eines 3D-Streuplots visualisieren, wobei verschiedene Farben verschiedene Punkte repräsentieren.

fig = plt.figure(figsize=(8, 6))
ax = fig.add_subplot(111, projection="3d")
fig.add_axes(ax)
ax.scatter(sr_points[:, 0], sr_points[:, 1], sr_points[:, 2], c=sr_color, s=50, alpha=0.8)
ax.set_title("Swiss Roll in Ambient Space")
ax.view_init(azim=-66, elev=12)
_ = ax.text2D(0.8, 0.05, s="n_samples=1500", transform=ax.transAxes)

Berechnung von LLE- und t-SNE-Embeddings für den Swiss Roll-Datensatz

Wir berechnen die LLE- und t-SNE-Embeddings des Swiss Roll-Datensatzes mithilfe der Funktionen manifold.locally_linear_embedding() und manifold.TSNE() aus sklearn respective.

sr_lle, sr_err = manifold.locally_linear_embedding(sr_points, n_neighbors=12, n_components=2)

sr_tsne = manifold.TSNE(n_components=2, perplexity=40, random_state=0).fit_transform(sr_points)

Visualisierung von LLE- und t-SNE-Embeddings für den Swiss Roll-Datensatz

Wir können die LLE- und t-SNE-Embeddings des Swiss Roll-Datensatzes mithilfe von Streuplots visualisieren, wobei verschiedene Farben verschiedene Punkte repräsentieren.

fig, axs = plt.subplots(figsize=(8, 8), nrows=2)
axs[0].scatter(sr_lle[:, 0], sr_lle[:, 1], c=sr_color)
axs[0].set_title("LLE Embedding of Swiss Roll")
axs[1].scatter(sr_tsne[:, 0], sr_tsne[:, 1], c=sr_color)
_ = axs[1].set_title("t-SNE Embedding of Swiss Roll")

Swiss-Hole-Datensatz generieren

Wir generieren den Swiss-Hole-Datensatz, indem wir einem Swiss Roll-Datensatz ein Loch hinzufügen, indem wir das Parameter hole=True in der Funktion make_swiss_roll() verwenden.

sh_points, sh_color = datasets.make_swiss_roll(n_samples=1500, hole=True, random_state=0)

Visualisierung des Swiss-Hole-Datensatzes

Wir können den generierten Swiss-Hole-Datensatz mithilfe eines 3D-Streuplots visualisieren, wobei verschiedene Farben verschiedene Punkte repräsentieren.

fig = plt.figure(figsize=(8, 6))
ax = fig.add_subplot(111, projection="3d")
fig.add_axes(ax)
ax.scatter(sh_points[:, 0], sh_points[:, 1], sh_points[:, 2], c=sh_color, s=50, alpha=0.8)
ax.set_title("Swiss-Hole in Ambient Space")
ax.view_init(azim=-66, elev=12)
_ = ax.text2D(0.8, 0.05, s="n_samples=1500", transform=ax.transAxes)

Berechnung von LLE- und t-SNE-Embeddings für den Swiss-Hole-Datensatz

Wir berechnen die LLE- und t-SNE-Embeddings des Swiss-Hole-Datensatzes mithilfe der Funktionen manifold.locally_linear_embedding() und manifold.TSNE() aus sklearn respective.

sh_lle, sh_err = manifold.locally_linear_embedding(sh_points, n_neighbors=12, n_components=2)

sh_tsne = manifold.TSNE(n_components=2, perplexity=40, init="random", random_state=0).fit_transform(sh_points)

Visualisierung von LLE- und t-SNE-Embeddings für den Swiss-Hole-Datensatz

Wir können die LLE- und t-SNE-Embeddings des Swiss-Hole-Datensatzes mithilfe von Streuplots visualisieren, wobei verschiedene Farben verschiedene Punkte repräsentieren.

fig, axs = plt.subplots(figsize=(8, 8), nrows=2)
axs[0].scatter(sh_lle[:, 0], sh_lle[:, 1], c=sh_color)
axs[0].set_title("LLE Embedding of Swiss-Hole")
axs[1].scatter(sh_tsne[:, 0], sh_tsne[:, 1], c=sh_color)
_ = axs[1].set_title("t-SNE Embedding of Swiss-Hole")

Zusammenfassung

In diesem Lab wurden die LLE- und t-SNE-Embeddings des klassischen Swiss Roll-Datensatzes und des Swiss-Hole-Datensatzes verglichen. Wir haben die Datensätze und deren Embeddings mithilfe von Streuplots visualisiert. Wir haben festgestellt, dass LLE die Swiss Roll- und Swiss-Hole-Datensätze effektiv aufrollen konnte, während t-SNE die allgemeine Struktur der Daten bewahrte, aber dazu neigte, Abschnitte von Punkten zusammenzuklumpen.