•
scikit-learn의 sklearn.metrics.model_selection 메서드는 기본적으로 해당 모델의 default scoring function을 사용하여 성능을 측정한다.
•
간혹 스스로 scoring function을 만들어서 cross-validation score를 측정하고 싶은 경우가 있는데, 이 경우에는 scoring 파라미터에 아래 조건을 만족하는 함수를 넘겨주면 된다.
scoring 함수 만들기
•
scoring 함수의 조건은 아래와 같다. 간단하다.
1.
fn(estimator, X, y) 형태의 signature를 가진다.
2.
Scalar value 하나를 리턴한다.
예시
•
Symmetric mean absolute percentage error (SMAPE)를 scoring에 사용하고 싶다면, 아래와 같이 scoring function을 정의 후 넘겨주면 된다.
def smape(target, pred):
mask = (target != 0)| (pred != 0)
t, p = target[mask], pred[mask]
return 200 / len(t) * (np.abs(t - p) / (np.abs(t) + np.abs(p))).sum()
def smape_score(estimator, X, y):
y_hat = estimator.predict(X)
return smape(y, y_hat)
from sklearn.model_selection import cross_val_score
from sklearn.ensemble import RandomForestRegressor
#
# Assume X and y are somehow defined here.
#
model = RandomForestRegressor()
cross_val_score(model, X, y, scoring=smape_score) # Pass scoring funciton itself.
Python
복사