การวัดประสิทธิภาพของโมเดล

Supervised Learning ด้วย scikit-learn

George Boorman

Core Curriculum Manager, DataCamp

การวัดประสิทธิภาพของโมเดล

  • ในการจำแนกประเภท ความแม่นยำเป็นเมตริกที่นิยมใช้

  • ความแม่นยำ:

การทำนายที่ถูกต้องหารด้วยจำนวนการสังเกตทั้งหมด

Supervised Learning ด้วย scikit-learn

การวัดประสิทธิภาพของโมเดล

  • วัดความแม่นยำอย่างไร?

  • คำนวณความแม่นยำจากข้อมูลที่ใช้ฝึกตัวจำแนกได้

  • ไม่สะท้อนความสามารถในการ generalize

Supervised Learning ด้วย scikit-learn

การคำนวณความแม่นยำ

การแบ่งข้อมูลออกเป็นชุดฝึกและชุดทดสอบ

Supervised Learning ด้วย scikit-learn

การคำนวณความแม่นยำ

การฝึกตัวจำแนกด้วยชุดข้อมูลฝึก

Supervised Learning ด้วย scikit-learn

การคำนวณความแม่นยำ

คำนวณความแม่นยำโดยใช้ชุดข้อมูลทดสอบ

Supervised Learning ด้วย scikit-learn

การแบ่งข้อมูลฝึก/ทดสอบ

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=21, stratify=y)
knn = KNeighborsClassifier(n_neighbors=6)
knn.fit(X_train, y_train)
print(knn.score(X_test, y_test))
0.8800599700149925
Supervised Learning ด้วย scikit-learn

ความซับซ้อนของโมเดล

  • k มาก = โมเดลซับซ้อนน้อย = อาจเกิด underfitting

  • k น้อย = โมเดลซับซ้อนมาก = อาจเกิด overfitting

กราฟ scatter แสดง decision boundary ของ KNN สำหรับ k=1, k=9 และ k=18

Supervised Learning ด้วย scikit-learn

ความซับซ้อนของโมเดลและ over/underfitting

train_accuracies = {}
test_accuracies = {}
neighbors = np.arange(1, 26)

for neighbor in neighbors:
knn = KNeighborsClassifier(n_neighbors=neighbor)
knn.fit(X_train, y_train)
train_accuracies[neighbor] = knn.score(X_train, y_train) test_accuracies[neighbor] = knn.score(X_test, y_test)
Supervised Learning ด้วย scikit-learn

การพล็อตผลลัพธ์

plt.figure(figsize=(8, 6))
plt.title("KNN: Varying Number of Neighbors")
plt.plot(neighbors, train_accuracies.values(), label="Training Accuracy")
plt.plot(neighbors, test_accuracies.values(), label="Testing Accuracy")
plt.legend()
plt.xlabel("Number of Neighbors")
plt.ylabel("Accuracy")
plt.show()
Supervised Learning ด้วย scikit-learn

เส้นโค้งความซับซ้อนของโมเดล

กราฟเส้นแสดงความแม่นยำเทียบกับจำนวน neighbor โดยความแม่นยำของชุดฝึกและชุดทดสอบลดลงเมื่อ k เพิ่มขึ้น

Supervised Learning ด้วย scikit-learn

เส้นโค้งความซับซ้อนของโมเดล

ลูกศรในกราฟเส้นชี้ไปที่ 13 neighbor ซึ่งให้ความแม่นยำของชุดทดสอบสูงสุด

Supervised Learning ด้วย scikit-learn

มาฝึกกันเถอะ!

Supervised Learning ด้วย scikit-learn

Preparing Video For Download...