2017-12-01 10 views
0

SparkでKMeansクラスタ解析を実行しようとしたのは初めてのことです。愚かな質問をおかけして申し訳ありません。PySparkでKMeansクラスタリングを実行しています

多くの列を持つスパークデータフレームmydataframeがあります。私は、単純な値として、latlong(緯度&経度)の2つの列でkmeansを実行したいとします。私はちょうどそれらの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'

1はKMeans.trainにフィードオブジェクトでなければなりませんか? 明らかに、DataFrameを受け入れません。 分析のためにデータフレームをどのように準備すればよいですか?

ありがとうございました!

答えて

1

メソッドKMeans.trainは、データフレーム(データ)ではなくRDDをimputとして受け取ります。したがって、データをrdd:data.rddに変換するだけで済みます。 お手伝いをしてください。

+0

大変ありがとうございます!また、私はちょうどここで簡単に言及発見:https://spark.apache.org/docs/1.0.1/api/java/org/apache/spark/mllib/clustering/KMeans.html - そう、さらにRDDであるため、RDDもキャッシュされるべきですか? – user3245256

+0

これで十分でしょうか?:data_rdd = data.rdd data_rdd.cache() - 次に:clusters = KMeans.train(data_rdd、7、maxIterations = 15、initializationMode = "random") – user3245256

+0

はい、高速化のため)、あなたの声明で十分です –

関連する問題