AI/ML(패스트 캠퍼스) - 정확도(accuracy)의 함점

 

정확도만을 성능의 지표로 삼으면 안되는 이유

Scikit-learn : 분류 - 정확도(accuracy)의 함점


# 유방암 환자 데이터 세트
# target : 0 = 악성종양, 1 = 양성종양
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split

cancer = load_breast_cancer()
print(cancer["DESCR"])

'''츨략
생략...
'''

# 데이터 프레임을 만들기 위한 사전 작업
data = cancer["data"]
target = cancer["target"]
feature_names = cancer["feature_names"]

# 데이터 프레임
df = pd.DataFrame(data=data, columns=feature_names)
df["target"] = cancer["target"]

pos = df.loc[df["target"] == 1]
neg = df.loc[df["target"] == 0]

# 양성 환자 데이터 357개에 악성환자 데이터 5개를 추가하여 샘플 데이터를 만든다.
sample = pd.concat([pos, neg[:5]], sort=True)
x_train, x_valid, y_train, y_valid = train_test_split(sample.drop("target", 1), sample["target"], random_state=42)

from sklearn.linear_model import LogisticRegression

model = LogisticRegression()
model.fit(x_train, y_train)
pred = model.predict(x_valid)

(pred == y_valid).mean()

'''출력
0.978021978021978
'''

# 무조건 악성 환자로 예측하는 경우가 더 정확도가 높게 나왔음
my_prediction = np.ones(shape=y_valid.shape)
(my_prediction == y_valid).mean()

'''출력
0.989010989010989
'''