정확도

from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split
from sklearn.base import BaseEstimator
from sklearn.metrics import accuracy_score
import numpy as np
import pandas as pd
class MyFakeClassifier(BaseEstimator):
def fit(self, X ,y):
pass
#입력값으로 들어오는 X데이터 세트의 크기만큼 모두 0값으로 만들어서 반환
def predict(self, X):
return np.zeros((len(X),1),dtype=bool)
#사이킷런의 내장 데이터 세트인 load_digits()를 이용해 MNIST 데이터 로딩
digits=load_digits()
#digits 번호가 7번이면 True이고 이를 astype(int)로 1로 변환, 7번이 아니면 False이고 0으로 변환.
y = (digits.target == 7).astype(int)
X_train, X_test, y_train, y_test = train_test_split(digits.data, y, random_state=11)
print('레이블 테스트 세트 크기 : ',y_test.shape)
print('테스트 세트 레이블 0과 1의 분포도')
print(pd.Series(y_test).value_counts())
fakeclf=MyFakeClassifier()
fakeclf.fit(X_train,y_train)
fakepred = fakeclf.predict(X_test)
print('모든 예측을 0으로 하여도 정확도는: {:.3f}'.format(accuracy_score(y_test,fakepred)))
오차 행렬(confusion matrix, 혼동행렬)

TN: 예측값을 Negative 값 0으로 예측, 실제 값 역시 Negative 값 0
FP: 에측값을 Positive 값 1로 예측, 실제 값은 Negative 0
FN: 에측값을 Negative 값 0으로 예측, 실제 값은 Positive 1
TP: 에측값을 Positive 값 1로 예측, 실제 값은 Negative 1
정확도 = 예측 결과와 실제 값이 동일한 건수/전체 데이터 수
= (TN + TP)/(TN + FP + FN + TP)
정밀도와 재현율