Sejong-Kaggle-Challengers/MAIN

[Dacon 퇴근시간버스승차인원예측2등코드 issue]

Opened this issue · 2 comments

[퇴근시간버스승차인원예측] 2등 코드에 대한 질문이나 공유해주셨으면 하는 것들 올려주시면 됩니다👏

데이콘 코드공유 : https://dacon.io/competitions/official/229255/codeshare/594?page=1&dtype=recent&ptype=pub

데이터 전처리

데이터 전처리를 위한 사용자 함수에 대한 설명 ( 첫번째 Cell )

이번 코드는 데이터 전처리에 대한 부분이 정말 많네요!
함수를 비롯해서 새로 만든 column이 무엇을 의미하는지 정리하고자 작성합니다 !😁


2등 팀은 기존 21개의 column을 이용하여 새로운 column을 생성하고, 변환하는 과정을 진행

train
original train data (415423 × 21)
  1. base_preprocessing
    • bus_route_id : 뒷자리 0000 제거 후 정수형 변환 (ex. 4270000 -> 427)
    • station_name2 : station_name의 앞 두 글자만 사용한 열 추가 (ex. 제주, 한라)
    • station_name : 공백 제거
    • station_name2 & station_name -> LabelEncoder
    • data -> day, week, weekday 열 추가하여 세분화
    • 6-8, 6-9, 6-10 : 각 시간대를 더하여 해당 시간대의 탑승·하차 인원 열 추가
  2. lat_long_create
    • station_lat_long : 위도-경도 각각을 소수점 둘째자리에서 반올림하여 결합한 새로운 열
    • station_lat_long2 : 위도-경도 각각을 소수점 셋째자리에서 반올림하여 결합한 새로운 열
    • station_lat_long & station_lat_long2 -> LabelEncoder
  3. feature_combine
    • bus_route_id_station_code : bus_route_id와 station_code 결합한 새로운 열
    • bus_route_id_station_lat_long : bus_route_id와 station_lat_long 결합한 새로운 열
  4. day_agg
    • 각 시간대 별 탑승·하차와 day 간의 mean에 대한 열 추가 (ex. day_mean_6~7_ride)
    ride_take = ['6~7_ride', '7~8_ride', '8~9_ride', '9~10_ride', '10~11_ride', '11~12_ride', '6~7_takeoff', '7~8_takeoff', '8~9_takeoff', '9~10_takeoff', '10~11_takeoff', '11~12_takeoff']
    
    ride_take += ['6~8_ride', '6~9_ride', '6~10_ride', '6~8_takeoff', '6~9_takeoff', '6~10_takeoff']
    
    train, test = day_agg(tr, te, merge_columns=['day'], columns=ride_take, aggs=['mean'])
  5. sub_day_agg (ex. bus_route_id_day_6~7_ride_mean)
    • 각 시간대 별 탑승·하차와 (merge_column + day) 간의 mean에 대한 열 추가
    train, test = sub_day_agg(tr, te, merge_columns=['bus_route_id', 'station_code', 'station_lat_long'], date_columns=['day'], columns=ride_take, aggs=['mean'])
    # bus_route_id_day : 427_1 과 6~7_ride 간의 mean
    #       bus_route_id_day    6~7_ride
    # 0          427_1            0.0
    # 1          427_1            1.0
    # 2          427_1            1.0
  6. frequency_encoding : 빈도수에 대해 encoding한 column 추가
    category_features = ['bus_route_id', 'station_code', 'station_name', 'station_name2', 'station_lat_long', 'station_lat_long2', 'bus_route_id_station_code', 'bus_route_id_station_lat_long']
    • 각 category_feature의끼리 빈도수에 대해 새로 mapping한 column의 이름을 ~_freq_enc로 추가

전처리 과정을 거치면 21 columns 에서 188 columns로 증가된 것을 확인할 수 있음

import pdb; pdb.set_trace()


파이썬 디버거 입니다.

기존 VS에서의 빨간색 중단점처럼 디버깅 하고싶은 줄에 import pdb; pdb.set_trace()을 넣으면 디버깅이 가능합니다.

2등 코드 중 특히 사용자 함수 정의 부분인 첫번째 셀에서 많이 유용하게 사용하였습니다.

사용법은 아래 document를 첨부하겠습니다 !
https://docs.python.org/ko/3.7/library/pdb.html