Měření výkonu modelu

Supervised Learning with scikit-learn

George Boorman

Core Curriculum Manager, DataCamp

Měření výkonu modelu

  • V klasifikaci se běžně používá metrika přesnosti (accuracy)

  • Přesnost:

správné predikce vydělené celkovým počtem pozorování

Supervised Learning with scikit-learn

Měření výkonu modelu

  • Jak měříme přesnost?

  • Lze ji spočítat na datech použitých k trénování klasifikátoru

  • NEVYPOVÍDÁ o schopnosti generalizovat

Supervised Learning with scikit-learn

Výpočet přesnosti

data rozdělená na trénovací a testovací sadu

Supervised Learning with scikit-learn

Výpočet přesnosti

trénování klasifikátoru na trénovací sadě

Supervised Learning with scikit-learn

Výpočet přesnosti

výpočet přesnosti pomocí testovací sady

Supervised Learning with scikit-learn

Rozdělení na trénovací a testovací sadu

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 with scikit-learn

Složitost modelu

  • Větší k = jednodušší model = může způsobit underfitting

  • Menší k = složitější model = může vést k overfittingu

bodové grafy zobrazující rozhodovací hranice KNN pro k=1, k=9 a k=18

Supervised Learning with scikit-learn

Složitost modelu a 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 with scikit-learn

Vizualizace výsledků

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 with scikit-learn

Křivka složitosti modelu

spojnicový graf přesnosti v závislosti na počtu sousedů, kde přesnost trénovací i testovací sady klesá s rostoucím k

Supervised Learning with scikit-learn

Křivka složitosti modelu

šipka ve spojnicovém grafu ukazující na 13 sousedů jako hodnotu s nejlepší přesností na testovací sadě

Supervised Learning with scikit-learn

Pojďme si procvičit!

Supervised Learning with scikit-learn

Preparing Video For Download...