ПочатиПочніть безкоштовно

Оптимізація порога

Ви чули, що значення за замовчуванням 0,5 теоретично максимізує accuracy, але хочете перевірити це на практиці. Спробуйте кілька різних значень порога, щоб побачити, яку accuracy ви отримаєте, і визначити поріг із найкращим результатом. Повторіть експеримент для метрики F1. Чи є 0,5 оптимальним порогом? Чи збігаються оптимальні пороги для accuracy та для F1? З'ясуйте це! У вас є матриця scores, отримана під час оцінювання тестових даних. Еталонні мітки для тестових даних також доступні як y_test. Нарешті, попередньо завантажено дві функції numpy, argmin() та argmax(), які повертають індекси мінімального та максимального значень в масиві відповідно, а також метрики accuracy_score() і f1_score().

Ця вправа є частиною курсу

Проєктування робочих процесів машинного навчання в Python

Переглянути курс

Інструкції до вправи

  • Створіть діапазон значень порога, що містить 0.0, 0.25, 0.5, 0.75 і 1.0.
  • За допомогою подвійного спискового включення збережіть передбачення для кожного порога з діапазону. Нагадаємо, що отримати мітки для матриці балів за порогом thr можна так: [s[1] > thr for s in scores].
  • Пройдіться цим списком і обчисліть accuracy для кожного порога. Повторіть для метрики F1.
  • Використовуючи argmin() або argmax(), знайдіть оптимальний поріг для accuracy та для F1.

Інтерактивна практична вправа

Спробуйте виконати цю вправу, доповнивши цей зразок коду.

# Create a range of equally spaced threshold values
t_range = ____

# Store the predicted labels for each value of the threshold
preds = [[____ > thr for s in scores] for ____ in ____]

# Compute the accuracy for each threshold
accuracies = [____(____, ____) for p in preds]

# Compute the F1 score for each threshold
f1_scores = [____(____, ____) for p in preds]

# Report the optimal threshold for accuracy, and for F1
print(t_range[____(accuracies)], t_range[____(f1_scores)])
Редагувати та запускати код