2017-01-04 2 views
1

Я пытаюсь реализовать кластеризацию k, используя версию apache spark ml версии 2.0.2. После нахождения центра кластера, сталкивайтесь с проблемой в том, как идентификация данных принадлежит той точке кластера. Пожалуйста, помогите мне .. Спасибо заранее. Вы можете найти свой код:K означает кластеризацию библиотеки ml с использованием apache spark

вал tokenFrameprocess = TokenizerProcessor.process («значение», «лексема»)

val stopwordRemover = StopWordsProcessor.process("tokenized", "stopwords") 

val stemmingProcess = StemmingProcessor.process("value", "stemmed") 

val HashingProcess = HashingTFProcessor.process("stopwords" ,"features") 




val pipeline = new Pipeline().setStages(Array(tokenFrameprocess,stopwordRemover,stemmingProcess,HashingProcess)) 


val finalFrameProcess = pipeline.fit(df) 

val finalFramedata = finalFrameProcess.transform(df); 




val kmeans = new KMeans().setK(4).setSeed(1L) 

val model = kmeans.fit(finalFramedata) 




val WSSSE = model.computeCost(finalFramedata) 

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

model.clusterCenters.foreach(println) 

ответ

1

Вы должны установить колонки функции, которая будет использоваться для прогнозирования на то время инстанцирования Kmeans как следующий пример:

val kmeans = new KMeans().setK(4).setSeed(1L).setFeaturesCol("features").setPredictionCol("prediction") 

После того, как вы называете .Поставить() на kmeans, он возвращает Transformer. В случае вашего примера переменная «модель» является трансформатором. Вы можете вызвать .transform() Чтобы получить желаемый прогноз по данным данным. Например, ниже строки дадут вам фреймворк данных с столбцом прогнозирования.

val model = kmeans.fit(finalFramedata) 
val transformedDF = model.transform(finalFramedata) 
transformedDF.show(false) 

Прогнозная колонка обозначает точки кластеров. Если вы дадите значение k как 3, а столбец прогноза будет иметь значения, равные 0,1,2.

+0

@rathika Ответ на ваш вопрос "Столбец прогнозирования обозначает точку кластеров? Я даю значение k как 3, а столбец прогноза имеет значения, равные 0,1,2." Да. Значение столбца прогноза обозначает центр кластера, который принадлежит конкретной точке данных, и начинается с «0». Итак, если вы предоставили 3 кластерных центра, в столбце прогнозирования будет всего три значения, то есть 0,1,2. –

Смежные вопросы