Проблема в джерелі чи в призначенні?
У попередньому уроці ви використовували комп'ютер‑призначення як основну сутність. Однак ваш фахівець із кібербезпеки щойно повідомив, що саме інфіковані машини генерують шкідливий трафік, тож у наборі даних flows вони з'являтимуться як джерело, а не призначення.
Дані flows вже завантажено, так само як список інфікованих ID bad і функцію витягання ознак featurizer() з попереднього уроку. Також доступні numpy як np, AdaBoostClassifier() і cross_val_score().
Ця вправа є частиною курсу
Проєктування робочих процесів машинного навчання в Python
Інструкції до вправи
- Створіть датафрейм, у якому кожний рядок — це вектор ознак для
source_computer. Згрупуйте за ID вихідного комп'ютера у наборі данихflowsі застосуйте екстрактор ознак до кожної групи. - Перетворіть ітератор на датафрейм, викликавши для нього
list(). - Створіть мітки, перевіряючи, чи кожний ID
source_computerналежить до наданого списку інфікованих. - Оцініть
AdaBoostClassifier()на цих даних за допомогоюcross_val_score().
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
# Group by source computer, and apply the feature extractor
out = flows.____('source_computer').____(featurize)
# Convert the iterator to a dataframe by calling list on it
X = pd.DataFrame(____, index=____)
# Check which sources in X.index are bad to create labels
y = [x in bads for x in ____]
# Report the average accuracy of Adaboost over 3-fold CV
print(np.mean(____(____, X, y)))