이번에도 특징 공학 과정을 한 번에 처리하는 헬퍼 함수를 정의하자. 이처럼 코드를 모듈화하면 관리하기 쉽다.

    def feature_engineer(df):
        # 연, 월, 일, 요일, 시간 칼럼을 새로 만든다
        def create_time_features(df):
            df['year'] = df['pickup_datetime'].dt.year
            df['month'] = df['pickup_datetime'].dt.month
            df['day'] = df['pickup_datetime'].dt.day
            df['day_of_week'] = df['pickup_datetime'].dt.dayofweek
            df['hour'] = df['pickup_datetime'].dt.hour
            df = df.drop(['pickup_datetime'], axis=1)
            return df
        # 유클리드 거리를 계산하는 함수
        def euc_distance(lat1, long1, lat2, long2):
            return(((lat1-lat2)**2 + (long1-long2)**2)**0.5)
        # 이동 거리 칼럼을 추가한다
        def create_pickup_dropoff_dist_features(df):
            df['travel_distance'] = euc_distance(df['pickup_latitude'], df['pickup_longitude'], df['dropoff_latitude'], df['dropoff_longitude'])
            return df
        # 공항과 거리 칼럼을 추가한다
        def create_airport_dist_features(df):
            airports = {'JFK_Airport': (-73.78,40.643), 'Laguardia_Airport': (-73.87, 40.77), 'Newark_Airport' : (-74.18, 40.69)}
            for airport in airports:
                df['pickup_dist_' + airport] = euc_distance(df['pickup_latitude'], df['pickup_longitude'], airports[airport][1], airports[airport][0])
                df['dropoff_dist_' + airport] = euc_distance(df['dropoff_latitude'], df['dropoff_longitude'], airports[airport][1], airports[airport][0])
            return df
        df = create_time_features(df)
        df = create_pickup_dropoff_dist_features(df)
        df = create_airport_dist_features(df)
        df = df.drop(['key'], axis=1)
        return df
    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.