変更可能


変更可能


可変説明

pd.get_dummies()を用いて可変パラメータ化を行うことができる.
可変量子化には、熱符号化と冷符号化が含まれる.
一般に、変数化はOne-Hot-Encodingを意味する.
One-Hot-Encodingとは、以下の画像と同じ動作を指します.

画像ソース:https://www.kaggle.com/code/alexisbcook/categorical-variables/tutorial
上の図のようにOne-Hot-Encodeを行う場合、値は列形式で生成され、해당되는 컬럼에 1나머지 컬럼에는 0と表示されます.
cf)One-Cold-EncodeはOne-Hot-Encodeで0と1を反転すればよい.
pd.get dummies()がdrop_first=Trueのプロパティを提供する場合、作成時に最初のカラムは含まれません.

画像ソース:上記の画像を加工して画像を作成します.
上記の画像では、YellowとGreenがともに0の場合、Red値として解釈することができます.

可変パラメータ化はいつ行われますか?


モデリングの前に、범주형 데이터 들 중 숫자로 되어 있지 않은 변수들に対して가변수화를 진행が行われる.0과 1로만 구성된 숫자가 아닌の数字の범주형についても가변수화를 진행があります.
  • の場合、必ずしも可変パラメータ化する必要はありません.
  • ex)は、1(非常に不満)~5(非常に満足)を調査の変数とした.
  • であれば、중요도가 동일한 수준으로 증가하는 의미를 갖는다고 판단には가변수화를 할 필요はありません.
  • しかし、가변수화 할 때와 안 할 때에는 성능 차이があるはずです.
    変数化を行う場合や変数化を行わない場合は、性能をチェックする必要があります.
    変数化すると、既存のカラムが削除され、その意味が理解しにくい変数がたくさん発生します.
    これにより,後で変数の重要度を説明することが困難になる可能性がある.
    ★ということで、설명을 위한 것인지 성능을 위한 것인지を考えることにしました.

    可変トラップ(?)

    x1에 해당하는 모든 범주의 종류가 train 셋에 존재のはずです.
    しかし、列車データがtrain과 validation 셋으로 분할である場合、3つの列車にはx1에 해당하는 모든 범주의 종류가 포함되지 않을 수도がある.모델의 학습이 제대로 이루어지지 않는다.したがって、これを防止するために、変数の데이터 타입을 category로 변경が行われる.

    コードによる可変要因の表示


    x,y分離とtrain,val,test三分離を仮定する.
  • が変数化される前に、カテゴリ変数category로 데이터타입을 변경
  • 作業は데이터 분석(이해) 단계에서 진행
  • cat = {'Sex':['female', 'male'],
           'Embarked':['S', 'Q', 'C'],
           'Pclass':[1, 2, 3]}
    
    for k, v in cat.items():
        x_train[k] = pd.Categorical(x_train[k], categories=v, ordered=False)
        
    x_train.info()
  • pd.変数化getdummes()
  • cat = {'Sex':['female', 'male'],
           'Embarked':['S', 'Q', 'C'],
           'Pclass':[1, 2, 3]}
           
    x_train = pd.get_dummies(x_train, columns=cat.keys(), drop_first=True)
  • 確認
  • x_train.tail(2)

    データソース:https://www.kaggle.com/c/titanic