[Dacon 퇴근시간버스승차인원예측2등코드 issue]
Opened this issue · 2 comments
inh2613 commented
[퇴근시간버스승차인원예측] 2등 코드에 대한 질문이나 공유해주셨으면 하는 것들 올려주시면 됩니다👏
데이콘 코드공유 : https://dacon.io/competitions/official/229255/codeshare/594?page=1&dtype=recent&ptype=pub
liv0vil commented
데이터 전처리
데이터 전처리를 위한 사용자 함수에 대한 설명 ( 첫번째 Cell )
이번 코드는 데이터 전처리에 대한 부분이 정말 많네요!
함수를 비롯해서 새로 만든 column이 무엇을 의미하는지 정리하고자 작성합니다 !😁
2등 팀은 기존 21개의 column을 이용하여 새로운 column을 생성하고, 변환하는 과정을 진행
original train data (415423 × 21) |
- 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 : 각 시간대를 더하여 해당 시간대의 탑승·하차 인원 열 추가
- lat_long_create
- station_lat_long : 위도-경도 각각을 소수점 둘째자리에서 반올림하여 결합한 새로운 열
- station_lat_long2 : 위도-경도 각각을 소수점 셋째자리에서 반올림하여 결합한 새로운 열
- station_lat_long & station_lat_long2 -> LabelEncoder
- feature_combine
- bus_route_id_station_code : bus_route_id와 station_code 결합한 새로운 열
- bus_route_id_station_lat_long : bus_route_id와 station_lat_long 결합한 새로운 열
- 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'])
- 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
- 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로 증가된 것을 확인할 수 있음
liv0vil commented
import pdb; pdb.set_trace()
파이썬 디버거 입니다.
기존 VS에서의 빨간색 중단점처럼 디버깅 하고싶은 줄에 import pdb; pdb.set_trace()을 넣으면 디버깅이 가능합니다.
2등 코드 중 특히 사용자 함수 정의 부분인 첫번째 셀에서 많이 유용하게 사용하였습니다.
사용법은 아래 document를 첨부하겠습니다 !
https://docs.python.org/ko/3.7/library/pdb.html