Mäta modellprestanda

Övervakad inlärning med scikit-learn

George Boorman

Core Curriculum Manager, DataCamp

Mäta modellprestanda

  • Inom klassificering är noggrannhet ett vanligt mått

  • Noggrannhet:

korrekta förutsägelser dividerat med totalt antal observationer

Övervakad inlärning med scikit-learn

Mäta modellprestanda

  • Hur mäter vi noggrannhet?

  • Kan beräkna noggrannhet på träningsdata

  • INTE ett tecken på förmåga att generalisera

Övervakad inlärning med scikit-learn

Beräkna noggrannhet

data delas upp i träningsset och testset

Övervakad inlärning med scikit-learn

Beräkna noggrannhet

tränar en klassificerare på träningssettet

Övervakad inlärning med scikit-learn

Beräkna noggrannhet

beräknar noggrannhet med testsettet

Övervakad inlärning med scikit-learn

Tränings- och testsplit

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
Övervakad inlärning med scikit-learn

Modellkomplexitet

  • Större k = enklare modell = kan leda till underanpassning

  • Mindre k = mer komplex modell = kan leda till överanpassning

spridningsdiagram som visar KNN-beslutsgränser för k=1, k=9 och k=18

Övervakad inlärning med scikit-learn

Modellkomplexitet och över-/underanpassning

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)
Övervakad inlärning med scikit-learn

Visualisera resultaten

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()
Övervakad inlärning med scikit-learn

Modellkomplexitetskurva

linjediagram över noggrannhet mot antal grannar, där både tränings- och testnoggrannhet minskar när k ökar

Övervakad inlärning med scikit-learn

Modellkomplexitetskurva

pil i linjediagrammet som pekar på 13 grannar som ger bäst noggrannhet på testsettet

Övervakad inlärning med scikit-learn

Nu kör vi en övning!

Övervakad inlärning med scikit-learn

Preparing Video For Download...