1

たとえば、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] で十分です。どうもありがとうございました。

4

1 に答える 1