3

当我在pyspark中使用Spark的mllib时,如何获取集群标签?在sklearn,这可以很容易地通过在mllib kmeans中获取集群标签pyspark

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

在mllib做,我跑k均值为:

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

这会返回一个KmeansModel对象。这个类没有任何相等于sklearn的labels_

我摸不清到如何让标签在mllib的k均值

回答

3

只需使用预测训练数据:

temp.predict(data) 

parsedData.map(temp.predict) 
1

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

您指的是最新的星火ML(根据数据帧API),而问题是关于老MLlib,仍可作为基于RDD-API。 – desertnaut

+0

是的,你是对的。这只是我在寻找一种获取标签的方法,只能找到这篇文章,这并没有什么帮助,因为我正在使用基于数据框架的API,计算出来并决定与世界分享。而且我不想创建另一个可能被冠以“重复”的问题,所以我把它放在这里。 –