더북(TheBook)

3.10 결과 분석

신경망 훈련을 마쳤다. 이제 테스트 데이터셋에 예측을 수행하고 정확도를 분석하자. 우선 테스트 데이터셋에서 무작위로 샘플을 뽑아 요금을 예측하는 함수를 만들자.

def predict_random(df_prescaled, X_test, model):
    sample = X_test.sample(n=1, random_state=np.random.randint(low=0, high=10000))
    idx = sample.index[0]
    actual_fare = df_prescaled.loc[idx,'fare_amount']
    day_names = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
    day_of_week = day_names[df_prescaled.loc[idx,'day_of_week']]
    hour = df_prescaled.loc[idx,'hour']
    predicted_fare = model.predict(sample)[0][0]
    rmse = np.sqrt(np.square(predicted_fare-actual_fare))
    print("Trip Details: {}, {}:00hrs".format(day_of_week, hour))
    print("Actual fare: ${:0.2f}".format(actual_fare))
    print("Predicted fare: ${:0.2f}".format(predicted_fare))
    print("RMSE: ${:0.2f}".format(rmse))

predict_random 함수는 테스트 데이터셋에서 무작위로 로우를 하나 뽑아 모델에 전달하고 예측값을 산출한다. 그런 다음 예측 결과의 RMSE를 계산해 출력한다. 앞서 3.7절에서 변환한 변수 값들을 그대로 출력(예를 들어, 요일 변수를 -0.018778로 출력)하면 읽을 수 없으므로 df_prescaled를 사용해 요일과 시간의 원래 값을 알아낸다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.