반전공자

Data Preprocessing (scikit-learn, Scaling(minimax_scale, fit_transform) 본문

데이터분석/데테_인공지능

Data Preprocessing (scikit-learn, Scaling(minimax_scale, fit_transform)

하연01 2021. 4. 8. 03:55

파이썬 머신러닝 라이브러리 중 가장 많이 사용

 

다양한 알고리즘, 샘플 데이터 제공

 

Pandas, Numpy 이용하면 편리하게 활용가능 

 

 

 

< 패키지 설치 >

pip install scipy

 

[ Data Preprocessing ]

- Normalization (정규화) :  min-max normalization(일반적으로 0~1 사이의 실수로 변환) 

- Data Transformation (데이터 변환) : 문자열로 구성된 attribute(feature)의 변환 

                            → Classification algorithm의 경우, 문자열 허용하지 않는 경우 존재. → one-hot encoding 

- Missing data handling(결측치 처리)

 

실습은 모두 아나콘다로 실행.

 

# Scaling 

import pandas as pd
from sklearn.preprocessing import scale, minmax_scale 

x = pd.DataFrame({'col':[-3, -1, 1, 3, 5, 7, 9]}) # 컬럼 생성

# 평균 0, 분산을 이용해 정규화 
# astype(float)은 scale의 입력이 float이므로 warning 방지를 위해 변환 
x["scale"] = scale(x.col.astype(float))

# 0~1 사이로 정규화 
x["minmax_scale"] = minmax_scale(x.col.astype(float))

print(x)

astype(float) : scale 입력이 float이기 때문에 warning 방지를 위해 변환해줌 

minmax_scale : 0~1 사이로 정규화하는 역할

-3이 min, 9가 max 

사이의 값 스케일링 (-3을 0으로, 9를 1로 두고 스케일링 진행) 

 

 

- 각 값 출력

x.describe()

count : 값 개수 

mean : 평균

std : 표준편차 

min : 최저 

25% : 1사분위수 

50% 2사분위수 

75% : 3사분위수 

max : 최대

 

# MinMaxScaler 객체 이용 

import pandas as pd 
from sklearn.preprocessing import MinMaxScaler

scaler = MinMaxScaler()
dfTest = pd.DataFrame({'A':[14.00,90.20,90.95,96.27,91.21],
                      'B':[103.02,107.26,110.35,114.23,114.68],
                      'C':['big','small','big','small','small']})

dfTest[['A','B']] = scaler.fit_transform(dfTest[['A','B']])

print(dfTest)

A, B 컬럼에 대해서 스케일링 진행 (0~1 사이의 값으로 맵핑) 

최저 = 0 , 최대 = 1로 두고 그 사이 값들 스케일링