在 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源码阅读-分类算法4-DecisionTree