Оцінювання якості моделі

Кероване навчання зі scikit-learn

George Boorman

Core Curriculum Manager, DataCamp

Оцінювання якості моделі

  • У класифікації точність — поширена метрика

  • Точність:

правильні передбачення, поділені на загальну кількість спостережень

Кероване навчання зі scikit-learn

Оцінювання якості моделі

  • Як виміряти точність?

  • Можна обчислити на даних, на яких навчали класифікатор

  • Але це НЕ показує здатності до узагальнення

Кероване навчання зі scikit-learn

Обчислення точності

поділ даних на навчальну та тестову вибірки

Кероване навчання зі scikit-learn

Обчислення точності

навчання класифікатора на навчальній вибірці

Кероване навчання зі scikit-learn

Обчислення точності

обчислення точності на тестовій вибірці

Кероване навчання зі scikit-learn

Поділ на train/test

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
Кероване навчання зі scikit-learn

Складність моделі

  • Більше k = простіша модель → можливий недонавчання

  • Менше k = складніша модель → можливе перенавчання

точкові діаграми з межами рішень KNN для k=1, k=9 і k=18

Кероване навчання зі scikit-learn

Складність і пере-/недонавчання

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)
Кероване навчання зі 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()
Кероване навчання зі scikit-learn

Крива складності моделі

лінійний графік «точність vs кількість сусідів», де точність train і test зменшується зі зростанням k

Кероване навчання зі scikit-learn

Крива складності моделі

стрілка на графіку вказує на 13 сусідів як найкращу точність на тесті

Кероване навчання зі scikit-learn

Давайте потренуємось!

Кероване навчання зі scikit-learn

Preparing Video For Download...