クラスタを可視化する
最適な k 値(k=16)で k-means モデルを学習し、クラスタセンター(セントロイド)を生成しました。最後のこの演習では、クラスタとセントロイドを重ねて可視化します。これによりクラスタリングの出来具合が分かります(理想的には、クラスタ同士は明確に分かれ、セントロイドはそれぞれのクラスタの中心に位置します)。
これを行うために、まず rdd_split_int RDD を Spark DataFrame に変換し、さらにプロットに使える Pandas DataFrame に変換します。同様に、cluster_centers も Pandas DataFrame に変換します。2つの 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()