2 분 소요

데이터 전처리 복습을 하며 정리하였다.

  1. Cleaning input data
  2. Working with missing values
  3. Normalization and Standardization
  4. Handling Categorical data
  5. High-dimensional data and the curse of dimensionality
  6. Feature selection with filter and wrapper methods
  7. Feature reduction with transformation

Data Cleaning

Handling Missing Values

Finding and removing missing values

  • .isnull().values.any() : True면 결측치 존재한다.
  • .isnull().values.sum() : 6이면 6개의 결측치가 존재한다.

image

  • .fillna(’example’) : 결측치를 example로 채우기

image

  • .dropna() : 결측치를 포함하는 열 또는 행 제거하기
    • option
      • axis=0 or ‘index’: drop rows
      • axis=1 or ‘columns’: drop columns

      image

  • .mean() : NaN을 mean으로 대체

    image

  • Imputor: 대체할 값을 예측하기 위해 사용한다.
    • scikit-learn에서는 SimpleImputor()을 호출하여 사용할 수 있다.
    • option
      • missing_values : the form of the missing values (ex. nan, 0, or n/a)
      • strategy: the impute method (the choices are mean, median, most frequent, and constant)
      • fill_value : optional argument to pass the constant when choosing “strategy=constant”

      image

      image

Binning

  • .cut(): 수치형을 범주형으로 묶을 수 있다.
    • retbins=True: return the bins (mybin), default False

image

Feature scaling

  • Normalization: 모든 값들이 0과 1사이의 값을 갖도록 스케일한다.

    image

  • Standardization: 모든 값이 평균이 0이고 분산이 1이 되도록 스케일한다.

    image

Handling categorical data

  • 범주형 데이터를 수치형 데이터로 바꿔준다.

Ordinal encoding

  • 순서가 있는 범주형 데이터를 순서가 있는 수치형 데이터로 변환해준다.

image

image

One-hot encoding

범주형 데이터를 0, 1 이진 데이터로 변환한다.

image

  • 단점: 데이터 안에 존재하지 않는 범주는 추정할 수 없다. ex) Shoe Size 11

image

Label encoding

  • 범주형 데이터를 수치형 라벨로 변환한다.

image

Dimension reduction

차원 축소해야하는 이유

  • 데이터의 차원이 높으면 차원의 저주가 발생
  • 4차원 이상의 데이터는 시각화하기 어렵다.

차원 축소 방법

  1. Selection: 가장 좋은 특성을 선택하고 나머지를 제거한다.
  2. Transformation: 기존의 특성을 요약하여 새로운 특성을 만든다.

특성 선택 방법

  1. Filter: 중요한 평가기법을 정하고 중요한 것들만 필터링한다.
  2. Wrapper: 최적의 결과를 선택하기 전에 다양한 특성 조합들을 샘플링한다.

Feature Filtering

중요한 평가기법을 정하고 중요한 것들만 필터링한다.

  • 일반적인 방법
    • variance threshold
      • threshold 값을 정해놓고 그 값 아래에 있는 특성들을 제거한다.
      • scikit-learn에서는 VarianceThreshold()를 호출한다.
        1. Prefit with no threshold
        2. Analyze the variance
        3. Choose the threshold
        4. Refit with the chosen threshold

      image

      • threshold=0.6으로 정하면 첫번째 열과 세번째 열이 선택된다.

        image

    • sorting by a correlation coefficient
      • 가장 흔하게 사용되는 -1과 1사이의 수로 이루어진 행렬이다.

      image

      • 특정 변수 값에 해당하는 상관계수를 계산할 수 있다.

        image

Wrapper methods

다양한 특성 조합들을 샘플링한 후 최적의 결과를 내는 조합을 선택한다.

  • 특성의 개수가 0개에서부터 특성을 하나씩 추가하여 성능 결과를 확인하고 이를 반복한다.
  • 또는 가능한 모든 특성의 개수에서 특성을 하나씩 제외하여 성능 결과를 확인하고 이를 반복한다.

    image

Transformation

가장 흔하게 사용하는 차원 축소 방법이다.

  1. Principal Component Analysis (PCA)
    • 라벨 없이 데이터가 가장 넓게 퍼질 수 있도록 하는 특성을 생성한다.
    • 분산을 가장 크게하는 벡터들을 eigenvectors 라고 부르며, 데이터의 주성분이다.

    image

    • PCA를 적용하기 전과 후를 비교해보자

      image

  2. Linear Discriminant Analysis (LDA)
    • 라벨을 활용하여 라벨을 가장 잘 분류할 수 있는 방향으로 차원을 축소하는 방법이다.

    image

    • LDA 적용 전과 후를 비교해보자

      image

댓글남기기