🐣python
데이터 전처리
category
🐣python
URL
date
Feb 6, 2023
slug
data-preprocessing
author
status
Public
tags
Playdata_deep-learning & machine-learning
summary
라벨인코딩,원핫인코딩,데이터스케일링(표준화,정규화)
type
Post
thumbnail
updatedAt
Mar 2, 2023 03:23 AM
데이터 전처리 개요
- 데이터 전처리는 ML 알고리즘 만큼 중요
- Garbage in, Garbage out : 어떤 데이터를 입력으로 가지느냐에 따라 결과도 달라짐
- ML 알고리즘을 적용하기 전에 미리 처리해야 할 사항
- 결손값 : Null,Nan은 허영되지 않음
- 문자열 : 모든 문자열은 숫자형으로 변환
- 카테고리값, 텍스트형 데이터
- 식별자 삭제
- 주민번호 등 데이터 행을 식별하는데 사용되는 데이터
라벨 인코딩 LabelEncoding
- 카테고리 피처를 숫자형으로 변환

- 라벨 인코딩 규칙
# 라벨 인코딩 규칙
encoder.classes_
array(['TV', '냉장고', '믹서', '선풍기', '전자렌지', '컴퓨터'], dtype='<U4')
- 라벨 원본 값 확인
# 원본 값 확인
encoder.inverse_transform(labels)
array(['TV', '냉장고', '전자렌지', '컴퓨터', '선풍기', '선풍기', '믹서', '믹서'], dtype='<U4')
원 - 핫 인코딩(One-Hot Encoding)
- 피처값의 유형에 따라 새로운 피처를 추가하고 고유값에 해당하는 칼럼만 1, 나머지 칼럼은 0으로 표시하는 방식

데이터 스케일링(Scaling)
- 피처 스케일링(Feature Scaling)
- 서로 다른 변수의 값 범위를 일정한 수준으로 맞추는 작업, 실제 특성값의 크기와 상관없이 동일한 조건으로 비교
- 표준화(Standardization)
- 평균0, 분산 1인 가우시안 정규 분포를 가진 값으로 변환, 각 특성값이 0에서 표준편차의 몇 배만큼 떨어져 있는가를 표시

- 정규화(Normalization)
- 서로 다른 피처의 크기를 통일하기 위해 크기를 변환, 동일한 크기 단위로 비교(최소 0 ~ 최대 1의 범위로 변환)

- 사이킷런 피처 스케일링
- 서로 다른 변수의 값 범위를 일정한 수준으로 맞추는 작업
- StandardScaler()
- 평균 0, 분산 1인 가우시안 정규 분포를 가진 값으로 변환 데이터가 가우시안 분포를 가지고 있다고 가정하고 구현된 SVM, 선형 회귀, 로지스틱 회귀 등의 알고리즘에서 중요
- MinMaxScaler()
- 데이터 값을 0과 1 사이의 범위 값으로 반환
- 음수값이 있는 경우 -1 ~ 1 사이의 값으로 변환
- 데이터 분포가 가우시안 정규분포가 아닌 경우 MinMax Scaling을 고려
- 데이터 스케일링 유의사항
- fit()
- 데이터 변환을 위한 기준 정보 설정(ex) 데이터 셋의 최댓값/최솟값 설정) 적용
- transform()
- 설정한 정보를 이용해 데이터를 변환
- fit_transform()
- fit()과 transform()을 한번에 적용 및 수행
- 학습 데이터 세트와 테스트 데이터 세트에 fit(), transform() 적용 시 유의사항
- 가능하다면 전체 데이터의 스케일링 변환을 적용한 뒤 학습, 테스트 데이터 세트로 분리
- 1항이 안되는 경우 테스트 데이터 변환 시에 fit()이나 fit_transform()을 적용하지 않고 학습 데이터로 이미 fit() 된 Scaler 객체를 사용해 transform()으로 변환
- Scaler() 객체를 이용해 학습 데이터 세트로 fit(), transform()을 적용하면 테스트 셋트에는 다시 fit()을 적용하지 않고, 학습 데이터 세트로 fit()을 수행한 결과를 이용해 transform()변환을 적용
- 학습 데이터로 fit()이 적용된 스케일링 기준 정보를 그대로 테스트 데이터에 적용해야 하며, 그렇지 않고 테스트 데이터로 다시 새로운 스케일링 기준을 만들지 말아야 함