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

Перетворення евристики на класифікатор

Вас здивувало, що евристики можуть бути такими корисними. Тож ви вирішили трактувати евристику «надто багато унікальних портів — це підозріло» як окремий класифікатор. Ви реалізуєте це, встановивши поріг за кількістю унікальних портів на джерело на рівні середнього значення для «поганих» вихідних комп'ютерів — тих, для яких мітка дорівнює True. Набір даних уже завантажено та розбито на тренувальну й тестову частини, тож у пам'яті є об'єкти X_train, X_test, y_train і y_test. Ви вже імпортували accuracy_score() і numpy як np. Для ясності: у цій вправі ви не навчатимете класифікатор із scikit-learn, а явно визначите власне правило класифікації!

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

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

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

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

  • Виберіть з X_train усі «погані» хости, щоб утворити новий набір даних X_train_bad. Зверніть увагу: y_train — це булевий масив.
  • Обчисліть середнє значення стовпця unique_ports для «поганих» хостів і збережіть його в avg_bad_ports.
  • Розгляньте класифікатор, який прогнозує «позитив» для кожного прикладу, де unique_ports перевищує avg_bad_ports. Збережіть прогнози цього класифікатора для тестових даних у новій змінній pred_port.
  • Обчисліть точність цього класифікатора на тестових даних за допомогою accuracy_score().

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

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

# Create a new dataset X_train_bad by subselecting bad hosts
X_train_bad = ____[____]

# Calculate the average of unique_ports in bad examples
avg_bad_ports = np.____(____['unique_ports'])

# Label as positive sources that use more ports than that
pred_port = ____['unique_ports'] > ____

# Print the accuracy of the heuristic
print(____(y_test, ____))
Редагувати та запускати код