Sklearn에서 분류 보고서를 해석하는 방법(예제 포함)


기계 학습에서 분류 모델을 사용할 때 세 가지 공통 측정항목을 사용하여 모델 품질을 평가합니다.

1. 정확도 : 전체 긍정적 예측 대비 올바른 긍정적 예측의 비율입니다.

2. 재현율(Recall) : 전체 실제 긍정 대비 올바른 긍정 예측의 비율입니다.

3. F1 점수 : 정밀도와 재현율의 가중 조화 평균입니다. 모델이 1에 가까울수록 더 좋은 모델입니다.

  • F1 점수: 2* (정밀도 * 재현율) / (정밀도 + 재현율)

이 세 가지 지표를 사용하면 특정 분류 모델이 특정 응답 변수 에 대한 결과를 얼마나 잘 예측할 수 있는지 이해할 수 있습니다.

다행히 Python에서 분류 모델을 피팅할 때 sklearn 라이브러리의 classification_report() 함수를 사용하여 이러한 세 가지 측정항목을 생성할 수 있습니다.

다음 예에서는 이 기능을 실제로 사용하는 방법을 보여줍니다.

예: sklearn에서 분류 보고서를 사용하는 방법

이 예에서는 포인트와 어시스트를 사용하여 1,000명의 대학 농구 선수가 NBA에 드래프트될지 여부를 예측하는 로지스틱 회귀 모델을 적용합니다.

먼저 Python에서 로지스틱 회귀를 수행하는 데 필요한 패키지를 가져옵니다.

 import pandas as pd
import numpy as np
from sklearn. model_selection import train_test_split
from sklearn. linear_model import LogisticRegression
from sklearn. metrics import classification_report

다음으로, 1000명의 농구 선수 정보를 포함하는 데이터 프레임을 생성하겠습니다.

 #make this example reproducible
n.p. random . seeds (1)

#createDataFrame
df = pd. DataFrame ({' points ': np. random . randint (30, size=1000),
                   ' assists ': np. random . randint (12, size=1000),
                   ' drafted ': np. random . randint (2, size=1000)})

#view DataFrame
df. head ()

	points assists drafted
0 5 1 1
1 11 8 0
2 12 4 1
3 8 7 0
4 9 0 0

참고 : 값이 0 이면 선수가 드래프트되지 않았음을 나타내고 값이 1 이면 선수가 드래프트되었음을 나타냅니다.

다음으로 데이터를 훈련 세트와 테스트 세트로 분할하고 로지스틱 회귀 모델을 피팅합니다.

 #define the predictor variables and the response variable
X = df[[' points ', ' assists ']]
y = df[' drafted ']

#split the dataset into training (70%) and testing (30%) sets
X_train,X_test,y_train,y_test = train_test_split (X,y,test_size=0.3,random_state=0)  

#instantiate the model
logistic_regression = LogisticRegression()

#fit the model using the training data
logistic_regression. fit (X_train,y_train)

#use model to make predictions on test data
y_pred = logistic_regression. predict (X_test)

마지막으로 classification_report() 함수를 사용하여 모델의 분류 측정항목을 인쇄합니다.

 #print classification report for model
print (classification_report(y_test, y_pred))

              precision recall f1-score support

           0 0.51 0.58 0.54 160
           1 0.43 0.36 0.40 140

    accuracy 0.48 300
   macro avg 0.47 0.47 0.47 300
weighted avg 0.47 0.48 0.47 300

결과를 해석하는 방법은 다음과 같습니다.

설명 : 모델에서 자신이 드래프트될 것이라고 예측한 모든 선수 중 실제로는 43% 만이 드래프트되었습니다.

알림 : 실제로 드래프트된 모든 선수 중에서 모델은 그 중 36% 에 대해서만 이 결과를 정확하게 예측했습니다.

F1 점수 : 이 값은 다음과 같이 계산됩니다.

  • F1 점수: 2* (정밀도 * 재현율) / (정밀도 + 재현율)
  • F1 점수: 2*(.43*.36)/(.43+.36)
  • F1 등급: 0.40 .

이 값은 1에 매우 가깝지 않기 때문에 모델이 선수가 드래프트될지 여부를 제대로 예측하지 못한다는 것을 알 수 있습니다.

지원 : 이 값은 단순히 테스트 데이터 세트의 각 클래스에 속한 플레이어 수를 알려줍니다. 테스트 데이터 세트의 플레이어 중 160명은 드래프트되지 않았고 140명은 드래프트 되었음을 알 수 있습니다.

참고 : classification_report() 함수에 대한 전체 문서는 여기에서 찾을 수 있습니다.

추가 리소스

다음 자습서에서는 Python에서 분류 모델을 사용하는 방법에 대한 추가 정보를 제공합니다.

Python에서 로지스틱 회귀를 수행하는 방법
Python에서 혼동 행렬을 만드는 방법
Python에서 균형 잡힌 정밀도를 계산하는 방법

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다