Măsurarea performanței modelului

Învățare supravegheată cu scikit-learn

George Boorman

Core Curriculum Manager, DataCamp

Măsurarea performanței modelului

  • În clasificare, acuratețea este o metrică frecvent utilizată

  • Acuratețe:

predicții corecte împărțite la numărul total de observații

Învățare supravegheată cu scikit-learn

Măsurarea performanței modelului

  • Cum măsurăm acuratețea?

  • S-ar putea calcula acuratețea pe datele folosite pentru antrenare

  • NU indică capacitatea de generalizare

Învățare supravegheată cu scikit-learn

Calcularea acurateței

date împărțite în set de antrenare și set de testare

Învățare supravegheată cu scikit-learn

Calcularea acurateței

antrenarea unui clasificator pe setul de antrenare

Învățare supravegheată cu scikit-learn

Calcularea acurateței

calcularea acurateței folosind setul de testare

Învățare supravegheată cu scikit-learn

Împărțire antrenare/testare

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
Învățare supravegheată cu scikit-learn

Complexitatea modelului

  • k mai mare = model mai puțin complex = poate cauza subajustare

  • k mai mic = model mai complex = poate duce la supraajustare

diagrame de dispersie cu granițele de decizie KNN pentru k=1, k=9 și k=18

Învățare supravegheată cu scikit-learn

Complexitatea modelului și supra/subajustare

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)
Învățare supravegheată cu scikit-learn

Vizualizarea rezultatelor

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()
Învățare supravegheată cu scikit-learn

Curba complexității modelului

grafic liniar al acurateței în funcție de numărul de vecini, în care acuratețea pe setul de antrenare și pe cel de testare scade pe măsură ce k crește

Învățare supravegheată cu scikit-learn

Curba complexității modelului

săgeată în graficul liniar indicând 13 vecini ca producând cea mai bună acuratețe pe setul de testare

Învățare supravegheată cu scikit-learn

Să exersăm!

Învățare supravegheată cu scikit-learn

Preparing Video For Download...