본문 바로가기
IT 자격증/빅데이터분석기사

예측모델링

by _><- 2022. 5. 21.
반응형

연속형 변수의 경우 예측모델링, 범주형 변수의 경우 분류모델링을 수행

대표적인 예측모델링 : 

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))

 

반응형

'IT 자격증 > 빅데이터분석기사' 카테고리의 다른 글

분류모델링  (0) 2022.05.31
분류모델링  (0) 2022.05.31
학습데이터와 테스트데이터 분리하기  (0) 2022.05.20
조건문으로 파생변수 만들기  (0) 2022.05.20
데이터 크기변환  (0) 2022.05.19