이번 글에서는 모델의 quality를 측정하는 방법에 대해 배웁니다.
(모델의 quality는 모델 improvement를 위해서 꼭 필요하다고 생각합니다.)
error = actual - predicted
MAE는 에러에 절대값을 적용하고 그 값들의 평균을 의미합니다.
코드로 구현하면 아래와 같습니다.
from sklearn.metrics import mean_absolute_error
predicted_home_prices = melbourne_model.predict(X)
mean_absolute_error(y, predicted_home_prices)
모델을 학습 시키기 위해서 사용한 데이터를 활용하여 정확도를 측정하는 것은 비상식적입니다.
따라서 전체 데이터 중 일부 데이터를 뽑아내어 테스트 데이터로 활용합니다. 이러한 데이터를 validation data라고 합니다.
sklearn
에서는 주어진 데이터를 학습 데이터 & 테스트 데이터로 나눠주는 train_test_split
이 있습니다.
from sklearn.model_selection import train_test_split
train_X, valid_X, train_y, valid_y = train_test_split(X, y, random_state=0)
train_X
, train_y
로 모델을 학습시키고, valid_X
, valid_y
로 모델의 quality를 평가합니다.
from sklearn.model_selection import train_test_split
train_X, val_X, train_y, val_y = train_test_split(X, y, random_state=1)
iowa_model = DecisionTreeRegressor(random_state=1)
iowa_model.fit(train_X, train_y)
val_predictions = iowa_mode.predict(val_X)
아래 코드 & 결과는 valdation data(5개)의 예측된 Price 값과 실제 Price 값 비교를 눈으로 확인하기 위함입니다.
# print the top few validation predictions
print(val_predictions[:5])
# print the top few actual prices from validation data
print(val_y.head())
from sklearn.metrics import mean_absolute_error
val_mae = mean_absolute_error(val_y, val_predictions)
위 결과 val_mae
는 29652.931506849316
값을 가집니다.
해당 값은 모델의 성능이 좋다는 건지 나쁘다는 건지 아직은 모릅니다. 다음 차시에서 배우도록 합시당