在 spark mllib 分类器中处理 null/NaN 值

Posted

技术标签:

【中文标题】在 spark mllib 分类器中处理 null/NaN 值【英文标题】:Handle null/NaN values in spark mllib classifier 【发布时间】:2016-01-05 02:10:13 【问题描述】:

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

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

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

感谢您的帮助。

(PS:我知道新的dataframe + pipeline + vectorindexer API,但由于某些原因它不能很好地满足我的需要,所以我需要自己做)

【问题讨论】:

【参考方案1】:

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

response in ***

所以空值将被映射到这些数字之一。

【讨论】:

以上是关于在 spark mllib 分类器中处理 null/NaN 值的主要内容,如果未能解决你的问题,请参考以下文章

Spark,MLlib:调整分类器识别阈值

spark.mllib源码阅读-分类算法4-DecisionTree

spark.mllib源码阅读-分类算法4-DecisionTree

Spark MLlib中分类和回归算法

Spark mllib多层分类感知器在情感分析中的实际应用

Spark-Mllib中各分类算法的java实现(简易教程)