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를 사용해 요일과 시간의 원래 값을 알아낸다.