spark ml StringIndexer vs OneHotEncoder,什么时候用哪个?

数据挖掘 特征工程 分类数据 阿帕奇火花 一热编码
2022-03-16 01:28:13

对何时使用StringIndexer与 StringIndexer+ OneHotEncoder感到困惑。

OneHotEncoder 文档说

对于字符串类型的输入数据,通常首先使用 StringIndexer 对分类特征进行编码。

在什么情况下,我想采取额外的步骤将 StringIndex 的输出转换为 one-hot 编码特征?

1个回答

这取决于您要使用的功能(及其数据类型)。

在文档中它说:

One-hot 编码将表示为标签索引的分类特征映射到最多具有单个单值的二进制向量

这意味着:

如果您的分类特征已经“表示为标签索引”则无需使用StringIndexerfirst相反,您可以直接应用 one-hot 编码。

另一方面:

如果您的分类特征是,例如表示为字符串值,则有必要首先使用StringIndexer将字符串值转换为标签索引(数值)

OneHotEncoder-Docs 的示例中,您可以看到DataFrame正在创建的 已经具有的功能,DoubleType因此StringIndexer在 one-hot 编码之前不应用。