머신 러닝 프로젝트 시작하기-데이터 준비

2 minute read

데이터를 준비합니다.

순서

  • 데이터의 복사본으로 작업합니다.(원본 데이터셋은 그대로 보관합니다).

  • 적용한 모든 데이터 변환은 함수로 만듭니다. 여기에는 다섯 가지 이유가 있습니다.

    • 다음에 새로운 데이터를 얻을 때 데이터 준비를 쉽게 할 수 있기 때문입니다.
    • 다음 프로젝트에 이 변환을 쉽게 적용할 수 있기 때문입니다.
    • 테스트 세트를 정제하고 변환하기 위해서입니다.
    • 솔루션이 서비스에 투입된 후 새로운 데이터 샘플을 정제하고 변환하기 위해서입니다.
    • 하이퍼파라미터로 준비 단계를 쉽게 선택하기 위해서입니다. </i></strong>
      1. 데이터 정제
    • 이상치를 수정하거나 삭제합니다(선택사항).
    • 누락된 값을 채우거나(예를 들면 0이나 평균, 중간값 등으로), 그 행(또는 열)을 제거합니다.
      1. 특성 선택(선택사항)
    • 작업에 유용하지 않은 정보를 가진 특성을 제거합니다.
      1. 적절한 특성 공학
    • 연속 특성 이산화하기
    • 특성 분해하기(예를 들면 범주형, 날짜/시간 등)
    • 가능한 특성 변환 추가하기(예를 들면 log(x), sqrt(x), x^2 등)
    • 특성을 조합해 가능성 있는 새로운 특성 만들기
      1. 특성 스케일 조정
    • 표준화 또는 정규화

개념 정리

결측치 처리

결측치missing value : 데이터셋의 일부에 데이터가 존재하지 않는 경우의 데이터

1. 부적절한 값을 확인하여 결측치로 처리한다.

  • unique() 메소드
    열에 어떤 값이 존재하는지 출력하는 함수

  • np.nan
    부절적한 데이터 값을 결측치로 바꾼다.

  • isnull() 메소드
    데이터셋의 결측치 개수 확인할 수 있다.

2. 결측치를 처리하는 방법은 결측치를 삭제하거나 다른 값으로 변경한다.

  • dropna() 메소드
    결측치를 포함한 데이터를 삭제한다.

    axis 파라미터 : axis=0 이면 행을, axis=1 이면 열을 삭제한다.
    how 파라미터 : how=’all’ 모든 행 데이터 전체가 결측치인 행을 삭제한다.
    thresh 파라미터 : thresh=n 각 행에 결측치를 제외한 값이 n개보다 작을 경우, 해당 행을 삭제한다. subset 파라미터 : 특정 열에 결측치가 있는 경우 행 삭제

  • fillna() 메소드
    결측치를 다른 값으로 치환할 때 사용한다. 특정값을 넣는 경우도 있고, 해당 열의 평균값을 넣는 방법도 있다.

  • 사이킷런의 SimpleImputer
    결측치(누락된 값)를 손쉽게 다루도록 해준다.

데이터 인코딩

1.클래스 라벨링(레이블 인코딩/라벨링)

  • 1.사이킷런 라이브러리 사용

    • OrdinalEncoder Class : 텍스트형을 숫자형으로 바꾸어 클래스를 라벨링해준다.
    • LabelEncoder Class : 클래스 라벨링을 위한 클래스이다.
  • 2. 직접 클래스 라벨링
    클래스와 데이터의 맵핑을 직접 해준다.

2.원-핫 인코딩

원-핫 인코딩은 오직 0과 1만 사용한 벡터를 이용해 데이터값을 나타내는 것이다. 다른 말로 더미 변수(dummy variable)라고 부른다.

1. 더미 변수 사용
2. 사이킷런 라이브러리
3. 텐서플로우 라이브러리

스케일링

데이터 스케일링은 데이터값이 단위에 영향을 받지 않도록 변형하는 것이다. 스케일링 기준이 되는 값을 구할 때는 트레이닝 데이터만으로 구한다.

데이터 스케일링 과정에서 fit() 메서드는 트레이닝 데이터 셋에 대해서만 사용하며, 테스트 데이터 셋에는 transform() 메서드만 사용한다. 그 이유는 데이터 스케일러는 트레이닝 데이터를 기반으로 만들기 때문이다.

훈련세트에서는 fit_transform()을 사용하고 테스트세트에서는 transform()을 사용한다.

표준화 스케일링standard scaling

\(\frac{ x_i-\overline{x} }{ \sigma }\)

데이터가 평균 0, 표준편차 1이 되도록 변경하는 방법이다. 기존 데이터값에서 평균을 뺀 후 표준편차로 나눈 값으로 바꾼다는 의미이다.

로버스트 스케일링 robust scaling

\[\frac{x_i-q_2}{q_3-q_1}\]

표준화 스케일을 변형한 방법으로 중앙값과 사분위수를 사용한다. 극단값의 영향을 거의 받지 않는다는 장점이 있다.

최소-최대 스케일링 min-max scaling

\[\frac{x_i - min \left( x \right) }{ max \left(x\right) - min\left(x\right) }\]

데이터의 값의 최댓값이 1, 최솟값이 0으로 데이터값이 가질 수 있는 범위를 제한한다.

노멀 스케일링 nomaliser

\(new(x_i) = \frac{x_1}{\sqrt{x_i^2+y_i^2+z_i^2}}\)

벡터의 유클리디안 길이가 1이 되도록 데이터값을 변경한다. 노멀 스케일은 주로 벡터 길이는 상관없고, 방향(각도)만 고려할 때 사용한다. 이는 행(row)기준이다.