У меня есть искры.ml в Spark 1.5.1, который состоит из серии трансформаторов, за которыми следует оценка k-средних. Я хочу иметь доступ к KMeansModel.clusterCenters после установки конвейера, но не могу понять, как это сделать. Есть ли эквивалент spark.ml функции sklearn pipeline.named_steps?
Я нашел этот ответ, который дает два варианта. Первый работает, если я беру k-образную модель из моего конвейера и подгоняю ее отдельно, но этот вид побеждает цель конвейера. Второй вариант не работает - я получаю error: value getModel is not a member of org.apache.spark.ml.PipelineModel
.
EDIT: Пример конвейера:
import org.apache.spark.ml.feature.{HashingTF, IDF, Tokenizer}
import org.apache.spark.ml.clustering.{KMeans, KMeansModel}
import org.apache.spark.ml.Pipeline
// create example dataframe
val sentenceData = sqlContext.createDataFrame(Seq(
("Hi I heard about Spark"),
("I wish Java could use case classes"),
("K-means models are neat")
)).toDF("sentence")
// initialize pipeline stages
val tokenizer = new Tokenizer().setInputCol("sentence").setOutputCol("words")
val hashingTF = new HashingTF().setInputCol("words").setOutputCol("features").setNumFeatures(20)
val kmeans = new KMeans()
val pipeline = new Pipeline().setStages(Array(tokenizer, hashingTF, kmeans))
// fit the pipeline
val fitKmeans = pipeline.fit(sentenceData)
Итак, теперь fitKmeans
имеет тип org.apache.spark.ml.PipelineModel
. Мой вопрос: как мне получить доступ к центрам кластеров, рассчитанным по модели k -средств, содержащейся в этом конвейере? Как отмечалось выше, когда он не содержится в конвейере, это можно сделать с помощью fitKmeans.clusterCenters
.