데이터분석 study/ML_ 심화

TIL_24.08.26_데이터 전처리(encoding, scaling)

justdata 2024. 8. 26. 20:50

범주형 데이터 전처리 - 인코딩(encoding)

    ● 인코딩 : 어떤 정보를 정해진 규칙에 따라 변환하는 것

       * 머신러닝 모델은 숫자를 기반으로 학습하기 때문에 인코딩 과정

          반드시 필요.

 

    ● 레이블 인코딩(Label Encoding)

        - 문자열 범주형 값을 고유한 숫자로 할당

            ○ 1등급 → 0

            ○ 2등급 → 1

            ○ 3등급 → 2

 

       - 특징

          ○ 장점 : 모델이 처리하기 쉬운 수치형으로 데이터 변환

          ○ 단점 : 순서 간 크기에 의미가 부여되어 모델이 잘못 해석할 수 있다.

 

       - 사용함수

        ○ sklearn.preprocessing.LabelEncoder

 

        ○ 메소드

            - fit :  데이터 학습

            - transform : 정수형 데이터로 변환

            - fit_transform  : fit 과 transform을 연결하여 한번에 실행

            - inverse_transform : 인코딩된 데이터를 원래 문자열로 변환

 

        ○ 속성

           - classes_ : 인코더가 학습한 클래스(범주)

 

       원-핫 인코딩(One-Hot Encoding)

         - 정의 : 각 범주를 이진 형식으로 변환하는 기법

             ex)

                    빨강 → [1,0,0]

                    파랑 → [0,1,0]

                    초록 → [0,0,1]

 

         - 특징

           ○ 장점 : 각 범주가 독립적으로 표현되어, 순서가 중요도를 잘못 학습

                        하는 것을 방지, 명목형 데이터에 권장

           ○ 단점 : 범주 개수가 많을 경우 차원이 크게 증가, 모델의 복잡도를

                         증가, 과적합 유발

 

          - 사용함수

            ○ pd.get_dummies

            ○ sklearn.preprocessing.OneHotEncoder

                ○ 메소드 

                   - fit :  데이터 학습

                   - transform : 정수형 데이터로 변환

                   - fit_transform  : fit 과 transform을 연결하여 한번에 실행

                   - inverse_transform : 인코딩된 데이터를 원래 문자열로 변환

               

                ○ 속성

                   - categories_ : 인코더가 학습한 클래스(범주)

                   - get_feature_names_out() : 학습한 클래스 이름(리스트)

 

 

수치형 데이터 전처리 - 스케일링(Scaling)

 

    ● 표준화(Standardization)

       - 각 데이터에 평균을 빼고 표준편차를 나누어 평균을 0 표준편차를 1로 조정

 

   ● 함수 : sklearn.preprocessing.StandardScaler

      ○ 메소드 

         - fit : 데이터 학습(평균과 표준편차를 계산)

         - transform : 데이터 스케일링 진행

 

     

      ○ 속성

         - mean_ : 데이터의 평균 값

         - scale_,  var_ : 데이터의 표준 편차, 분산 값

         - n_features_in_ : fit할 때 들어간 변수 개수

         - feature_names_in_: fit할 때 들어간 변수 이름

         - n_samples_seen_ : fit할 때 들어간 데이터의 개수

 

      ○ 특징

         장점 :

              - 이상치가 있거나 분포가 치우쳐져 있을 때 유용

              - 모든 특성의 스케일을 동일하게 맞춤

                많은 알고리즘에서 좋은 성능

 

       

         단점 :

              - 데이터의 최소 - 최대 값이 정해지지 않음

 

 ●정규화(Normalization)

     - 데이터를 0 과 1사이 값으로 조정(최소값 0, 최대값 1)

   

    ● 함수 : sklearn.preprocessing.MinMaxScaler

      ○ 메소드 

         - fit : 데이터 학습(평균과 표준편차를 계산)

         - transform : 데이터 스케일링 진행

 

     

      ○ 속성

         - date_min_: 원 데이터의 최소 값

         - date_max_ : 원 데이터의 최대 값

         - date_range_ : 원 데이터의 최대 - 최소 범위

       

 

      ○ 특징

         장점 :

              - 모든 특성의 스케일을 동일하게 맞춤

              - 최대 - 최소 범위가 명확

 

          단점 :

              - 이상치에 영향을 많이 받을 수 있음

                 (반대로 말하면 이상치가 없을 때 유용)

 

         * 이 외에도 스케일링은 로그 변환, 로버스트 스케일링

           등 여러가지 변환 방법이 있으니 찾아보면서 적용해보기