处理 spark mllib 分类器中的 null/NaN 个值
Handle null/NaN values in spark mllib classifier
我有一组分类列(字符串),我正在解析这些列并将其转换为特征向量以传递给 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 .... 等,然后才能正确使用它们,请参见此处:
因此空值将映射到这些数字之一。
我有一组分类列(字符串),我正在解析这些列并将其转换为特征向量以传递给 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 .... 等,然后才能正确使用它们,请参见此处:
因此空值将映射到这些数字之一。