たとえば、1つのカテゴリで32ビットの16進数にハッシュされたカテゴリ機能がいくつかあり、3つの異なるクラスが次のようにハッシュされます。
'05db9164' '68fd1e64' '8cf07265'
1 つのホット エンコーディングはこれらをバイナリ配列にマップし、1 つのビットのみが 1 で、もう 1 つのビットは 0 です。したがって、上記の機能をエンコードしたい場合。必要なのは 3 ビットだけです。
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 ビットの 16 進数は、カテゴリ内のクラスを示すために使用されていると思います。0 、 1 、 2 と同じです。[0,0,1]、[0,1,0]、[1,0,0] で十分です。どうもありがとうございました。