运行 PySpark 中的 KMeans 聚类

Running KMeans clustering in PySpark

这是我第一次尝试 运行 在 Spark 中进行 KMeans 聚类分析,所以,我很抱歉提出了一个愚蠢的问题。

我有一个包含许多列的 spark 数据框 mydataframe。我只想在两列上 运行 kmeans:latlong(纬度和经度),将它们用作简单值。我想仅基于这 2 列提取 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")

但是我收到一个错误:

'DataFrame' object has no attribute 'map'

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

非常感谢!

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