Tweet
Logo
    sklearn の LabelEncoder の挙動
    sklearn の LabelEncoder の挙動

    sklearn の LabelEncoder の挙動

    • Label Encoder の挙動

    LabelEncoder の挙動とハマったポイントをメモしておきます

    sklearn の version は 0.22.2.post1 です

    sklearn.preprocessing.LabelEncoder - scikit-learn 0.24.2 documentation

    scikit-learn.org

    sklearn.preprocessing.LabelEncoder - scikit-learn 0.24.2 documentation

    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 が発生します

    © 2025 DROBE All rights reserved.
    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']