Cluster visualisieren
Du hast gerade das k-Means-Modell mit dem optimalen k
-Wert (k=16
) trainiert und Clusterzentren (Zentroiden) erstellt. In dieser letzten Übung visualisierst du die Cluster und die Zentren, indem du sie übereinanderlegst. So erkennst du, wie gut das Clustering funktioniert hat. (Im Idealfall sollten sich die Cluster voneinander unterscheiden und die Zentren jeweils in der Mitte der Cluster liegen.)
Zu diesem Zweck konvertierst du den RDD rdd_split_int
zunächst in einen Spark-DataFrame und dann in einen pandas-DataFrame, der für die Erstellung des Diagramms verwendet werden kann. Auf ähnliche Weise konvertierst du cluster_centers
in einen pandas-DataFrame. Sobald die beiden DataFrames erstellt sind, generierst du mit Matplotlib Streudiagramme.
Der SparkContext sc
, die Variablen rdd_split_int
und cluster_centers
sowie das Paket matplotlib.pyplot
(importiert als plt
) sind im Arbeitsbereich verfügbar.
Diese Übung ist Teil des Kurses
Grundlagen von Big Data mit PySpark
Anleitung zur Übung
- Konvertiere den RDD
rdd_split_int
in einen Spark-DataFrame und dann in einen pandas-DataFrame. - Erstelle einen pandas-DataFrame aus der Liste
cluster_centers
. - Erstelle ein Streudiagramm aus dem pandas-DataFrame mit Rohdaten (
rdd_split_int_df_pandas
) und überlagere es mit einem Streudiagramm aus dem pandas-DataFrame mit den Zentroiden (cluster_centers_pandas
).
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
# Convert rdd_split_int RDD into Spark DataFrame and then to Pandas DataFrame
rdd_split_int_df_pandas = spark.____(rdd_split_int, schema=["col1", "col2"]).toPandas()
# Convert cluster_centers to a pandas DataFrame
cluster_centers_pandas = pd.DataFrame(____, columns=["col1", "col2"])
# Create an overlaid scatter plot of clusters and centroids
plt.scatter(rdd_split_int_df_pandas["col1"], rdd_split_int_df_pandas["col2"])
plt.scatter(____["col1"], ____["col2"], color="red", marker="x")
plt.show()