(Scikit-learn) 데이터 전처리

dcafplz·2022년 11월 12일
0

Scikit-learn

목록 보기
2/10
  1. 결측치 처리

    • 행 / 열 단위 제거
      import pandas as pd
      
      # 행 기준 제거
      df.dropna(inplace=True)
    • 가능성이 높은 값으로 대체
      • 수치형: 평균, 중앙값
      • 범주형: 최빈값
      • ML 알고리즘에 의한 추정
  2. 이상치(Outlier) 처리

    • 오류값: 결측치로 처리
    • 극단치
      • 유지
      • 결측치 변환
      • 그 값의 MAX, MIN값으로 대체
  3. Feature 타입 별 전처리

    • 범주형 / 이산형 변수
      대상 값들이 서로 떨어진 값을 가지는 변수로
      명목변수(비서열 변수), 순위변수(서열 변수)로 분류
      • 레이블 인코딩
        고유값을 0부터 1씩 증가하는 값으로 변환하는 방식
        숫자의 차이가 모델에 영향을 미치지 않는 트리 모델에 적용한다.

        import numpy as np
        from sklearn.preprocessing import LabelEncoder
         
        le = LabelEncoder()
         
        # 학습대상 == 변환대상
        item_labels = le.fit_transform(items)
         
        # 학습대상 != 변환대상
        le.fit(items)
        item_labels = le.transform(items)
         
        # itmes가 레이블링 된 값
        print(item_labels)
         
        # items가 어떻게 레이블링 되었는지 확인
        print(le.classes_)
         
        # 디코딩
        inverse_label = le.inverse_transform(item_labels)
        print(inverse_label)
      • One-Hot 인코딩
        N개의 클래스를 N차원의 One-Hot 벡터로 표현되도록 변환

         #sklean 이용
         from sklearn.preprocessing import OneHotEncoder
         
         ohe = OneHotEncoder()
         ohe.fit(items[..., np.newaxis])
         items_ohe = ohe.transform(items[..., np.newaxis])
         
         # class값 반환
         print(ohe.get_feature_names_out())
         
         #pd 이용
         df_ohe = pd.get_dummies(df, columns=['item'])
         ```
         
        
    • 연속형 변수 대상 값들이 서로 연속된 값을 가지는 변수로
      등간변수, 비율변수 분류 한다(0이 사용되는 의미로)
      • 표준화(StandardScaler)
        ****정규분포의 표준화 로직으로 평균을 0, 표준편차를 1로 한다.
         from sklearn.preprocessing import StandardScaler
         stn_scaler = StandardScaler()
         result = stn_scaler.fit_transform(data)
         print(result)
      • MinMaxScaler
        모든 값이 0~1사이의 범위를 가지도록 최대값과 최소값으로 값을 처리
        from sklearn.preprocessing import MinMaxScaler
        mm_scaler = MinMaxScaler()
        result = mm_scaler.fit_transform(x)
        print(result)

0개의 댓글