본문 바로가기
Generalist/data science

Pycaret을 사용한 간단한 머신러닝 모델 구축 프로젝트

by 홍원 2022. 6. 13.

Pycaret이란?

scikit- learn 패키지를 기반으로, 자동으로 머신러닝 모델을 만들어 주는 파이썬 라이브러리.

몇줄의 코딩으로 쉽게 모든 모델 비교, 하이퍼파라미터 튜닝등을 할 수 있다.

머신러닝 모델 구축에 항상 어려움이 있었다면 Pycaret을 적극적으로 활용해보자!


데이터 준비

전자상거래 웹사이트 내 거래 데이터를 사용해 불법거래를 예측하는 기계학습 모델을 구축하기 위해

Electronica 전자제품 판매 사이트에서 제공된 유저의 첫번째 트렌젝션 정보 데이터(Fraud_Data)를 사용

- user_id : 유저 아이디

- signup_time : 유저가 계정을 생성 시각

- purchase_time : 유저가 상품을 구매한 시각

- device_id : 트랜젝션별 고유한 디바이스 아이디

- source : 유저가 웹사이트에 접속한 경로

- browser : 유저가 사용한 인터넷 브라우저

- sex : 유저의 성별

- age : 유저의 나이

- ip_address : 유저의 IP 주소

- class : 사기거래 여부 (정상거래 : 0, 사기거래 : 1)


EDA

  • 'purchase_time' 과 'signup_time' 열의 '월'을 추출하여  class 별 히스토그램 그리기 - 'p_mth','s_mth' 열 생성

히스토그램

각각 1월에 가장 사기거래(주황색) 빈도가 높음

 

  • 'purchase_time' 과 'signup_time' 열의 '일'을 기준으로 두 데이트타임의 차를 구함 -  'DTH' 열 생성

히스토그램

가입하자마자 구매했을 경우 사기거래의 빈도가 높았음

 

  • device_id 별 user_id 의 수를 구하여 class 값 확인 - 'd_ct' 열 생성
  • ip_address별 user_id 의 수를 구하여 class 값 확인 - 'ip_ct' 열 생성
d_ct, ip_ct 의 class값 확인 - 피벗테이블
 

각각 동일 디바이스, 아이피로 유저 아이피가 생성되었을 경우 그 수가 많을 수록 사기거래의 빈도가 높음


분석 데이터 셋 확인

  • EDA를 통해 생성한 열과 class 열을 사용하여 분석 데이터 셋 구축 - output.csv 파일로 생성

분석 데이터 셋

 


Pycaret 설치 및 기초 설정

import numpy as np #넘파이 임포트
import pandas as pd #판다스 임포트
!pip install pycaret -q #파이케럿 설치
!pip install markupsafe==2.0.1 -q #html markup #문자열의 이스케이프 처리를 안전하게 해주는 패키지 설치
!pip install Jinja2 #파일을 html로 만들어주는 패키지 설치

from pycaret.utils import enable_colab
enable_colab() #코랩에서 사용 가능하도록 pycaret.utils 임포트

from pycaret.classification import * #파이케럿의 분류 모델을 모두 임포트

from google.colab import drive
drive.mount('/content/drive') #본인 구글 드라이브 마운트

%cd /content/drive/MyDrive/Colab Notebooks/ #경로 설정

data = pd.read_csv('output.csv') #분석용 데이터 셋 불러오기

- Pycaret 사용을 위한 설치 패키지와 분석용 데이터 셋을 불러옴


모델링

1. SETUP

exp = setup(data, silent=False, target='class',numeric_features=['d_ct', 'ip_ct'], normalize=True)
#데이터 : data
#타겟 : class 열
#numeric_features : d_ct, ip_ct 열을 숫자형 열로 인식 시키기 위해 설정 (안할시 카테고리 열로 인식함)

위 코드를 통해 분석 세팅을 하면 Pycaret이 아래 결과처럼 자동으로 세팅

setup 결과

2. 모델 비교

compare_models()

파이케럿의 가장 강력한 기능인 compare_models를 사용하여 위 기초설정에서 import 한 분류 모델을 모두 비교

모델 비교

- gbc 모델이 가장 정확도가 높았음(0.9566). - 간단하게 모든 머신러닝 모델의 성능을 비교 성공

 

3. 모델 생성

model = create_model('gbc')

gbc 모델 생성

tuned_model = tune_model(model)

생성한 모델의 하이퍼 파라미터 튜닝 역시 간단하게 할 수 있습니다.

튜닝 결과

AUC가 튜닝을 통해 개선되었습니다.

 

4. 성능 확인

plot_model사용 하여 성능 확인 까지 간단하게 가능합니다.


이번 글에서는 Pycaret 을 사용하여 간단하게 머신러닝 모델 구축 하였습니다.

Pycaret 정말 좋네요 최고입니다!

더 자세한 분석 및 모델링이 궁금하다면 아래 링크에서 확인해 주세요! 

EDA  및 모델링 과정(블랜딩 기법), 성능 비교(비용고려)를 활용한 방법을 깃허브에 공개하였습니다.

 

https://github.com/hongwon2/Python-Practice/blob/main/%EC%82%AC%EA%B8%B0%EA%B5%AC%EB%A7%A4%EB%A5%BC_%EC%98%88%EC%B8%A1%ED%95%B4%EB%B3%B4%EC%9E%90.ipynb

 

GitHub - hongwon2/Python-Practice: 데이터분석을 위한 파이썬 연습 레파지토리입니다.

데이터분석을 위한 파이썬 연습 레파지토리입니다. Contribute to hongwon2/Python-Practice development by creating an account on GitHub.

github.com

 
 
 

 

 

'Generalist > data science' 카테고리의 다른 글

가짜뉴스 분류 모델(RNN, LSTM, GRU, CNN-LSTM)  (1) 2022.12.11

댓글