Trực quan hóa các cụm
Bạn vừa huấn luyện mô hình k-means với giá trị k tối ưu (k=16) và sinh ra các tâm cụm (centroid). Trong bài tập cuối cùng này, bạn sẽ trực quan hóa các cụm và các centroid bằng cách chồng chúng lên nhau. Điều này sẽ cho thấy việc phân cụm hoạt động tốt đến đâu (lý tưởng là các cụm tách biệt rõ ràng và các centroid nằm ở trung tâm của cụm tương ứng).
Để làm được điều đó, trước tiên bạn sẽ chuyển RDD rdd_split_int thành Spark DataFrame, rồi chuyển tiếp thành Pandas DataFrame để dùng cho việc vẽ. Tương tự, bạn sẽ chuyển cluster_centers thành một Pandas DataFrame. Khi đã có cả hai DataFrame, bạn sẽ tạo các biểu đồ phân tán bằng Matplotlib.
SparkContext sc cũng như các biến rdd_split_int và cluster_centers, cùng gói matplotlib.pyplot (được import là plt) đã có sẵn trong không gian làm việc của bạn.
Bài tập này là một phần của khóa học
Nền tảng Big Data với PySpark
Hướng dẫn bài tập
- Chuyển RDD
rdd_split_intthành một Spark DataFrame, sau đó thành một pandas DataFrame. - Tạo một pandas DataFrame từ danh sách
cluster_centers. - Tạo biểu đồ phân tán từ pandas DataFrame của dữ liệu gốc (
rdd_split_int_df_pandas) và chồng lên đó biểu đồ phân tán từ Pandas DataFrame của các centroid (cluster_centers_pandas).
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
# 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()