LabelEncoder の挙動とハマったポイントをメモしておきます
sklearn
の version は 0.22.2.post1
です
Label Encoder の挙動
まずは lib を import してデータを準備します
import pandas as pd
from sklearn import preprocessing
# data を準備する
df = pd.DataFrame({
'data': ["ABC", "DEF", "GHI"]
})
fit させます
le = preprocessing.LabelEncoder()
le.fit(df['data'])
transform をすると encode 結果が取り出せます
le.transform(df['data'])
>> array([0, 1, 2])
list を入力しても動きます
le.transform(['DEF'])
>> array([1])
存在しない値を入れると exception が発生します
le.transform(['DEF', 'JKL'])
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-9-e46196e8b982> in <module>()
----> 1 le.transform(['DEF', 'JKL'])
2 frames
/usr/local/lib/python3.7/dist-packages/sklearn/preprocessing/_label.py in _encode_numpy(values, uniques, encode, check_unknown)
48 if diff:
49 raise ValueError("y contains previously unseen labels: %s"
---> 50 % str(diff))
51 encoded = np.searchsorted(uniques, values)
52 return uniques, encoded
ValueError: y contains previously unseen labels: ['JKL']