Python 在mllib kmeans pyspark中获取群集标签

Python 在mllib kmeans pyspark中获取群集标签,python,apache-spark,scikit-learn,pyspark,apache-spark-mllib,Python,Apache Spark,Scikit Learn,Pyspark,Apache Spark Mllib,在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=

在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")
这将返回一个
KmeansModel
对象。该类没有任何与sklearn的
标签\uuu


我不知道如何在mllib的kmeans中获得标签,只需在训练数据上使用predict:

temp.predict(data)


这是一个老问题。然而,那是当时,这是现在,现在在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 ]

您指的是最新的Spark ML(基于数据帧的API),而问题是关于旧的MLlib,仍然可以作为基于RDD的API使用。是的,您是正确的。只是我在寻找一种获取标签的方法,却发现了这篇文章,这篇文章毫无帮助,因为我使用的是基于数据帧的API,找到了它,并决定与全世界分享。我不想再提出另一个被称为“重复”的问题,所以我把它放在这里。
kmeans = KMeans().setK(k).setSeed(1)
model = kmeans.fit(data)
prediction = model.transform(data).select('prediction').collect()
labels = [p.prediction for p in prediction ]