だから、現在私は次のように1つのホットエンコーディングに変換している文字列カテゴリ機能の束を持っています
from sklearn.preprocessing import LabelEncoder, OneHotEncoder
X_str = np.array([['a', 'dog', 'red'], ['b', 'cat', 'green']])
# transform to integer
X_int = LabelEncoder().fit_transform(X_str.ravel()).reshape(*X_str.shape)
# transform to binary
X_bin = OneHotEncoder().fit_transform(X_int).toarray()
print(X_bin)
# [[ 1. 0. 0. 1. 0. 1.]
# [ 0. 1. 1. 0. 1. 0.]]
これは機能します。
しかし、ディメンションがアクティブ化されているフィーチャからのマッピングを見つけようとしています
したがって、たとえば、「a」は0にマップされます(特徴ベクトルの0番目のインデックスが1に設定されているため)
'b'は1にマップされます(特徴ベクトルの最初のインデックスが1に設定されているため)
'cat'は2にマップされます(特徴ベクトルの2番目のインデックスが1に設定されているため)
したがって、これらすべてのマッピングを辞書で取得したいと思います。これらを達成するための良い方法は何ですか。
を使用しLabelEncoder().classes_
ます。それがアレンジされる順番になります。そしておそらくそれはアルファベットです。
つまり、LabelEncoder()
オブジェクトを保存する必要があります。次のように使用します。
le = LabelEncoder()
X_int = le.fit_transform(X_str.ravel()).reshape(*X_str.shape)
print(le.classes_)
#Out:- ['a' 'b' 'cat' 'dog' 'green' 'red']
その後、次を使用できます。
labels = le.classes_
mappings = {}
for index, label in zip(range(len(labels)), labels):
mappings[label]=index
print(mappings)
#Out: {'a': 0, 'b': 1, 'dog': 3, 'cat': 2, 'green': 4, 'red': 5}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加