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

Конструирование признаков на сгруппированных данных

Теперь вы расширите предыдущее упражнение, добавив ещё один признак: количество уникальных протоколов, используемых каждым компьютером-источником. Обратите внимание: при работе со сгруппированными данными признаки всегда можно строить именно таким образом — в качестве отправной точки можно взять количество уникальных значений всех категориальных столбцов и среднее значение всех числовых столбцов. Как и прежде, в вашем распоряжении есть flows, функция cross_val_score() для оценки точности, AdaBoostClassifier(), pandas как pd и numpy как np.

Это упражнение является частью курса

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

Посмотреть курс

Инструкции к упражнению

  • Примените функцию lambda к итератору групп, чтобы вычислить количество уникальных протоколов, используемых каждым компьютером-источником. Для получения множества уникальных значений из столбца protocol используйте set().
  • Преобразуйте результат в датафрейм нужной формы, указав индекс и назвав столбец 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)))
Редактировать и запускать код