いいものをつくろう

CTOの日記

Scala spark

spark 機械学習でnull valueの扱い

投稿日:

こんにちは

トレーニングデータにnull値が含まれれると

以下のようなエラーでnull値がありますよと、処理が落ちます。

Caused by: org.apache.spark.SparkException: Encountered null while assembling a row with handleInvalid = "keep". Consider
removing nulls from dataset or using handleInvalid = "keep" or "skip".
  at org.apache.spark.ml.feature.VectorAssembler$.$anonfun$assemble$1(VectorAssembler.scala:288)

ですが

spark >= 2.4 から HasHandleInvalidが指定できるようになったので

assembler.setHandleInvalid("skip").transform(df).show

 

選べるオプション

handleInvalid = Param(Params._dummy(), "handleInvalid", "how to handle invalid entries. " +
                          "Options are 'skip' (filter out rows with invalid values), " +
                          "'error' (throw an error), or 'keep' (keep invalid values in a special " +
                          "additional bucket).",

skipはnull値を含んだ行を除外する

errorはnull値があったら例外をだす。これがdefaultです。

keepはinvalid rowはなんか適当にindexをつけてあげる、とありましたが、null値でも除外せずになんらかの値を彫り込んでくれるのかな、と理解しています。しかし、実際使い場合は

使ってみて結果をみながらオプションを検討されることをお勧めします。

 

以上です

 

参照:

sparkexception-values-to-assemble-cannot-be-null

http://spark.apache.org/docs/latest/api/python/_modules/pyspark/ml/feature.html#VectorAssembler

 

 

-Scala, spark

Copyright© CTOの日記 , 2020 All Rights Reserved.