我有一些分类特征散列成 32 位十六进制数字,例如,在一个类别中,三个不同的类被散列成:
'05db9164' '68fd1e64' '8cf07265'
一个 Hot Encoding将这些映射到一个二进制数组中,只有一位是 1,另一个是 0。所以如果我想对上述特征进行编码。只需要三个位。
001 correspond to 05db9164, 010 correspond to 68fd1e64, 100 correspond to 8cf07265
但是当我在 sklearn 中使用 OneHotEncoder 时,它告诉我这个数字太大了。这让我很困惑。因为我们不关心数字的数值属性。我们只关心它们是否相同。
另一方面,如果我编码 0,1,2:
enc = OneHotEncoder()
enc.fit([[0],[1],[2]])
print enc.transform([[0]]).toarray()
print enc.transform([[1]]).toarray()
print enc.transform([[2]]).toarray()
我得到了预期的答案。而且我认为这些 32 位十六进制数是用来表示类别中的类的。所以它与 0 , 1 ,2 相同。并且 [0,0,1], [0,1,0],[1,0,0] 足以对其进行编码。你能帮我吗。非常感谢。