如果我已经有一个由OneHotEncoderEstimator创建的列,如何动态删除其中一个级别?
假设您有一列具有4个级别的列(出于相关性考虑而删除了一个列),而您想删除第二个级别(即,将其放置在截距中)。
所以从类似的地方走
row, fruit , encoded
1 , apple , [1, 0, 0]
2 , orange, [0, 1 ,0]
3 , pear , [0, 0, 1]
到
row, fruit , encoded
1 , apple , [1, 0]
2 , orange, [0, 1]
3 , pear , [0, 0]
挑战之一是OneHotEncoderEstimator为每一行返回一个SparseVector。我什至不知道如何删除向量的“正确”索引,因为我所拥有的只是列名和级别。
我知道我可以删除行并重新编码,但是我正试图避免这种情况。
有人知道如何在Python / Spark 2.3中做到这一点吗?
编辑
因此,我想澄清一下,“已编码”列是稀疏矩阵(或者是SparseVector对象的列)。
请参阅: https://spark.apache.org/docs/2.3.0/api/scala/index.html#org.apache.spark.mllib.linalg.SparseVector
这里的一些答案讨论了Spark中稀疏向量与密集向量之间的区别: