我正在使用Spark对600万条记录进行Kmeans集群,我使用了以下代码来获取Kmeans:
val model = KMeans.train(parsedData, 3, 8)
我将集群中心编号设置为3。使用下面的代码,我可以通过以下代码获得3个集群中心:
model.clusterCenters.foreach{println}
我的问题是,如何才能得到真实的组数据,我认为星火应该输出600万个真实数据与3个组。
的进一步问题请:上面的任务对文本文档进行聚类。所以我把文本文档转移到浮动向量。火花只输出浮点矢量,但我想直接得到原始文本文档,请问有什么想法吗?例如:我的文件如下:
doc1: {the book is good}
doc2: {the weather is sunny}
doc3: {rain is coming}
我将上面的文本文件传输到浮动向量,如下所示,用于向Spark提供信息:
doc1:{0.2,0.3,0.5,1.5,0.0,0.0,0.0,0.0}
doc1:{0.2,0.0,0.5,0.0,0.8,0.0,0.0,0.0}
doc1:{0.0,0.3,0.0,0.0,0.8,0.0,0.0,0.9}
因此,我希望Spark能够直接输出集群原始文本文档,而不是浮动向量。
发布于 2016-07-06 23:04:32
只有map
和predict
parsedData.map(p => (model.predict(p), p))
要获得原始文档,您可以尝试zip
方法,只要数据没有被重新排序(洗牌),否则:
model.predict(parsedData).zip(rawDocuments)
https://stackoverflow.com/questions/38234917
复制相似问题