일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- seaborn
- SQL
- airflow 설치
- pandas
- TRUNCATE
- solvesql
- matplotlib
- not in
- join
- PostgreSQL
- Round
- 결측값
- 데이터리안 웨비나
- 다중 JOIN
- Limit
- mysql :=
- GROUPBY
- Oracle
- 프로그래머스
- hackerrank
- having
- 데이터시각화
- MySQL
- SQLite
- SUM
- 전처리
- 그로스해킹
- 데이터분석
- 파이썬
- 머신러닝
Archives
- Today
- Total
Milky's note
Chap 3. sklearn 전처리 본문
전처리 : 데이터 분석에 적합하게 데이터를 가공/변형/처리/정리 해주는 과정
1. 결측치
- 데이터 중에 빠져있는 값들을 어떻게 처리할 것인지?
- pandas의 fillna()를 사용해도 되지만, 2개 이상의 컬럼에 대해서는 SimpleImputer 를 사용한다.
from sklearn.impute import SimpleImputer
#median 값을 이용해서 결측값 처리
impute = SimpleImputer(strategy='median')
result = impute.fit_transform(train[['Age']])
fit_transform는 결측치에 학습한 내용을 적용하는 함수이다.
train[['Age']] = result
2. 이상치
- 데이터의 이상치가 있을 때 어떻게 처리할 것인지?
3. 정규화 (Normalization)
- 0~1 사이의 분포로 조정
- 다른 스케일에 있는 데이터를 동일하게 맞추기 위해, 값에 대한 수치형 데이터가 넓을 때 사용
예제 문제>>>>
네이버와 넷플릭스의 평점은 기준이 다르다. 이를 같은 선상에서 맞춰 데이터를 전처리 하기 위해 정규화 과정이 필요하다.
- 네이버 영화평점 (0점 ~ 10점): [2, 4, 6, 8, 10]
- 넷플릭스 영화평점 (0점 ~ 5점): [1, 2, 3, 4, 5]
movie = {'naver' : [2, 4, 6, 8, 10],
'netflix' : [1, 2, 3, 4, 5]
}
movie = pd.DataFrame(data=movie)
movie
Out[ ]:
naver netflix01234
2 | 1 |
4 | 2 |
6 | 3 |
8 | 4 |
10 | 5 |
sklearn의 MinMaxScaler 를 사용해서 정규화를 해준다.
#불러오기
from sklearn.preprocessing import MinMaxScaler
#모델 설정
mms = MinMaxScaler()
#fit_transform를 사용해서 값을 변환
movie_normal = mms.fit_transform(movie)
# 데이터 프레임 형태로 변환한 후 프레임 출력
pd.DataFrame(movie_normal, columns=['naver', 'netfliex'])
Out[ ]:
naver netfliex01234
0.00 | 0.00 |
0.25 | 0.25 |
0.50 | 0.50 |
0.75 | 0.75 |
1.00 | 1.00 |
==> 기준이 다르지만 동일한 퍼센트로 정규화 되었다!!
4. 표준화 (Standardization)
- 평균을 0, 표준 편차를 1로 맞춤
예제 문제 >>
from sklearn.preprocessing import StandardScaler
standard_scaler = StandardScaler()
import numpy as np
x = np.arange(10)
# outlier 추가
x[9] = 1000
#샘플 데이터 생성
x.mean(), x.std()
# 결과
(103.6, 298.8100399919654)
#표준화 할 변수
scaled = standard_scaler.fit_transform(x.reshape(-1, 1))
round(scaled.mean(),2), scaled.std()
# 결과
(0.0, 1.0)
5. 샘플링 (over/under sampling)
- 지나치게 적거나 많은 데이터를 오버 샘플링, 언더 샘플링을 이용해서 데이터의 수를 맞춰주는 작업
6. 피처 공학 (Feature Engineering)
- feature끼리의 연산/생성, 구간 생성, 또는 스케일 변형 등이 있음
'머신러닝 > 요약 정리' 카테고리의 다른 글
Chap 2. sklearn 개요 (0) | 2022.02.16 |
---|---|
Chap 1. 머신러닝 기초 (0) | 2022.02.14 |
Comments