当我在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的labels_
我无法弄清楚如何在mllib的kmeans中获得标签
答案 0 :(得分:5)
这是一个老问题。然而,就在那时,现在是,现在在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 ]
答案 1 :(得分:4)
只需对训练数据使用预测:
temp.predict(data)
或
parsedData.map(temp.predict)