Machine Learning Project

데이콘 대회 참여 - 제주 신용카드 데이터 경진대회 피벗테이블 작성

강의 홍보

공지

  • 본 포스트는 필자의 수업을 듣는 사람들을 위해 작성하였습니다.

I. 구글 드라이브와 Colab과 연동

  • 구글 드라이브와 Colab과 연동하면 보다 쉽게 데이터에 접근할 수 있다.
  • 구글 인증만 하면 된다.
# Google Drive와 마운트
from google.colab import drive
ROOT = '/content/drive'
drive.mount(ROOT)

(1) 데이터 다운로드

(2) 구글 드라이브에 다운로드 받은 폴더를 올린다.

  • 이 때, 경로통일을 위해 Colab Notebooks/python_elice/dacon/data로 경로 지정을 한다.
# Project Folder 연결
from os.path import join  

MY_GOOGLE_DRIVE_PATH = 'My Drive/Colab Notebooks/python_elice/dacon/data'
PROJECT_PATH = join(ROOT, MY_GOOGLE_DRIVE_PATH)
print(PROJECT_PATH)
/content/drive/My Drive/Colab Notebooks/python_elice/dacon/data
  • 아래 코드를 반드시 실행시켜야 해당 경로로 이동된다.
%cd "{PROJECT_PATH}"
/content/drive/My Drive/Colab Notebooks/python_elice/dacon/data
  • 실제 업로드된 데이터가 있는지 확인한다.
!ls
201901-202003.csv  submission.csv
  • 만약 에러가 발생이 되면 경로가 잘못 지정된 것이니, 폴더 경로를 재확인한다.
  • 경로에러가 발생할 시, 숙련자는 수정이 바로 가능하지만, 비숙련자는 가급적 [런타임 초기화]를 클릭한 후, 처음부터 다시 실행시키는 것을 추천한다.

(3) 데이터 불러오기

  • 지난주간 과제로 내주었던 판다스 데이터를 불러오도록 한다.
  • 시간이 다소 소요될 수 있다.
import pandas as pd
train = pd.read_csv("201901-202003.csv")
train.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 24697792 entries, 0 to 24697791
Data columns (total 12 columns):
 #   Column        Dtype 
---  ------        ----- 
 0   REG_YYMM      int64 
 1   CARD_SIDO_NM  object
 2   CARD_CCG_NM   object
 3   STD_CLSS_NM   object
 4   HOM_SIDO_NM   object
 5   HOM_CCG_NM    object
 6   AGE           object
 7   SEX_CTGO_CD   int64 
 8   FLC           int64 
 9   CSTMR_CNT     int64 
 10  AMT           int64 
 11  CNT           int64 
dtypes: int64(6), object(6)
memory usage: 2.2+ GB

(4) 데이터 샘플링

  • 전체 데이터를 시각화 등 사용하면 시각화 시, 다소 느리게 출력될 수 있으니, 연습 차원에서는 가급적 샘플링 기법을 적용해서 데이터를 재정한다.
  • 1000개의 데이터만 객체로 저장한다.
sample_train = train.sample(n=100000, random_state=1)
  • 원 데이터와 샘플 데이터의 행의 크기를 비교한다.
len(train)
24697792
len(sample_train)
100000
  • 물론, 위 샘플을 조금 늘려도 좋긴하지만, 가급적 시각화 코드가 모두 작성이 된 이후에 해보는 것을 추천한다.

II. 과제 - 피벗테이블

  • 판다스 패키지를 활용한다.
  • AMT는 매출 데이터이다.
  • 과제 1. 시도별 매출 데이터의 피벗테이블을 작성한다.
  • 과제 2. 업종별 매출 데이터의 피벗테이블을 작성한다.
  • 마지막 과제 3. 시도별-업종별 매출 데이터의 피벗테이블을 작성한다.
  • (옵션), 날짜별로 매출 데이터의 피벗테이블을 작성한다.

(공통) 판다스 피벗 테이블

  • 가장 좋은 교재는 메뉴얼이다.
  • 주요 파라미터는 다음과 같다.
    • data: DataFrame
    • values: Column to aggregate
    • index: column, array or list
    • aggfunc: function, list of functions, dict, default numpy.mean

(1) 시도별 매출 데이터

  • 시도별 매출 데이터의 피벗테이블을 작성한다.
pd.pivot_table(sample_train,                        # 데이터
               index='CARD_SIDO_NM',                # 기준변수
               values = 'AMT',                      # 타겟변수
               aggfunc="sum")                       # 산술식
  • 결과를 확인한다.

(2) 업종별 매출 데이터의 피벗테이블

  • 이번에는 업종별 피벗테이블을 작성해본다.
pd.pivot_table(sample_train,                        # 데이터
               index='STD_CLSS_NM',                 # 기준변수
               values = 'AMT',                      # 타겟변수
               aggfunc="sum")                       # 산술식
  • 결과를 확인한다.

(3) 시도별-업종별 매출 데이터의 피벗테이블

  • 이 때에는 피벗테이블에서 상위 5개의 데이터만 출력하도록 한다.
  • 표시될 행이 많아야 하기 때문에 아래와 같이 setting을 한다.
pd.set_option('display.max_rows', None)
pd.set_option('display.max_columns', None)
pd.set_option('display.width', None)
pd.set_option('display.max_colwidth', -1)
pivoted = pd.pivot_table(sample_train,                                   
                         index=['CARD_SIDO_NM', 'STD_CLSS_NM'],          
                         values = 'AMT',                               
                         aggfunc="sum")
pivoted\
.sort_values(['CARD_SIDO_NM', 'AMT'], ascending=[True, False])\
.groupby('CARD_SIDO_NM').head(5)\
.reset_index()\
.set_index(['CARD_SIDO_NM','STD_CLSS_NM'])

(4) 옵션-날짜별 매출 데이터의 피벗테이블

  • 이번에는 날짜별 매출 데이터의 피벗테이블 작성
pd.pivot_table(sample_train,                        # 데이터
               index='REG_YYMM',                    # 기준변수
               values = 'AMT',                      # 타겟변수
               aggfunc="sum")                       # 산술식

III. 과제 - 시각화

(1) 월별 막대그래프

  • 간단한 예제로 옵션-날짜별 매출 데이터의 피벗테이블을 작성한다.
pd.pivot_table(sample_train, index='REG_YYMM', values = 'AMT', aggfunc="sum").plot(kind='bar')                   

png

데이콘 대회 참여 - 제주 신용카드 데이터 경진대회 Colab with Drive

공지

  • 본 포스트는 필자의 수업을 듣는 사람들을 위해 작성하였습니다.

I. 구글 드라이브와 Colab과 연동

  • 구글 드라이브와 Colab과 연동하면 보다 쉽게 데이터에 접근할 수 있다.
  • 구글 인증만 하면 된다.
# Google Drive와 마운트
from google.colab import drive
ROOT = '/content/drive'
drive.mount(ROOT)
Go to this URL in a browser: https://accounts.google.com/o/oauth2/auth?client_id=947318989803-6bn6qk8qdgf4n4g3pfee6491hc0brc4i.apps.googleusercontent.com&redirect_uri=urn%3aietf%3awg%3aoauth%3a2.0%3aoob&response_type=code&scope=email%20https%3a%2f%2fwww.googleapis.com%2fauth%2fdocs.test%20https%3a%2f%2fwww.googleapis.com%2fauth%2fdrive%20https%3a%2f%2fwww.googleapis.com%2fauth%2fdrive.photos.readonly%20https%3a%2f%2fwww.googleapis.com%2fauth%2fpeopleapi.readonly

Enter your authorization code:
··········
Mounted at /content/drive

(1) 데이터 다운로드

(2) 구글 드라이브에 다운로드 받은 폴더를 올린다.

  • 이 때, 경로통일을 위해 Colab Notebooks/python_elice/dacon/data로 경로 지정을 한다.
# Project Folder 연결
from os.path import join  

MY_GOOGLE_DRIVE_PATH = 'My Drive/Colab Notebooks/python_elice/dacon/data'
PROJECT_PATH = join(ROOT, MY_GOOGLE_DRIVE_PATH)
print(PROJECT_PATH)
/content/drive/My Drive/Colab Notebooks/python_elice/dacon/data
  • 아래 코드를 반드시 실행시켜야 해당 경로로 이동된다.
%cd "{PROJECT_PATH}"
/content/drive/My Drive/Colab Notebooks/python_elice/dacon/data
  • 실제 업로드된 데이터가 있는지 확인한다.
!ls
201901-202003.csv  submission.csv
  • 만약 에러가 발생이 되면 경로가 잘못 지정된 것이니, 폴더 경로를 재확인한다.
  • 경로에러가 발생할 시, 숙련자는 수정이 바로 가능하지만, 비숙련자는 가급적 [런타임 초기화]를 클릭한 후, 처음부터 다시 실행시키는 것을 추천한다.

(3) 데이터 불러오기

  • 지난주간 과제로 내주었던 판다스 데이터를 불러오도록 한다.
  • 시간이 다소 소요될 수 있다.
import pandas as pd
train = pd.read_csv("201901-202003.csv")
train.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 24697792 entries, 0 to 24697791
Data columns (total 12 columns):
 #   Column        Dtype 
---  ------        ----- 
 0   REG_YYMM      int64 
 1   CARD_SIDO_NM  object
 2   CARD_CCG_NM   object
 3   STD_CLSS_NM   object
 4   HOM_SIDO_NM   object
 5   HOM_CCG_NM    object
 6   AGE           object
 7   SEX_CTGO_CD   int64 
 8   FLC           int64 
 9   CSTMR_CNT     int64 
 10  AMT           int64 
 11  CNT           int64 
dtypes: int64(6), object(6)
memory usage: 2.2+ GB

(4) 데이터 샘플링

  • 전체 데이터를 시각화 등 사용하면 시각화 시, 다소 느리게 출력될 수 있으니, 연습 차원에서는 가급적 샘플링 기법을 적용해서 데이터를 재정한다.
  • 1000개의 데이터만 객체로 저장한다.
sample_train = train.sample(n=1000, random_state=1)
  • 원 데이터와 샘플 데이터의 행의 크기를 비교한다.
len(train)
24697792
len(sample_train)
1000
  • 물론, 위 샘플을 조금 늘려도 좋긴하지만, 가급적 시각화 코드가 모두 작성이 된 이후에 해보는 것을 추천한다.

II. 과제 - 피벗테이블

  • 판다스 패키지를 활용한다.
  • AMT는 매출 데이터이다.
  • 과제 1. 시도별 매출 데이터의 피벗테이블을 작성한다.
  • 과제 2. 업종별 매출 데이터의 피벗테이블을 작성한다.
  • 마지막 과제 3. 시도별-업종별 매출 데이터의 피벗테이블을 작성한다.
  • (옵션), 날짜별로 매출 데이터의 피벗테이블을 작성한다.

III. 과제 - 시각화

IV. 분석 Report 작성

데이콘 대회 참여 - 03 데이터 샘플링과 종속변수 로그변환

공지

제 수업을 듣는 사람들이 계속적으로 실습할 수 있도록 강의 파일을 만들었습니다. 늘 도움이 되기를 바라며. 참고했던 교재 및 Reference는 꼭 확인하셔서 교재 구매 또는 관련 Reference를 확인하시기를 바랍니다.

사전작업

!pip install https://github.com/pandas-profiling/pandas-profiling/archive/master.zip
Collecting https://github.com/pandas-profiling/pandas-profiling/archive/master.zip
  Using cached https://github.com/pandas-profiling/pandas-profiling/archive/master.zip
.
.
.
Successfully built pandas-profiling

I. 빅쿼리 연동

  • 지난 시간에 데이콘에서 내려받은 데이터를 빅쿼리에 넣는 작업을 진행하였다.
  • 빅쿼리에 저장된 데이터를 구글 코랩으로 불러오려면 다음과 같이 진행한다.

(1) 사용자 계정 인증

구글 코랩을 사용해서 인증 절차를 밟도록 한다. 아래 소스코드는 변경시키지 않는다. 아래 절차대로 진행하면 된다. Gmail 인증 절차와 비슷하다.

데이콘 대회 참여 - 02 GBM을 활용한 머신러닝 예제

공지

제 수업을 듣는 사람들이 계속적으로 실습할 수 있도록 강의 파일을 만들었습니다. 늘 도움이 되기를 바라며. 참고했던 교재 및 Reference는 꼭 확인하셔서 교재 구매 또는 관련 Reference를 확인하시기를 바랍니다.

개요

  • 본 예제에서는 제주 빅데이터 경진대회에서 제공하는 베이스라인 코드를 살려서 작성하였다.
  • 처음 대회를 입문하는 데 있어서, 빠르게 제출하는 것에 의미부여를 하기 바란다.
  • 다만, 데이터를 불러오는 영역 및 머신러닝 모형 알고리즘만 조금 수정하였다.
  • 향후 매일 업데이트 하면서 일종의 가이드라인이 되었으면 좋겠다.

I. 빅쿼리 연동

(1) 사용자 계정 인증

구글 코랩을 사용해서 인증 절차를 밟도록 한다. 아래 소스코드는 변경시키지 않는다. 아래 절차대로 진행하면 된다. Gmail 인증 절차와 비슷하다.

데이콘 대회 참여 - 01 제주시 빅데이터 카드 매출 경진대회 데이터 수집 및 저장

I. 개요

  • 본 과정은 직업훈련기관 수업의 일환으로 진행하였음
  • 수강생들이 기본적으로 어려워하는 클라우드 DB연동부터 구현하여 빠르게 EDA를 활용할 수 있도록 진행함
  • DBBigQuery를 활용함.

(1) 대회 참여 및 파일 다운로드 상세

  • 데이콘은 국내 빅데이터 경진대회이다.

(2) 대회 개요

Ref. https://dacon.io/competitions/official/235615/overview/

  • 주제

    • AI 알고리즘 활용 카드 사용 금액 예측
  • 목표

    • 신용카드 사용 내역 데이터를 활용한 지역별, 업종별 월간 카드 사용 총액 예측
  • 배경

    • 신용카드 사용량을 분석을 통한 ‘Post COVID-19 시대’ 신용카드 사용량 예측 모델 개발
    • 지역 경제 위축 및 중소상공인 경영난 해소를 위한 대책 마련
  • 주최/주관