본문 바로가기
빅데이터 부트캠프/머신러닝&딥러닝

빅데이터 부트캠프 21일차

by Mecodata 2022. 8. 3.

StandardScaler (표준화)

- 데이터의 특징 스케일링(feature scaling)을 위한 방법 중 하나로 평균이 0, 분산이 1인 값으로 변환

- 중심이 원점에서 떨어져있는 그래프의 중심을 원점으로 옮기는 것

- from sklearn.preprocessing import StandardScaler

scaler = StandardScaler()

scaler.fit(iris_df)
scale = scaler.transform(iris_df)

iris_scaled_df = pd.DataFrame(data=scalecolumns=iris.feature_names)
iris_scaled_df

 

- fit() = 평균과 표준편차 계산

- transform() = 표준화

- fit_transform() = fit과 transform 동시에 실행

 

MinMaxScale (정규화)

- 데이터의 특징 스케일링(feature scaling)을 위한 방법 중 하나로 데이터 값을 0~1의 값으로 변환

- 만약 음수 값이 있으면 -1 ~ 1의 값으로 변환

- 데이터 분포가 가우시안 분포가 아닐 경우에 적용

(가우시안 분포 = 도수분포 그래프가 평균값을 기준으로 완벽하게 대칭인 분포)

- from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
scaler.fit(iris_df)
scale = scaler.transform(iris_df)

iris_scaled2_df = pd.DataFrame(data=scale, columns=iris.feature_names)
iris_scaled2_df

 

feature scaling 시 주의사항

- 학습용 데이터와 테스트용 데이터를 분리하기 에 피처 스케일링을 적용할 것!

Encoding

- 머신러닝 알고리즘은 문자열 데이터를 입력으로 받지 못함
- 따라서, 데이터가 가지고 있는 범주형 데이터는 반드시 숫자형으로 변환해주어야 함

- 인코딩(encoding) = 문자형 -> 숫자형 데이터로 변환 해주는 것

 

LabelEncoding

- encoder = LabelEncoder()
encoder = encoder.fit(tips['day'])
encoded = encoder.transform(tips['day'])

encoded -> tips['day'] 데이터가 모두 임의로 숫자로 변환

- encoder.inverse_transform(encoded)를 통해 인코딩 전 데이터 출력 가능

- encoder.classes_ 로 인덱스 순서 0번부터 순서대로 인코딩 값에 대한 원본을 보여줌

(출력된 데이터의 인덱스 번호 = 바뀐 숫자 데이터) 

 

OneHotEncoding

- feature값 유형에 따라 가령 새로운 피처가 추가될 경우에 해당 컬럼에만 1값 적용, 나머지는 0으로 채움
- 서로 다른 범주 데이터는 독립적인 관계라는 것을 나타낼 수 있음

- OneHotEncoder 적용시에는 해당 데이터가 모두 숫자여야함 (숫자가 아닐 경우 LabelEncoding 실행후 적용)
- Pandas의 Series가 아닌 numpy Matrix(행렬)을 입력해야함 → values 이용
- 벡터 입력을 허용하지 않음 → reshape를 이용해 Matrix로 변환 필요

 

- OneHotEncoder 객체 생성
one_encoder = OneHotEncoder()



- 2차원 구조로 변환 
labels = encoded.reshape(-1,1) -> 열벡터를 행벡터로 변환

- OneHotEncoder로 변환
onehot = one_encoder.fit_transform(labels)

 

- onehot 출력 -> matrix의 요소 중 하나로 변환

onehot.toarray() = 최종적으로 데이터를 행렬로 변환

댓글