在PySpark中运行KMeans集群

时间:2017-12-01 01:14:22

标签: pyspark k-means apache-spark-mllib

这是我第一次尝试在Spark中运行KMeans集群分析,所以,我很抱歉这是一个愚蠢的问题。

我有一个包含许多列的spark数据帧mydataframe。我想只在两列上运行kmeans:latlong(纬度和经度),将它们用作简单值。我想基于这两列提取7个集群。我试过了:

from numpy import array
from math import sqrt
from pyspark.mllib.clustering import KMeans, KMeansModel

# Prepare a data frame with just 2 columns:
data = mydataframe.select('lat', 'long')

# Build the model (cluster the data)
clusters = KMeans.train(data, 7, maxIterations=15, initializationMode="random")

但是我收到了一个错误:

  

'数据帧'对象没有属性' map'

KMeans.train提供的对象应该是什么? 显然,它不接受DataFrame。 我应该如何准备我的数据框进行分析?

非常感谢!

1 个答案:

答案 0 :(得分:2)

方法KMeans.train将RDD作为输入,而不是数据帧(数据)。因此,您只需将数据转换为rdd:data.rdd即可。 希望它有所帮助。