Для себя # ДОМАШНЕЕ ЗАДАНИЕ 3. Классификация текстовых документов ## Цель работы Приобрести опыт решения практических задач по машинному обучению, таких как анализ и визуализация исходных данных, обучение, выбор и оценка качества моделей предсказания, посредством языка программирования Python. ## Задание 1. Оценка качества классификации текстовых данных (2 балла) 1. Загрузите исходные данные 2. Разбейте загруженные данные на обучающее (train, 80%) и тестовое подмножества (test, 20%) 3. Переведите текстовые данные в векторный вид. Для этого воспользуйтесь средствами `sklearn` для трансформации текстовых документов в векторы TF-IDF (настроить на обучающем подмножестве, n-gram=1, слова в нижний регистр). 4. Постройте на обучающем подмножестве следующие модели классификации: - K-ближайших соседей ($n=5$) - Логистическая регрессия ($C=1$) - Наивный Байес: модель Бернулли ($\alpha=1$) - Наивный Байес: полиномиальная модель ($\alpha=1$) 5. Определите качество классификации на тестовом подмножестве (`Balanced-Accuracy`, `R`, `P`, `F1`) 6. Определите время обучения и предсказания 7. Свести все значения в один датафрейм и представить результат в виде таблицы ? **Замечание.** - Для модели Бернулли используйте бинарный вектор - Параметры логистической регрессии: `penalty=“l2“`, `fit_intercept=True`, `max_iter=100`, `C=1`, `solver=“lbfgs“`, `random_state=12345` ## Задание 2. Оценка качества классификации текстовых данных посредством кросс-валидации (2 балла) Повторите решение задания 1, но с использованием стратифицированной кросс-валидации k-folds (k=4) для разделения исходных данных ## Задание 3. Выбор модели (4 баллов) 1. Используя данные из задачи 1, разбейте обучающее подмножество (train) посредством стратифицированной кросс-валидации k-folds (k=4) 2. Обучите и протестируйте на разбитом обучающем подмножестве классификаторы со следующими параметрами: - количество соседей: `np.arange(1, 150, 20)` - параметр регуляризации: `np.logspace(-2, 10, 8, base=10)` - сглаживающий параметр: `np.logspace(-4, 1, 8, base=10)` 3. Постройте графики (параметры модели)-(`Balanced-Accuracy`) при обучении и валидации 4. Выберите лучшую модель для каждого метода, используя значение качества классификации (использовать `Balanced-Accuracy`) 5. Выбранные модели обучите на обучающем подмножестве (train) и протестируйте на тестовом (test). Определите время обучения и предсказания (см. задание 1 п. 6) 6. Повторите шаги 2-4 для n-gram=2 и n-gram=(1,2) 7. Выведите в виде таблицы итоговые данные по всем методам для лучших моделей (метод, n-gram, значение параметра модели, время обучения, время предсказания, метрики (`Balanced-Accuracy`, `R`, `P`, `F1`)) 8. Сделайте выводы по полученным результатам (преимущества и недостатки методов) ## Задание 4. Оценка влияния количества признаков FeatureHasher на качество классификации (2 баллов) Как будет меняться качество классификации для обозначенных ранее методов при использовании `FeatureHasher` (или `HashingVectorizer`) из пакета `sklearn` перед TF-IDF преобразованием. Количество признаков: `np.logspace(1, 5, 5, base=10)` ? **Замечание.** Используйте лучшие модели из задания 3.