Mllib 缺失值处理

Mllib missing values handling

我正在使用带有基本界面的 mllib 的 corr 喜欢

val a:RDD[Double] = sc.makeRDD(Seq(1., 1., 0.))
val b:RDD[Double] = sc.makeRDD(Seq(1., -1., 0.))
val r = Statistics.corr(a, b)
println(r)

是否有可能按大小写或成对删除 NAN 和 Infinity 值?

在无穷大或 NAN 值的情况下,Mllib 默认提供 NAN 作为 corr 的结果。

据我所知,没有内置函数,您需要自己过滤掉这些值。一种方法是使用 java.Double (http://docs.oracle.com/javase/7/docs/api/java/lang/Double.html) 功能:

import java.lang.Double.isNaN
import java.lang.Double.isInfinite

val filtered1 = data1.filter((!isNaN(_))&&(!isInfinite(_)))
val filtered2 = data2.filter((!isNaN(_))&&(!isInfinite(_)))
val r = Statistics.corr(filtered1, filtered2)
println(r)