K-means 训练
现在 RDD 已可用于训练。在第 2 部分中,您将针对 k 从 13 到 16(为节省计算时间)进行测试,并使用肘部(elbow)法选择合适的 k。肘部法的思路是:对不同的 k 在数据集上运行 K-means 聚类,计算组内平方误差和(Within Set Sum of Squared Error,WSSSE),然后根据 WSSSE 的突降位置(即出现"肘部"的位置)选择最佳 k。接着,您将用最佳 k 重新训练模型,并最终获得质心(聚类中心)。
请注意,您的工作区中已经提供 SparkContext sc 和 rdd_split_int RDD。
本练习是课程的一部分
使用 PySpark 的大数据基础
练习说明
- 使用 13 到 16 个聚类训练 KMeans 模型,并打印每个聚类数对应的 WSSSE。
- 使用最佳的 k 值重新训练 KMeans 模型。
- 获取用最佳 k 训练得到的 KMeans 模型的聚类中心(centroids)。
交互式实操练习
通过完成这段示例代码来试试这个练习。
# 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.____