視覺化叢集
你剛以最佳的 k 值(k=16)訓練了 k-means 模型,並產生了叢集中心(重心)。在最後這個練習中,你會把叢集與重心疊加呈現,來視覺化它們。這能幫助判斷分群效果是否良好(理想情況下,各叢集彼此應該區隔清楚,而重心應位於各自叢集的中心)。
為了達成這個目標,你會先把 rdd_split_int RDD 轉換成 Spark DataFrame,再轉成可用於繪圖的 Pandas DataFrame。類似地,你也會將 cluster_centers 轉成 Pandas DataFrame。當兩個 DataFrame 都準備好後,你將使用 Matplotlib 繪製散佈圖。
工作環境中已提供 SparkContext sc、變數 rdd_split_int 與 cluster_centers,以及套件 matplotlib.pyplot(以 plt 匯入)。
本練習屬於課程
使用 PySpark 的 Big Data 基礎
練習說明
- 將
rdd_split_intRDD 轉換為 Spark DataFrame,接著再轉為 pandas DataFrame。 - 由
cluster_centers清單建立一個 pandas DataFrame。 - 使用原始資料的 pandas DataFrame(
rdd_split_int_df_pandas)建立散佈圖,並將重心的 Pandas DataFrame(cluster_centers_pandas)的散佈圖疊加其上。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
# 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()