在 mllib kmeans pyspark 中获取集群标签

get cluster labels in mllib kmeans pyspark

在pyspark中使用Spark的mllib如何获取簇标签?在 sklearn 中,这可以通过

轻松完成
kmeans = MiniBatchKMeans(n_clusters=k,random_state=1)
temp=kmeans.fit(data)
cluster_labels=temp.labels_

在 mllib 中,我 运行 kmeans 为:

temp = KMeans.train(data, k, maxIterations=10, runs=10, initializationMode="random")

这个returns一个KmeansModel对象。这个 class 没有任何等同于 sklearn 的 labels_

我不知道如何在 mllib 的 kmeans 中获取标签

只需对训练数据使用预测:

temp.predict(data)

parsedData.map(temp.predict)

这是一个老问题。然而,那是过去,现在是,现在在 pyspark 2.2 中,KMeans 没有训练方法,模型也没有预测方法。 获取标签的正确方法是

kmeans = KMeans().setK(k).setSeed(1)
model = kmeans.fit(data)
prediction = model.transform(data).select('prediction').collect()
labels = [p.prediction for p in prediction ]