Visualizzare i cluster
Hai appena addestrato il modello k-means con un valore ottimale di k (k=16) e generato i centri dei cluster (centroidi). In questo esercizio finale, visualizzerai i cluster e i centroidi sovrapponendoli. Questo ti aiuterà a capire quanto bene ha funzionato il clustering (idealmente, i cluster dovrebbero essere distinti tra loro e i centroidi dovrebbero trovarsi al centro dei rispettivi cluster).
Per farlo, prima convertirai l’RDD rdd_split_int in uno Spark DataFrame, e poi in un DataFrame Pandas utilizzabile per il plotting. In modo analogo, convertirai cluster_centers in un DataFrame Pandas. Una volta creati entrambi i DataFrame, genererai dei grafici a dispersione con Matplotlib.
Nel tuo ambiente di lavoro sono disponibili lo SparkContext sc, le variabili rdd_split_int e cluster_centers, e il pacchetto matplotlib.pyplot (importato come plt).
Questo esercizio fa parte del corso
Fondamenti di Big Data con PySpark
Istruzioni dell'esercizio
- Converte l’RDD
rdd_split_intin uno Spark DataFrame, quindi in un DataFrame pandas. - Crea un DataFrame pandas dalla lista
cluster_centers. - Crea uno scatter plot dal DataFrame pandas dei dati grezzi (
rdd_split_int_df_pandas) e sovrapponilo a uno scatter plot dal DataFrame Pandas dei centroidi (cluster_centers_pandas).
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# 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()