K-means の学習
RDD の学習準備ができたので、この第2部では計算時間を節約するために k を 13 から 16 まで試し、elbow 法で適切な k を選びます。elbow 法の考え方は、異なる k の値で K-means クラスタリングを実行し、Within Set Sum of Squared Error(WSSSE)を計算して、WSSSE が急に減少する、つまり「肘」が現れる地点に基づいて最適な k を選ぶことです。次に、その最適な k でモデルを再学習し、最後にセントロイド(クラスタ中心)を取得します。
作業スペースには、SparkContext sc と rdd_split_int RDD がすでに用意されています。
この演習はコースの一部です
PySparkで学ぶBig Data入門
演習の手順
- k を 13 から 16 として KMeans モデルを学習し、各クラスタの WSSSE を出力します。
- 最適な k で KMeans モデルを再学習します。
- 最適な k で学習した KMeans モデルのクラスタ中心(セントロイド)を取得します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Train the model with clusters from 13 to 16 and compute WSSSE
for clst in range(13, 17):
model = KMeans.____(rdd_split_int, clst, seed=1)
WSSSE = rdd_split_int.____(lambda point: error(point)).reduce(lambda x, y: x + y)
print("The cluster {} has Within Set Sum of Squared Error {}".format(clst, ____))
# Train the model again with the best k
model = KMeans.train(rdd_split_int, k=____, seed=1)
# Get cluster centers
cluster_centers = model.____