sklearn 개요
- ☞ http://https://scikit-learn.org/
- 분류, 회귀, 군집화, 차원축소, 모델 평가, 전처리 기능을 제공한다
실행
0) 설치
1) 모델 선언
2) 학습
- fit(데이터, 예측값)
3) 예측
- predict(새로운 값)
pip install -U scikit-learn
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
model = LinearRegression() # 모델 선언
model.fit(x_train, y_train) # 학습
prediction = model.predict(x_test) # 예측
용어
- X (features)
- x_train, x_test 로 변수명 지정한다
- 학습을 위한 데이터 셋, 예측할 값(y)은 빠져있다
- Eg) 지역, 평형 정보, 층수 정보, 동네, 거주민 평균 나이 등
- Y (labels)
- y_train 로 변수명 지정한다
- 예측해야할 값, 예측 값만 존재한다
- Eg) 집 값
Train set & Test set
- 레이블이 있냐 없냐로 구분 된다
- Training set (x_train, y_train) : 모델이 학습을 하기 위한 데이터. feature 와 label 모두 존재
- Test set (x_test) : 예측하기 위한 데이터. feature 만 존재
과대적합 / 과소적합
- Overfitting : 테스트에 너무 적합하게 학습되어 예측성이 떨어지는 상태
- Underfitting : 테스트셋으로 학습이 덜 되어있는 상태
- 학습을 시키면 training error는 계속 떨어지지만, testing error는 떨어지다가 다시 올라간다
$\quad\rightarrow$ 둘 다 저점인 지점이 optimum!
Validation Set
- training set에서 80% : 20% 정도로 데이터를 나눠놓는다
- 80%의 train set으로 학습시킨다
- validation set으로 검증해나가면서 validation error가 올라가는 시점이 가장 좋은 시점이라고 판단한다
- 학습할 때 절대 validation set이 관여하면 안된다
전처리 (Pre-processing)
전처리를 왜 하는가?
- Garbage in, Garbage out!
- 데이터 분석에 적합하게 데이터를 가공 / 변형 / 처리 / 클리닝
- DB엔지니어가 하는 경우도 있고, 분석가가 하는 경우도 있음 -> 난 다 할끄야!
전처리 과정
- 이상치
- 정규화 (Normalization) : 0~1 사이의 분포로 조정
- MinMaxScalar
- 표준화 (Standardization) : 평균을 0, 표준편차를 1로 맞춤
- StandardScalar
- 샘플링 (Over/Under sampling)
- 피처 공학 (Feature Engineering)
- 피처 생성, 연산
- 구간 생성(binning), 스케일 변형 ...
sklearn.org 및 패스트캠퍼스 강의를 참고하여 작성했습니다