スカラ配列の要素をクラスごとにフィルタリングする方法が不思議です。 Transformer
ないStringIndexerModel
が期待されているよう配列のスカラflatMapフィルタ要素タイプ
case class FooBarGG(foo: Int, bar: String, baz: Option[String])
val df = Seq((1, "first", "A"), (1, "second", "A"),
(2, "noValidFormat", "B"),
(1, "lastAssumingSameDate", "C"))
.toDF("foo", "bar", "baz")
.as[FooBarGG]
.drop("replace")
val labelEncoder = multiLabelIndexer(columnsFactor)
val pipe = new Pipeline().setStages(labelEncoder)
val fitted = pipe.fit(df)
def multiLabelIndexer(factorCols: Seq[String]): Array[StringIndexer] = {
factorCols.map(
cName => new StringIndexer()
.setInputCol(cName)
.setOutputCol(s"${cName}_index")
)
.toArray
}
は、仕事にflatMap
を取得できませんでした。
stages flatMap {
// case _.isInstanceOf[StringIndexerModel] => Some(_)//Some(_.asInstanceOf[StringIndexerModel])
case StringIndexerModel => Some(_)
case _ => None
}
私のアプローチは、名前付きパラメータを使用してFiltering a Scala List by type