전 과정과의 대표적인 차이점은 다음과 같다.
요약하면 오버피팅을 우려해 극단적인 데이터를 제거하고, 테스트 데이터에는 기록되지 않는 부정기편 관련 데이터를 삭제하였다. 또한, 1차에서는 제거했던 FLT 데이터를 다시 학습 데이에 추가하였다.
# 계획시간 및 실제시간간의 차이 계산
df_H1 = df['ATT_H'].loc[df['DLY'] == 1] - df['STT_H'].loc[df['DLY'] == 1]
df_H2 = df['ATT_H'].loc[(df['DLY'] == 1) & (df['DRR'] == 1)] - df['STT_H'].loc[(df['DLY'] == 1) & (df['DRR'] == 1)]
df_STT_Time = df['STT_H'] * 60 + df['STT_M']
df_ATT_Time = df['ATT_H'] * 60 + df['ATT_M']
df_H3 = df_ATT_Time - df_STT_Time
df['Time'] = df_H3
# 지연을 안했지만 지연사유가 있는 데이터, 약 900여개 지연사유 삭제
df['DRR'].loc[(df['DLY'] == 0) & (df['DRR'] != 0)] = 0
# 부정기편 삭제
df = df.loc[df['IRR'] == 0]
# 지연시간이 -180분이거나 300분 이상을 넘었을 경우 삭제
df = df.loc[(df['Time'] >= -180) & (df['Time'] < 300)]
# 계획 시간이 23시에서 1시사이 일 경우 삭제.(데이터 너무 적어 overfitting 우려)
df = df.loc[(df['STT_H'] != 0) & (df['STT_H'] != 1) & (df['STT_H'] != 23)]
# 전처리 후, 학습데이터로 사용되지 않는 모든 칼럼 삭제
df = df.drop(['STT_M', 'ATT_H', 'ATT_M'], axis = 1)
df = df.drop(['Time'], axis = 1)
# 출발 데이터와 도착 데이터로 2가지 학습 셋 준비
df_A = df.loc[df['AOD'] == 0]
df_D = df.loc[df['AOD'] == 1]
df_A = df_A.drop(['DRR', 'AOD', 'IRR'], axis = 1)
df_D = df_D.drop(['DRR', 'AOD', 'IRR'], axis = 1)