วิธีการตีความรายงานการจำแนกประเภทใน sklearn (พร้อมตัวอย่าง)


เมื่อเราใช้ โมเดลการจัดหมวดหมู่ ในการเรียนรู้ของเครื่อง เราจะใช้เมตริกทั่วไปสามรายการเพื่อประเมินคุณภาพของโมเดล:

1. ความแม่นยำ : เปอร์เซ็นต์ของการทำนายเชิงบวกที่ถูกต้อง เปรียบเทียบกับการคาดการณ์เชิงบวกทั้งหมด

2. การเรียกคืน : เปอร์เซ็นต์ของการคาดการณ์เชิงบวกที่ถูกต้อง เปรียบเทียบกับผลบวกที่เกิดขึ้นจริงทั้งหมด

3. คะแนน F1 : ค่าเฉลี่ยฮาร์มอนิกถ่วงน้ำหนักของความแม่นยำและการเรียกคืน ยิ่งโมเดลอยู่ใกล้ 1 มากเท่าไร โมเดลก็ยิ่งดีเท่านั้น

  • คะแนน F1: 2* (ความแม่นยำ * การเรียกคืน) / (ความแม่นยำ + การเรียกคืน)

การใช้ตัวชี้วัดทั้งสามนี้ทำให้เราเข้าใจได้ว่าแบบจำลองการจำแนกประเภทที่กำหนดสามารถทำนายผลลัพธ์สำหรับ ตัวแปรตอบสนอง บางอย่างได้ดีเพียงใด

โชคดีที่เมื่อปรับโมเดลการจำแนกประเภทใน Python ให้เหมาะสม เราสามารถใช้ฟังก์ชัน การจำแนกประเภทรายงาน () จากไลบรารี sklearn เพื่อสร้างตัวชี้วัดทั้งสามนี้

ตัวอย่างต่อไปนี้แสดงวิธีใช้ฟังก์ชันนี้ในทางปฏิบัติ

ตัวอย่าง: วิธีใช้รายงานการจำแนกประเภทใน 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

ต่อไป เราจะสร้างกรอบข้อมูลที่มีข้อมูลของผู้เล่นบาสเก็ตบอล 1,000 คน:

 #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

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *