rueki
평가 - 정확도(Accuracy) 본문
728x90
반응형
머신러닝의 프로세스
1. 데이터 가공 / 변환
2. 모델 학습 / 예측
3. 평가
정확도 : 실제 데이터에서 예측 데이터가 얼마나 같은지를 판단하는 지표
정확도(Accuracy) = 예측 결과가 동일한 데이터 건수 / 전체 예측 데이터 건수
모델예측 성능을 직관적으로 나타내는 평가지표이다.
그러나 데이터의 구성에 따라 ML 모델의 성능을 왜곡 받을 수 있다.
캐글의 타이타닉 예제에서 성별로만 예측을 하면 정확도가 얼마나 나오는지 확인해보자.
from sklearn.base import BaseEstimator
class MydummyClassifier(BaseEstimator):
def fit(self, X, y=None):
pass
def predict(self, X):
pred = np.zeros((X.shape[0],1))
for i in range(X.shape[0]):
if X['Sex'].iloc[i] == 1:
pred[i] = 0
else:
pred[i] = 1
return pred
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
titanic_df = pd.read_csv('train.csv')
y_titanic_df = titanic_df['Survived']
X_titanic_df = titanic_df.drop('Survived',axis=1)
X_titanic_df = transform_features(X_titanic_df)
X_train, X_test, y_train, y_test = train_test_split(X_titanic_df, y_titanic_df, test_size=0.2, random_state=0)
myclf = MydummyClassifier()
myclf.fit(X_train, y_train)
mypredictions = myclf.predict(X_test)
print('Dummy Classifier의 정확도는 : {0:.4f}'.format(accuracy_score(y_test,mypredictions)))
# Dummy Classifier의 정확도는 : 0.7877
단순히 성별로만 예측을 진행했는데도 78%라는 높은 수치가 나온다.
정확도는 불균형한 레이블 값 분포에서 ML성능을 판단할 경우, 적합한 평가 지표가 아니다.
즉, 정확도는 불균형한 레이블 데이터 세트에서 성능 수치로 사용되서는 안 되며, 이의 단점을 해결한 것이
오차행렬 (Confusion Matrix) 이다.
728x90
반응형
'머신러닝 > 파이썬 머신러닝 완벽가이드 정리' 카테고리의 다른 글
평가 - 오차 행렬(Confusioin matrix) (0) | 2020.01.26 |
---|---|
Feature Scaling - Standardization(표준화) / Normalization(정규화) (0) | 2020.01.21 |
Comments