Поєднання евристик
Інший фахівець із кібербезпеки каже вам, що під час певних типів атак інфікований вихідний комп'ютер надсилає невеликі обсяги трафіку, щоб уникнути виявлення. Це наштовхує вас на думку, що варто створити комбіновану евристику, яка одночасно перевіряє велику кількість портів і малі розміри пакетів. Чи покращить це результати порівняно з простою евристикою за портами? Як і в попередній вправі, у пам'яті є X_train, X_test, y_train і y_test. Зразок коду також допомагає відтворити результат евристики за портами, pred_port. Крім того, попередньо завантажено numpy як np та accuracy_score().
Ця вправа є частиною курсу
Проєктування робочих процесів машинного навчання в Python
Інструкції до вправи
- Стовпець
average_packetобчислює середній розмір пакета для всіх потоків, зафіксованих від одного джерела. Візьміть середнє цих значень лише для поганих джерел у тренувальному наборі. - Тепер побудуйте нове правило, яке позначає як позитивні всі джерела, чий середній трафік менший за значення, обчислене вище.
- Поєднайте правила так, щоб обидві евристики застосовувалися одночасно, використавши відповідну арифметичну операцію.
- Виведіть точність комбінованої евристики.
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
# Compute the mean of average_packet for bad sources
avg_bad_packet = np.mean(____[____]['average_packet'])
# Label as positive if average_packet is lower than that
pred_packet = ____[____] < avg_bad_packet
# Find indices where pred_port and pred_packet both True
pred_port = X_test['unique_ports'] > avg_bad_ports
pred_both = pred_packet ____ pred_port
# Ports only produced an accuracy of 0.919. Is this better?
print(accuracy_score(____, ____))