AI/MachineLearning

머신러닝 - 분류모델 (Confusion Matrix, Accuracy, Precision, Recall, F1_Score)

oaho 2023. 2. 21. 23:26
반응형
Confusion Matrix

 
 

 

  • TN(True Negative) : 예측값과 실제값이 모두 0으로 동일할 때, 즉 모델의 예측값이 정답이고 예측 대상이 0일 때
  • TP(True Positive) : 예측값과 실제값이 모두 0으로 동일할 때, 즉 모델의 예측값이 정답이고 예측 대상이 0일 때
  • FN(False Negative) : 실제값은 1이지만 예측값이 0으로, 모델의 예측값이 오답이고 예측값이 0으로 예측할 때
  • FP(False Positive) : 실제값은 0이지만 예측값이 1로, 모델의 예측값이 오답이고 예측값이 1을 예측할 때
     

 

분류모델 성능 평가 절차

 
1. x, y 분리, 2. 학습용, 평가용 데이터 분리방법이 회귀모델 분석방법이랑 같음(회귀모델에서 더 자세하게 설명함)

 

머신러닝 - LinearRegression

회귀 분석 절차 1) x, y 분리 target 변수 명확히 지정 target을 제외한 변수를 x 데이터프레임으로 선언 y 데이터프레임은 target변수만을 가짐 target = 'Ozone' x = data.drop(target, axis=1) y = data.loc[:, target] 2)

oaho.tistory.com

 
 
1. x, y 분리

target = 'ADMIT'
x = data.drop(target, axis=1)
y = data.loc[:,target]

 
이 데이터에서 'ADMIT' 값은 1 또는 0임 => 분류모델임
 
 
 
2. 학습용, 평가용 데이터 분리

from sklearn.model_selection import train_test_split

x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.3, random_state=1)

y_test는 시리즈 형태임
값을 불러오려면  =>y_test.values 




3. 모델링 

  • 알고리즘:KNeighborsClassifier

      1) 불러오기

from sklearn.neighbors import KNeighborsClassifier

    2) 선언하기

model = KNeighborsClssifier()

   3) 학습하기

model.fit(x_train, y_train)

  4) 예측하기

y_pred = model.predict(x_test)

 
 
3. 분류성능평가
 
1)Confusion Matrix

from sklearn.metrics import confusion_matrix

print(counfusion_matrix(y_test, y_pred))

=>이런 형태로 나옴

=> 결과해석 : 
TN : 실제값이 0 인데 예측 값이 0 => 76
FP : 실제값이 0 인데 예측 값이 1 => 8
FN : 실제값이 1 인데 예측 값이 0 => 16
TF : 실제값이 1 인데 예측 값이 1 => 50


 
2)Accuracy: 정확도

from sklearn.metrics import accuracy_score

=>전체 중에서 Psitive와 Negative로 정확히 예측한 (TN+ TP) 비율
 
Accuracy = (TN + TP) / (TN + FP + FN + TP)
 
 


 
 
3)Precision: 정밀도

from sklearn.metrics import precision_score

=>

=>[ 0으로 예측한 것중에서 실제 0인 비율, 1으로 예측한 것중에서 실제 1인 비율 ]
 

  • average = None -> 두개 값 나오기
  • average = 'weighted' -> 가중치 평균
  • average = 'binary' -> 기본값

 
precision = TP / (FP + TP)
 


 
 
4)Recall:재현율

from sklearn.metrics import recall_score

 
=> 실제 positive(FN + TP) 중에서 Positive로 예측한 비율
 
Recall = TP / (FN + TP)
 
     Specificity: 실제 Negative (TN + FP) 중에서Negative로 예측한 비율
 
 


 
 
5)F1_Score: 정밀도와 재현율의 조화 평균

from sklearn.metrics import f1_score

 


 
 
6)Classification Report

from sklearn.metrics import classification_report

=> 결과


 
 
분류모델 평가)

  • 0인지 1인지를 예측하는 것
  • 실제 값도 0과 1이고 예측 값도 0과 1임
  • 하지만 0을 1로 예측하거나 1을 0으로 예측할 수 있음
  • 예측 값이 실제 값과 많이 같을 수록 좋은 모델이라 할 수 있음

-> 정확히 예측한 비율로 모델 성능을 평가
 
 
 

반응형