始める無料で始める

クラスタを可視化する

最適な k 値(k=16)で k-means モデルを学習し、クラスタセンター(セントロイド)を生成しました。最後のこの演習では、クラスタとセントロイドを重ねて可視化します。これによりクラスタリングの出来具合が分かります(理想的には、クラスタ同士は明確に分かれ、セントロイドはそれぞれのクラスタの中心に位置します)。

これを行うために、まず rdd_split_int RDD を Spark DataFrame に変換し、さらにプロットに使える Pandas DataFrame に変換します。同様に、cluster_centers も Pandas DataFrame に変換します。2つの DataFrame が用意できたら、Matplotlib を使って散布図を作成します。

SparkContext sc、変数 rdd_split_intcluster_centers、およびパッケージ matplotlib.pyplotplt としてインポート済み)はワークスペースで利用できます。

この演習はコースの一部です

PySparkで学ぶBig Data入門

コースを見る

演習の手順

  • rdd_split_int RDD を 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()
コードを編集して実行