728x90

데이터 전처리

- sklearn의 머신러닝 알고리즘을 사용하기전에 결손치나 문자열 값을 처리해주어야 함

-> 결손치 제거

-> 문자열을 카테고리(인코딩하여)나, 벡터화

* PK로 사용할수 있는 값(주민번호, 아이디)은 제거하는 것이 좋음

 

 

 

 

데이터 인코딩

- 라벨 인코딩, 원핫 인코딩 

- 라벨 인코딩 LabelEncoding : 카테고리형 문자열 변수에 클래스 할당

  * sklearn.preprocessing에서 제공 

from sklearn.preprocessing import LabelEncoder

items = ["한국", "미국", "미국", "중국", "러시아", "호주"]

encoder = LabelEncoder()
encoder.fit(items)

lables = encoder.transform(items)
print(lables)
print(encoder.classes_)

- 원핫인코딩 OneHotEncoding : 각 카테고리가 고유의 컬럼을 가지고, 해당하면 1아니면 0의값을 갖도록하는방식

from sklearn.preprocessing import OneHotEncoder
lables = lables.reshape(-1,1)
print(lables)

oh = OneHotEncoder()
oh.fit(lables)
oh_lables = oh.transform(lables)

print(oh_lables.toarray())

 

 

 

 

 

피처 스케일링 feature scaling

- 다른 범위의 값들을 갖는 변수를 일정 수준으로 변환하는 작업

 ->  ex. 표준화 standardization, 정규화 normalization

- 표준화 : 특정 피처값을 표준 정규 분포의 값으로 변환. (해당 값 - 해당 피처 평균)/해당 피처 표준편차

- 정규화 : 피처 값을 0 ~ 1사이 값으로 변환.

* sklearn의 정규화 : 벡터 정규화. 새 피처값 = 해당 피처값/해당 행의 유클리디안 거리

 

 

 

StandardScaler

- sklearn.preprocess 모듈

- 가우시안 커널을 사용하는 알고리즘(SVM, 선형회귀, 로지스틱회귀)는 데이터가 가우시안 분포를 따른다고 가정

  -> 표준화가 중요

 

from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC

scaler = StandardScaler()
scaler.fit(X)
X_scaled = scaler.transform(X)
df_scaled = pd.DataFrame(data=X_scaled, columns=data.feature_names)


print("befor scaling")
print(X.mean())
print(X.var())

print("\nafter scaling")
print(df_scaled.mean())
print(df_scaled.var())

 

 

MinMaxSacler

- 0 ~ 1 사이 값으로 변환. (음수 포함시 -1 ~ 1)

from sklearn.preprocessing import MinMaxScaler

scaler = MinMaxScaler()
scaler.fit(X)
X_scaled = scaler.transform(X)

df_scaled = pd.DataFrame(data=X_scaled, columns=data.feature_names)
print(df_scaled.min())
print(df_scaled.max())

 

 

 

 

 

 

 

 

 

 

 

300x250

+ Recent posts