혼동 행렬
Coddy Machine Learning 여정의 지도 학습 섹션에 포함된 레슨. 58개 중 21번째.
정확도는 실수의 종류가 아니라 실수의 수를 셉니다. 독감 검사에서는 아픈 환자를 집으로 돌려보내는 것이 오진보다 훨씬 더 심각합니다. 혼동 행렬은 각 종류의 실수를 셉니다:
독감은 양성 클래스인 1입니다. 오분류는 대각선 바깥에 있습니다. 거짓 양성(잘못된 경보)과 거짓 음성(놓친 사례)입니다.
from sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay
cm = confusion_matrix(y_test, pred) # 실제값이 먼저
print(cm)
print(cm[1, 0]) # 행 1: 독감에 걸림, 열 0: 건강하다고 예측함
ConfusionMatrixDisplay.from_predictions(y_test, pred, display_labels=["healthy", "flu"],
ax=ax, colorbar=False) # 색상 막대 없음: 건수만으로도 알 수 있음다음과 같이 출력됩니다:
[[50 3]
[ 5 42]]
5이 장에서는 놓친 사례를 나타내는 셀을 줄이는 방법을 다룹니다. 거의 아무도 놓치지 않는 선별 검사를 살펴보며 마무리합니다.
챌린지
중급이안류가 형성될 수 있는 아침에는 인명구조요원에게 경보가 전송됩니다. 시작 코드에서는 경보 모델을 학습시키고 테스트 대상 아침의 pred를 채웁니다 (1은 이안류를 의미합니다).
- 혼동 행렬을 만들고 아래와 같이 네 가지 개수를 출력하세요.
ax에 그리세요. 레이블은calm과rip으로 지정하고, 표시하세요.
다른 모델의 경우:
Rips caught: 30
Rips missed: 2
False alarms: 9
Calm days cleared: 59Coddy가 차트를 설명합니다. 파이프 누수 경보를 나타낸 다음 차트처럼 보여야 합니다:
직접 해보기
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay
# 서핑 해변의 매일 아침을 한 행으로 기록: rip의 1은 그날 이안류가 발생했음을 의미합니다
beach = pd.read_csv("rips.csv")
features = ["wave_height_m", "wave_period_s", "wind_kmh", "tide_change_m"]
X = beach[features]
y = beach["rip"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)
# 인명구조원의 이안류 경보
model = LogisticRegression(max_iter=1000)
model.fit(X_train, y_train)
pred = model.predict(X_test)
fig, ax = plt.subplots()
ax.set_title("Rip Current Alerts")
# 아래에 코드를 작성하세요
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
지도 학습의 모든 레슨
직접 연습해 보세요: 온라인 Python 컴파일러