본문 바로가기
두두 IT/머신런닝(ML)

머신러닝 모델 테스트

by DoDo's 2026. 5. 17.
반응형

1. 머신러닝 모델 테스트 (이론)

[이론: 시험을 보고 정답을 맞춰보자!] 이전 시간(11강)에 인공지능 모델(선형회귀)에게 70%의 문제지(X_train)와 정답지(y_train)를 주고 학습을 시켰습니다. 이제 이 모델이 진짜 실력이 있는지 평가해야 합니다.

  1. 시험 보기 (Predict): 숨겨두었던 모의고사 문제지(X_test)를 모델에게 주어 답을 풀어보게 합니다. 모델이 제출한 답안지를 보통 y_pred (Prediction, 예측값)라고 부릅니다.
  2. 채점 하기 (Compare): 모델이 푼 답안지(y_pred)와 우리가 원래 가지고 있던 실제 정답지(y_test)를 나란히 놓고 비교합니다. 두 숫자의 차이가 적을수록 똑똑한 모델입니다!

2. 코드 및 상세 주석

이전 시간에 모델을 학습(fit)시킨 직후부터 이어지는 코드입니다.

Python
 
import pandas as pd
from sklearn.linear_model import LinearRegression

# (이전 강좌 생략) 데이터 분할 및 모델 학습이 완료되었다고 가정합니다.
# regressor.fit(X_train, y_train)

# --- [오늘의 핵심: 모델 테스트 및 예측] ---

# 1. 모델에게 모의고사 문제지(X_test)를 주고 답을 예측하게 합니다.
# .predict() 함수를 사용합니다. (정답지 y_test는 절대 주면 안 됩니다!)
y_pred = regressor.predict(X_test)

# 2. 모델이 제출한 예측값(y_pred) 살짝 들여다보기
# y_pred는 넘파이 배열(Numpy Array) 형태로 결과가 나옵니다.
print("--- 모델이 예측한 지연 시간 (y_pred) 상위 5개 ---")
print(y_pred[:5])

# 3. 우리가 가지고 있던 실제 정답지(y_test)와 비교해보기
print("\n--- 실제 실제 지연 시간 (y_test) 상위 5개 ---")
print(y_test.head())

# --- 🔥 (튜터의 보충 학습: 숫자로 정확하게 채점하기) ---
# 눈으로 수만 개의 답을 일일이 비교할 수 없으니, 사이킷런의 채점 기능을 사용합니다.
from sklearn.metrics import mean_absolute_error, r2_score

# MAE (Mean Absolute Error): 실제 정답과 예측값이 평균적으로 몇 '분' 차이 나는지 계산
mae = mean_absolute_error(y_test, y_pred)

# R2 Score (결정계수): 1에 가까울수록 모델이 예측을 완벽하게 한다는 뜻 (0~1 사이)
r2 = r2_score(y_test, y_pred)

print("\n--- 📊 최종 모델 성적표 ---")
print(f"평균 오차(MAE): 약 {mae:.2f}분")
print(f"모델 설명력(R2 Score): {r2:.2f}")

3. 실행 후 결과 값 (예시)

위 코드를 실행하면 아래와 같은 결과를 볼 수 있습니다. (데이터에 따라 숫자는 다를 수 있습니다.)

Plaintext
 
--- 모델이 예측한 지연 시간 (y_pred) 상위 5개 ---
[[ 13.5 ]   <-- 1번 비행기는 13.5분 지연될 거야!
 [ -2.1 ]   <-- 2번 비행기는 2.1분 일찍 도착할 거야!
 [ 20.8 ]
 [  5.2 ]
 [ 45.1 ]]

--- 실제 실제 지연 시간 (y_test) 상위 5개 ---
      ARR_DELAY
1023       15.0   <-- (실제 정답: 15분) 오, 1.5분 차이로 꽤 비슷하게 맞췄네요!
441        -5.0   <-- (실제 정답: -5분) 일찍 도착하는 방향성은 맞췄으나 시간 차이가 조금 납니다.
2031       25.0
15         10.0
8990       45.0   <-- 꽤 큰 지연인데 정확하게 맞췄네요!

--- 📊 최종 모델 성적표 ---
평균 오차(MAE): 약 12.35분
모델 설명력(R2 Score): 0.15

💡 튜터의 마무리 핵심 요약!

  1. regressor.fit(X_train, y_train) : 모델아, 공부 좀 해! (학습)
  2. y_pred = regressor.predict(X_test) : 모델아, 모의고사 문제 풀어봐! (예측)
  3. mean_absolute_error(y_test, y_pred) : 정답지랑 모델 답안지랑 비교해서 점수 좀 내줘! (평가)

머신러닝은 기본적으로 [학습 -> 예측 -> 평가] 라는 3박자 리듬으로 돌아갑니다. 영상에서는 두 값을 "비교한다"라고 뭉뚱그려 넘어갔지만, 실무에서는 제가 추가해 드린 MAE, R2 Score 같은 평가 지표(Metrics)를 사용해 수치화하여 모델의 성능을 판단한다는 점! 꼭 기억해 주세요. 🚀

반응형