НачатьНачать бесплатно

Превращаем эвристику в классификатор

Вы удивлены тем, насколько полезными могут быть эвристики. Поэтому вы решаете использовать эвристику «слишком много уникальных портов — подозрительный признак» как самостоятельный классификатор. Для этого вы определяете пороговое значение количества уникальных портов на источник, равное среднему числу портов у «плохих» исходных компьютеров — то есть тех, для которых метка равна 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, ____))
Редактировать и запускать код