더북(TheBook)

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

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
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.