sklearn の LabelEncoder の挙動
sklearn の LabelEncoder の挙動

sklearn の LabelEncoder の挙動

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']