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
'인공지능' 카테고리의 다른 글
파이썬머신러닝 - 6. 성능 평가 지표 (0) | 2020.11.24 |
---|---|
파이썬머신러닝 - 5. 타이타닉 생존자 예측 (0) | 2020.11.23 |
파이썬머신러닝 - 3. 교차 검증/하이퍼 파라미터탐색 (0) | 2020.11.23 |
파이썬머신러닝 - 2. 붓꽃 문제 다루기 (0) | 2020.11.23 |
파이썬머신러닝 - 1. 기초 (0) | 2020.11.23 |