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

Інженерія ознак на згрупованих даних

Тепер ви розвинете попередню вправу, додавши ще одну ознаку: кількість унікальних протоколів, які використовує кожен вихідний комп'ютер. Зауважте, що для згрупованих даних завжди можна конструювати ознаки в такий спосіб: взяти кількість унікальних елементів усіх категоріальних стовпців і середні значення всіх числових стовпців як відправну точку. Як і раніше, у вас попередньо завантажено flows, є cross_val_score() для вимірювання точності, AdaBoostClassifier(), а також pandas як pd і numpy як np.

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

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

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

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

  • Застосуйте функцію lambda до наданого ітератора груп, щоб обчислити кількість унікальних протоколів для кожного вихідного комп'ютера. Ви можете використати set(), щоб звести стовпець protocol до множини унікальних значень.
  • Перетворіть результат на датафрейм з правильною формою, надавши індекс і назвавши стовпець protocol.
  • Об'єднайте новий датафрейм зі старим, який доступний як X.
  • Оцініть точність AdaBoostClassifier() на цьому новому наборі даних за допомогою cross_val_score().

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

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

# Create a feature counting unique protocols per source
protocols = flows.groupby('source_computer').apply(
  lambda df: ____)

# Convert this feature into a dataframe, naming the column
protocols_DF = pd.DataFrame(
  protocols, index=____, columns=____)

# Now concatenate this feature with the previous dataset, X
X_more = pd.concat([X, ____], axis=____)

# Refit the classifier and report its accuracy
print(____(____(
  AdaBoostClassifier(), ____, y)))
Редагувати та запускати код