Создание рецепта для фильтрации по низкой дисперсии
Пакет tidymodels предлагает более удобный способ отфильтровать признаки с нулевой и близкой к нулю дисперсией — с помощью функций step_zv() и step_nzv() соответственно. Эти шаги рецепта определяют признаки с низкой дисперсией, анализируя количество уникальных значений и соотношение частот наиболее распространённых значений в каждом признаке. Такой подход надёжнее простого порогового отсечения по дисперсии, которое мы использовали раньше.
Кроме того, вы воспользуетесь шагом step_scale(), чтобы нормализовать дисперсию признаков. Помните: нормализация данных — всегда хорошая практика, которая позволяет сделать дисперсии разных признаков сопоставимыми.
Набор данных house_sales_df уже доступен для работы. Целевая переменная — price. Пакеты tidyverse и tidymodels также подключены.
Это упражнение является частью курса
Снижение размерности в R
Инструкции к упражнению
- Задайте рецепт для фильтрации по низкой дисперсии и подготовьте его, используя
house_sales_df. - Примените рецепт к
house_sales_dfи сохраните отфильтрованные данные вfiltered_house_sales_df. - Выведите признаки, которые рецепт отфильтровал на шаге
step_nzv().
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# Prepare recipe
low_variance_recipe <- recipe(___ ~ ___, ___ = ___) %>%
step_zv(___) %>%
___(___) %>%
___(___) %>%
prep()
# Apply recipe
filtered_house_sales_df <- ___(___, new_data = ___)
# View list of features removed by the near-zero variance step
tidy(___, number = ___)