본문 바로가기
Data Science

파이썬을 이용한 AutoML 사용법

by 호기심 많은 직장인 2022. 6. 3.
728x90
728x90

오늘은 파이썬에서 편리하게 사용할 수 있는 머신러닝 기법인 AutoML에 대해서 알아보자!!!!

AutoML은 한마디로 정의하면, 머신러닝 기법들의 성능을 한번에 비교하고 최적의 기법을 선택할 수 있다.

너무나 간편하지 않나!!!????

 

사용법도 간단하다. 

 

- 우선 다음과 같이 필요한 라이브러리를 import 해준다. 

import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
from matplotlib import font_manager, rc
rc('font', family='HCR Dotum')
from sklearn.metrics import mean_squared_error
from sklearn.metrics import mean_absolute_error

- 예제데이터로 boston 데이터를 이용하여 AutoML을 진행해보겠다.

from pycaret.datasets import get_data
from pycaret.regression import * # automl 라이브러리(회귀)

boston = get_data('boston') # 보스턴 데이터 불러오기

exp_name = setup(data = boston,  target = 'medv')
best_model = compare_models() # 디폴드 모델들
 

타겟변수만 설정해주면, 손쉽게 다음과 같이 디폴트로 설정된 머신러닝 모델들의 성능들을 비교할 수 있다. 

 

- 사용자가 직접 원하는 모델과 성능평가 기준으로 모델들을 비교할 수도 있다

# estimator 지정
# 원하는 모델들 중 RMSE가 가장 낮은 3개
compare_models(include = ['lr', 'lasso', 'ridge', 'en', 'br', 'huber', 'kr', 'svm', 'knn', 'dt', 'rf', 'et', 'ada', 'gbr', 'mlp', 'lightgbm'],sort = 'RMSE', n_select = 3)

- 상위 2개의 모델을 선정 후 최적의 하이퍼파라미터 튜닝을 해보자.

# Default
best_2 = compare_models(sort = 'RMSE', n_select = 2)
tuned_best2 = [tune_model(i, search_library="scikit-optimize") for i in best_2]
tuned_best2
 
 

- 이뿐만 아니라 보팅, 스태킹 등 모델의 성능을 높일 수 있는 추가적인 기법들도 사용 가능하다.

blender = blend_models(tuned_best2) # 보팅
stacker = stack_models(tuned_best2) # 스태킹
best_rmse_model = automl(optimize = 'RMSE')

- 그림으로 확인해보자.(보팅)

# 그림으로 예측결과 확인
import matplotlib.patches as patches
fig, sub= plt.subplots(figsize = (5, 5))
sub.scatter(predict_model(blender)["medv"], predict_model(blender)["Label"], lw = 1., ec = 'k', fc = 'None', alpha = .75)
sub.add_patch(patches.Rectangle((0, 0),60,60,edgecolor = 'red',fill=False) )
sub.plot([0,60],[0,60], ls="-", c=".3")
sub.set_xlabel('True')
sub.set_ylabel('Pred')
 
 
 

- 그림으로 확인해보자.(스태킹)

# 그림으로 예측결과 확인
import matplotlib.patches as patches
fig, sub= plt.subplots(figsize = (5, 5))
sub.scatter(predict_model(stacker)["medv"], predict_model(stacker)["Label"], lw = 1., ec = 'k', fc = 'None', alpha = .75)
sub.add_patch(patches.Rectangle((0, 0),60,60,edgecolor = 'red',fill=False) )
sub.plot([0,60],[0,60], ls="-", c=".3")
sub.set_xlabel('True')
sub.set_ylabel('Pred')
 
 
 
 

- 그림으로 확인해보자.(최고모델)
# 그림으로 예측결과 확인
import matplotlib.patches as patches
fig, sub= plt.subplots(figsize = (5, 5))
sub.scatter(predict_model(best_rmse_model)["medv"], predict_model(best_rmse_model)["Label"], lw = 1., ec = 'k', fc = 'None', alpha = .75)
sub.add_patch(patches.Rectangle((0, 0),60,60,edgecolor = 'red',fill=False) )
sub.plot([0,60],[0,60], ls="-", c=".3")
sub.set_xlabel('True')
sub.set_ylabel('Pred')
 
 

이상 간단하게 파이썬을 이용한 AutoML에 대해서 알아보았다. 자세한 내용은 아래 링크를 남겨두었으니 참고하면 된다!

다음엔 또 다른 내용으로 찾아오겠다!

 

 

https://pycaret.gitbook.io/docs/get-started/quickstart#regression

728x90
728x90

댓글