Mllib缺少值处理

时间:2015-04-24 17:37:42

标签: apache-spark apache-spark-mllib

我使用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的结果。

1 个答案:

答案 0 :(得分:1)

据我所知,没有内置函数,您需要自己过滤掉这些值。一种方法是使用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)