Menu
CoddyTech

Оценка модели

Часть раздела Обучение с учителем путешествия по Machine Learning на Coddy. Урок 4 из 58.

Хороша ли модель? Об этом говорит её точность — доля тестовых строк, для которых она дала правильный ответ. Сравни её с ленивой догадкой:

Точность двух моделей на 50 тестовых займах: если всегда угадывать, что платёж будет вовремя, результат — 0.78, у модели k-NN — 0.88

78% займов в тестовой выборке этой библиотеки были возвращены вовремя, поэтому ответ «вовремя» в каждом случае даёт оценку 0.78. Это базовый уровень.

from sklearn.metrics import accuracy_score

pred = model.predict(X_test)
print(accuracy_score(y_test, pred))
print(model.score(X_test, y_test))
common = y_train.value_counts().index[0]
print((y_test == common).mean())

Это выводит 0.88, 0.88, 0.78. score делает предсказания и подсчёт за один вызов; базовая модель всегда отвечает меткой, которая чаще всего встречается в обучающих данных.

Модель заслуживает места, только если превосходит базовый уровень.

challenge icon

Задание

Легко

Датчики пчеловода следят за 160 ульями в hives.csv; swarm показывает, роился ли каждый улей. Может ли один датчик предупредить её? Стартовый код считывает название датчика и обучает модель только на данных этого датчика.

  1. Выведи точность на тестовой выборке, округлённую до 3 знаков после запятой.
  2. Выведи базовый уровень, указав метку, которую модель всегда предсказывает.
  3. Выведи, превосходит ли его модель.

Для другой пасеки и weight_change_kg:

Model on weight_change_kg: 0.775
Always "no": 0.7
Beats the baseline: yes

Попробуйте сами

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier

# Одна строка на каждый улей: показания его датчиков и сведения о том, роился ли он
hives = pd.read_csv("hives.csv")
sensor = input()
X = hives[[sensor]]
y = hives["swarm"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)
model = KNeighborsClassifier()
model.fit(X_train, y_train)

# Напишите свой код ниже
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Обучение с учителем

Потренируйтесь самостоятельно: Онлайн-компилятор Python