Візуалізація кластерів
Ви щойно натренували модель k-means з оптимальним значенням k (k=16) і отримали центри кластерів (центроїди). У цій фінальній вправі ви візуалізуєте кластери та центроїди, наклавши їх один на одного. Це покаже, наскільки вдало спрацювало кластеризування (ідеально, якщо кластери чітко відрізняються між собою, а центроїди розташовані в центрі відповідних кластерів).
Щоб це зробити, спочатку перетворіть RDD rdd_split_int на Spark DataFrame, а потім на pandas DataFrame, який можна використати для побудови графіків. Так само перетворіть cluster_centers на pandas DataFrame. Коли обидва DataFrame буде створено, побудуйте діаграми розсіювання за допомогою Matplotlib.
У вашому робочому середовищі доступні SparkContext sc, змінні rdd_split_int і cluster_centers, а також пакет matplotlib.pyplot (імпортований як plt).
Ця вправа є частиною курсу
Основи Big Data з PySpark
Інструкції до вправи
- Перетворіть RDD
rdd_split_intна Spark DataFrame, а потім на pandas DataFrame. - Створіть pandas DataFrame зі списку
cluster_centers. - Побудуйте діаграму розсіювання з 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()