apache-spark - 处理 spark mllib 分类器中的 null/NaN 值

标签 apache-spark classification random-forest apache-spark-mllib

我有一组分类列(字符串),我正在解析这些列并将其转换为特征向量以传递给 mllib 分类器(随机森林)。

在我的输入数据中,某些列具有空值。比如说,在其中一列中,我有 p 值 + 空值: 我应该如何构建我的特征向量和分类器的 categoricalFeaturesInfo 映射?

  • 选项 1:我在 categoricalFeaturesInfo 中告知 p 值,并在我的输入向量中使用 Double.NaN?
    • 附带问题:分类器如何处理 NaN?
  • 选项 2:我将 null 视为一个值,因此我在 categoricalFeaturesInfo 中告知 (p+1) 个值,并将 null 映射到某个 double ?

感谢您的帮助。

(PS:我知道新的dataframe + pipeline + vectorindexer API,但由于某些原因它不太符合我的需要,所以我需要自己做)

最佳答案

看起来选项 2 是一个。如果 null 对您来说实际上是分类特征的另一个级别,只需将其映射到某个值即可。 请注意,分类特征级别应映射到 0、1、2 .... 等,然后才能正确使用它们,请参见此处:

response in stackoverflow

因此空值将被映射到这些数字之一。

关于apache-spark - 处理 spark mllib 分类器中的 null/NaN 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32999099/

相关文章:

machine-learning - 决策树学习和杂质

scala - 如何在scala中漂亮地打印Option返回的值?

apache-spark - 如何在 Google Dataproc 中发送失败作业的警报通知?

python - SciKit-Learn 随机森林子样本大小如何等于原始训练数据大小?

python - 如何将两个特征/分类器组合成一个统一且更好的分类器?

image - 通过matlab去除图像中不需要的区域

r - 从 R 中经过训练的 randomForest 获取因子水平

scala - 为什么 Scala 编译器会因缺少 JavaSparkContext 过滤器的参数类型而失败?

python - 如何一次转换多个 Spark 数据框列类型?

c++ - OpenCV 随机决策森林 : How to get posterior probability