2017-11-10 31 views
0

クラスタセンターに関連付けられているIDは何ですか。 model.transform(dataset)は予測されたクラスタIDをデータポイントに割り当て、model.clusterCenters.foreach(println)はこれらのクラスタセンターを印刷しますが、クラスタセンターをIDに関連付ける方法はわかりません。 printlnの順序はIDでソートされているように私には思われないSpark 2.0 - クラスタセンターに関連付けられたクラスタIDを取得する方法

|I.D  |cluster center | 
========================== 
|0  |[0.0,...,0.3] | 
|2  |[1.0,...,1.3] | 
|1  |[2.0,...,1.3] | 
|3  |[3.0,...,1.3] | 

import org.apache.spark.ml.clustering.KMeans 

// Loads data. 
val dataset = spark.read.format("libsvm").load("data/mllib/sample_kmeans_data.txt") 

// Trains a k-means model. 
val kmeans = new KMeans().setK(2).setSeed(1L) 
val model = kmeans.fit(dataset) 
val prediction = model.transform(dataset) 

// Shows the result. 
println("Cluster Centers: ") 
model.clusterCenters.foreach(println) 

は理想的には、私のような出力をしたいです。私はそれにtransform()にDFへmodel.clusterCentersを変換しようとしたが、私はあなたがそれをCLUSTER_IDとCluster_centerを書き込みますデータを保存したらArray[org.apache.spark.ml.linalg.Vector]

答えて

1

org.apache.spark.sql.Dataset[_]に変換する方法を見つけ出すことができませんでした。あなたはファイルを読むことができ、希望の出力を見ることができます

model.save(sc, "/user/hadoop/kmeanModel") 
    val parq = sqlContext.read.parquet("/user/hadoop/kmeanModel/data/*") 
    parq.collect.foreach(println) 
+0

非常に簡単です!どうもありがとう! –

+0

@BéatriceMoissinac、私たちは問題に直面し、ソースコードを調べて見つけました。 – Achyuth

関連する問題