연속형 변수의 경우 예측모델링, 범주형 변수의 경우 분류모델링을 수행
대표적인 예측모델링 :
1. 선형회귀
2. 랜덤포레스트 회귀
3. 그레디언트 부스팅 회귀
4. 익스트림 그레디언트 부스팅 회귀
# 모델링 과정은
1. slearn라이브러리의 metrics 모듈에서 필요한 평가함수를 가져온 후
2. 평가함수를 호출하여 평가 기준에 따른 수치적인 결과를 확인
y_test의 값과 모델을 통해 구한 y_test의 예측값을 비교분석하는 과정이 필요
1. 선형회귀
y절편과 각 독립변수별로 도출된 기울기 값을 확인할 수 있음
from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(x_train, y_train)
y_train_predicted = model.predict(x_train)
y_test_predicted = model.predict(x_test)
- y절편
print(model.intercept_)
- 독립변수들의 각 기울기값 구하기 : 회귀계수 값
print(model.coef_)
- 평가지표 :
MAE(Mean Absolute Error) : 실제값과 예측값 차이를 절댓값으로 변환 후 평균 계산
MSE(Mean Squared Error) : 실제값과 예측값 차이를 제곱하여 평균 계산
RMSE (Root Mean Squared Error) : MSE의 제곱근
결정계수(R^2) : 실제값 분산과 예측값 분산의 비율, 1에 가까울 수록 정확도 높음
- 선형회귀분석 모델에서 결정계수 구하기
print(model.score(x_train, y_train))
print(model.score(x_test, y_test))
- sklearn의 metrics 모듈 활용하여 결정계수, MAE, MSE, 제곱근 구하기
<결정계수>
from sklearn.metrics import r2_score
print(r2_score(y_train, y_train_predicted))
print(r2_score(y_test, y_test_predicted))
<MAE : mean_absolute_error >
from sklearn.metrics import mean_absolute_error
print(mean_absolute_error(y_test, y_test_predicted))
<MSE : mean_squared_error >
from sklearn.metrics import mean_squared_error
print(mean_squared_error(y_test, y_test_predicted))
<RMSE : root_mean_squared_error >
import numpy as np
print(np.sqrt(mean_squared_error(y_test, y_test_predicted)))
2. 랜덤포레스트 회귀
무작위 다수 트리를 만들어 투표에 의해서 값을 결정하는 방식
- 모델만들기
from sklearn.ensemble import RandomForestRegressor
model = RandomForestRegressor(random_state=10)
model.fit(x_train, y_train)
y_train_predicted = model.predict(x_train) // 학습을 시킬때는 X값을 넣고 Y값을 확인
y_test_predicted = model.predict(x_test) // 결과를 검증할 때도 Test X값을 넣고 예측한 Y값을 확인
- 평가하기
from sklearn.metrics import r2_score, mean_squared_error, mean_absolute_error
print(r2_score(y_train, y_train_predicted)) // 평가할 때는 학습시킨 Y값과 예측한 Y값을 확인
print(r2_score(y_test, y_test_predicted))
print(mean_squared_error(y_test, y_test_predicted))
print(mean_absolute_error(y_test, y_test_predicted))
- MAE의 하이퍼파라미터 설정
from sklearn.ensemble import RandomForestRegressor
model = RandomForestRegressor(n_estimators = 1000, criterion='absolute_error', random_state=10)
model.fit(x_train, y_train)
y_train_predicted = model.predict(x_train)
y_test_predicted = model.predict(x_test)
3. 그레디언트 부스팅 회귀
여러개의 결정나무를 묶어서 강력한 모델을 만드는 앙상블 기법
결정나무에서 발생한 오차를 보완하여 새로운 트리를 만들기 때문에 보다 높은 정확도를 기대
- 모델만들기
from sklearn.ensemble import GradientBoostingRegressor
model= GradientBoostingRegressor(random_state=10)
model.fit(x_train, y_train)
y_train_predicted = model.predict(x_train)
y_test_predicted = model.predict(x_test)
- 평가하기
from sklearn.metrics import r2_score, mean_squared_error, mean_absolute_error
print(r2_score(y_train, y_train_predicted))
print(r2_score(y_test, y_test_predicted))
print(mean_squared_error(y_test, y_test_predicted))
print(mean_absolute_error(y_test, y_test_predicted))
4. 익스트림 그레디언트(XGB) 부스팅 회귀
다수의 약한 분류기를 묶어서 정확도를 향상시키는 방법
- 모델만들기
from xgboost import XGBRegressor
model = XGBRegressor(random_state=10)
model.fit(x_train, y_train)
y_train_predicted = model.predict(x_train)
y_test_predicted = model.predict(x_test)
- 평가하기
from sklearn.metrics import r2_score, mean_squared_error, mean_absolute_error
print(r2_score(y_train, y_train_predicted))
print(r2_score(y_test, y_test_predicted))
print(mean_squared_error(y_test, y_test_predicted))
print(mean_absolute_error(y_test, y_test_predicted))