文字カテゴリデータ処理



機械学習アルゴリズムは文字列データ属性の入力を受け入れず、すべてのデータを数値で表さなければならない.したがって、文字型カテゴリ属性はすべて数値値に変換/符号化する必要があります.
scikit-learningを用いた変換方式は2種類ある.

  • ラベルコード

  • いちじねつコーディング
  • この2つの違いは一目瞭然です.

    今、一つ一つよく見てみましょう.

    ラベルコード


    Label Encodeは、特徴のタイプに応じて数値を付与します.수행 방법
    from sklearn.preprocessing import LabelEncoder
    items=['트와이스','BTS','레드벨벳','신화','GOD','GOD']
    
    # LabelEncoder를 객체로 생성 -> fit() -> transform()
    encoder = LabelEncoder()
    encoder.fit(items)
    labels = encoder.transform(items)
    print('인코딩 변환값:',labels)
    결과값
    [4, 0, 2, 3, 1, 1]

    ラベルコーディングの問題


  • バッチ値に変換すると、予測パフォーマンスが低下する可能性があります.
    ->数値のサイズプロパティ

  • 線形回帰などのMLアルゴリズムには適用されません(ツリー系列のMLアルゴリズムは数字のこれらの特性を反映しないので大丈夫です)
  • いちじねつコーディング


    1-ホットコーディングは、featureのタイプに応じて新しい特徴を追加し、固有値に対応するコラムにのみ1を表示し、残りのコラムに0を表示する方法です.
    scikit-learnの方法とパンダの方法は2種類あります.

    1.sklearningによる一元熱符号化


    一熱符号化を行う前に、まずラベル符号化を行う.
    from sklearn.preprocessing import OneHotEncoder
    import numpy as np
    items=['트와이스','BTS','레드벨벳','신화','GOD','GOD']
    
    # 먼저 LabelEncoder로 변환 
    encoder = LabelEncoder()
    encoder.fit(items)
    labels = encoder.transform(items)
    
    # 2차원 데이터로 변환 
    labels = labels.reshape(-1,1)
    
    # 원-핫 인코딩을 적용
    oh_encoder = OneHotEncoder()
    oh_encoder.fit(labels)
    oh_labels = oh_encoder.transform(labels)

    2. pd.get_dummies()

    import pandas as pd
    df = pd.DataFrame({'item':['트와이스','BTS','레드벨벳','신화','GOD','GOD'] })
    
    # 원핫인코딩 실행
    pd.get_dummies(df)

    ソース
    https://john-analyst.medium.com/%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%A0%84%EC%B2%98%EB%A6%AC-%EB%A0%88%EC%9D%B4%EB%B8%94-%EC%9D%B8%EC%BD%94%EB%94%A9%EA%B3%BC-%EC%9B%90%ED%95%AB-%EC%9D%B8%EC%BD%94%EB%94%A9-f0220df21df1