회귀(Regression) - Scaler, 파이프라인, 다항식 모델
[참조] 패스트캠퍼스 - 직장인을 위한 파이썬 데이터분석 올인원 패키지 Online.
Scaler
라이브러리 로드
from sklearn.preprocessing import StandardScaler, MinMaxScaler, RobustScaler
통계값 확인
x_train.describe()
StandardScaler
std_scaler = StandardScaler()
std_scaled = std_scaler.fit_transform(x_train)
round(pd.DataFrame(std_scaled).describe(), 2)
StandardScaler를 통해 평균값(mean) 0, 표준편차(std) 1로 맞추어준다.
MinMaxScaler
minmax_scaler = MinMaxScaler()
minmax_scaled = minmax_scaler.fit_transform(x_train)
round(pd.DataFrame(minmax_scaled).describe(), 2)
MinMaxScaler를 통해 min 값과 max 값을 0 ~ 1 사이 값으로 정규화 시켜준다.
RobustScaler
robust_scaler = RobustScaler()
robust_scaled = robust_scaler.fit_transform(x_train)
round(pd.DataFrame(robust_scaled).median(), 2)
중앙값(median)은 0, IQR(Inter Quartile Range)이 1이 되도록 변환해준다.
파이프라인
파이프라인 함수 로드
from sklearn.pipeline import make_pipeline
파이프라인 생성
elasticnet_pipeline = make_pipeline(
StandardScaler(),
ElasticNet(alpha=0.1, l1_ratio=0.2)
)
- Scaler 먼저 적용
- 모델 정의
학습 및 예측
elasticnet_pred = elasticnet_pipeline.fit(x_train, y_train).predict(x_test)
elasticnet_no_pipeline = ElasticNet(alpha=0.1, l1_ratio=0.2)
no_pipeline_pred = elasticnet_no_pipeline.fit(x_train, y_train).predict(x_test)
mse_eval('No Standard ElasticNet', elasticnet_pred, y_test)
Polynomial Features
Polynomial Features란 다항식 계수간의 상호작용을 통해 새로운 feature를 생성하는 것을 말한다. 예를들어 [a, b] feature에 degree=2라면 polynomial features는 [1, a, b, $a^2$, ab, $b^2$]이다.
PolynomialFeatures 함수 로드
from sklearn.preprocessing import PolynomialFeatures
Polynomial Features 생성
poly = PolynomialFeatures(degree=2, include_bias=False)
poly_features = poly.fit_transform(x_train)[0]
파이프라인 생성
poly_pipeline = make_pipeline(
PolynomialFeatures(degree=2, include_bias=False),
StandardScaler(),
ElasticNet(alpha=0.1, l1_ratio=0.2)
)
학습 및 예측
poly_pred = poly_pipeline.fit(x_train, y_train).predict(x_test)
mse_eval('Poly ElasticNet', poly_pred, y_test)
그림 처럼 큰 개선을 보여주는 것을 알 수 있다.
[참조] 패스트캠퍼스 - 직장인을 위한 파이썬 데이터분석 올인원 패키지 Online.
끝!