2021. 7. 13. 17:43 ㆍ개발 이야기/머신러닝(딥러닝)
안녕하세요. 해커의 개발일기 입니다.
지난 번에 회귀분석 과정을 주제로 한 글을 작성했었는데요.
https://bourbonkk.tistory.com/112
관련해서 머신러닝의 일부인 회귀분석(Regression)과 분류(Classification)의 기초적인 내용을 다뤄보려고 합니다.
회귀분석과, 분류는 지도학습에 포합되는 기계학습의 과정인데요 사전적 정의는 아래와 같습니다.
회귀분석(Regression) : 종속변수에 영향을 주는 독립변수의 관계성을 찾아내는 분석
분류(Classification) : 여러 속성을 가진 데이터를 통계적으로 분류해내는 과정
먼저, 머신러닝에는 정말 다양한 모델이 존재하고 있는데요. 다루고 있는 데이터에 적합한 모델을 찾는 과정 중에 수 많은 모델을 일일이 대입해보는 것만으로도 상당한 기간을 소비해야할 수 있습니다.
회귀분석과 분류에 한해서 이러한 일련의 과정을 조금이나마 단축시켜줄 프로젝트를 소개해드리고자 합니다.
오늘 소개해드릴 Python 프로젝트는 수 많은 모델들의 결과를 한번에 도출해주는 LazyPredict 입니다. LazyPredict의 개요를 보면
https://lazypredict.readthedocs.io/en/latest/
Lazy Predict helps build a lot of basic models without much code and helps understand which models works better without any parameter tuning.
매개 변수의 조정, 즉 튜닝이 없고 Basic 모델을 이용했을 때, 어떤 모델이 더욱 잘 작동하는지 이해하는데 도움을 준다고 적혀있습니다. 목적에 걸맞게 Lazy Predict는 우리의 데이터가 어떤 모델을 이용했을 때, 좋은 결과를 얻어낼 수 있을지 확인이 필요한 경우, 사용하면 좋은 프로젝트입니다. 주의할 사항은 튜닝이 없기 때문에 LazyPredict를 이용해 나온 결과를 맹신하고 서비스를 하면 안된다는 점입니다.
자, 그러면 어떻게 사용할 수 있는지 알아보도록 하겠습니다. pip 을 이용해 lazypredict를 설치하겠습니다. 참고로 python 버전은 3.6을 사용했는데 최신 버전인 3.9를 사용했을 때, 의존성 문제가 발생해서 되도록이면 3.6을 사용하시는 것을 추천해드립니다.
pip install lazypredict
다음은 회귀분석과 분류에 사용되는 import 부분과 train과 test 데이터 set을 split해주는 라이브러리, 시각화를 해줄 라이브러리를 모두 import하겠습니다.
import numpy as np
from sklearn import datasets
from sklearn.utils import shuffle
from lazypredict.Supervised import LazyRegressor
from lazypredict.Supervised import LazyClassifier
from sklearn.model_selection import train_test_split
import dataframe_image as dfi
from matplotlib import pyplot as plt
모두 pip install 명령을 통해 다운로드하시면 되며, 사용하지 않으실 경우에는 다운로드하지 않으셔도 상관 없습니다.
먼저, 분류(Classification)의 코드입니다.
if __name__ == '__main__':
# Classification
data = datasets.load_breast_cancer()
X, y = data.data, data.target
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=.2, random_state=42)
clf = LazyClassifier(predictions=True)
models_classification, predictions_classification = clf.fit(X_train, X_test, y_train, y_test)
dfi.export(models_classification, './models_classification.png')
sklearn에 있는 데이트 데이터를 가져와 작성했고 test 데이터는 20%로 분리 해놓은 상태이며 LazyClassifier를 통해 분류기를 생성해 결과를 도출했습니다. 코드 실행 시 아래와 같은 결과가 생성되며, 보기 편하게 하기위해 이미지 형태로 출력했습니다.
상당히 많은 분류 모델이 있는 것을 확인할 수 있었습니다. 저의 경우에는 대부분이 처음보는 분류 알고리즘이었습니다. 정확도를 나타내는 Accuracy 부분을 확인하면 될 것 같습니다. 대부분 좋은 결과를 보여주었는데요. 여기에서 상위 몇 개의 모델을 정해서 튜닝 작업을 한다면, 최적의 분류 모델을 선정할 수 있을 것 같습니다.
다음은, 회귀 분석(Regression)입니다.
if __name__ == '__main__':
# Regression
boston = datasets.load_boston()
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=.2, random_state=42)
reg = LazyRegressor(verbose=0, ignore_warnings=False, custom_metric=None)
models_regression, predictions_regression = reg.fit(X_train, X_test, y_train, y_test)
dfi.export(models_regression, './models_regression.png')
LazyClassfier와 별반 다를것이 없는 코드입니다. 실행된 결과를 확인해보겠습니다.
역시나 상당히 많은 회귀분석 모델의 결과를 도출해 낸 것을 확인할 수있습니다. 이 부분도 마찬가지로 정확도 상위 몇개의 모델을 이용해 튜닝 과정을 거친다면 적합한 모델을 도출해 낼 수 있을 것 같습니다.
여기까지, 기본 모델 선정에 큰 도움을 줄 LazyPredict 프로젝트 소개였습니다. 이름에 걸맞게 Lazy people들에게 큰 도움을 줄 것 같습니다. 조금 더 디테일한 기능이 있을 수 있을지 모르겠지만, 블로그에서는 여기까지 다루겠습니다
'개발 이야기 > 머신러닝(딥러닝)' 카테고리의 다른 글
심화 데이터 분석 기법과 다양한 데이터 전처리 방법 (0) | 2024.11.07 |
---|---|
데이터 분석: 코드로 이해하는 과정과 방법 (0) | 2024.11.07 |
# 데이터 분석&머신러닝 플랫폼 - RapidMiner(래피드마이너) (0) | 2020.04.22 |
#3 인공신경망 동작 원리 - MLP(Multilayer Perceptron) (4) | 2020.02.12 |
#2 인공신경망 동작 원리 - 뉴런 (0) | 2020.02.06 |