#!/usr/bin/env python # coding: utf-8 # # Майнор по Анализу Данных, Группа ИАД-2 # ## Домашнее задание №2: Классификация текстовых данных #
Чтобы узнать свой вариант, введите Вашу фамилию на русском языке в соответвующее поле ниже и запустите ячейку:
# In[9]: surname = u"Иванов" #Ваша фамилия variant = (hash(surname.lower()) % 2 + 1) print "Ваш вариант - ", variant #Варианты
# * Набор SMS сообщений (sms) - спам/не спам - источник - файл c данными: data/SMSSpamCollection # # * Набор рецензий на фильмы (reviews) - positive/negative - источник - файл c данными: data/reviews.tsv # # ## Задача 1 # #### Классификация текстовых сообщений (2 балла) #Повторите решение задачи 1, но с ипользованием k-folds (k=4) для разделения исходных данных, обучения и тестирования.
# In[ ]: random_state = 123 # для всех объектов/методов/моделей # In[ ]: # Ваш код # ## Задача 3. # #### Выбор модели (5 баллов) #1. Используя данные из задачи 1, разбейте обучающее подмножество (train) с использованием k-folds (k=4)
# 2. Обучите и протестируйте на разбитом обучающем подмножестве классификаторы со следующими параметрами:
K-ближайших соседей
# In[ ]: ns = np.arange(1, 150, 20) # количество соседей #Логистическая регрессия
# In[ ]: cs = np.logspace(-2, 10, 8, base=10) # параметр регуляризации #Мультиномиальный наивный Байес
# In[ ]: alphas = np.logspace(-4, 1, 8, base=10) # сглаживающий параметр #3. Постройте графики (параметры модели)-(доля правильных классификаций) при обучении и валидации
# 4. Выберите лучшую модель для каждого метода, используя значение качества классификации (использовать долю правильных классификаций)
# 5. Выбранные модели обучите на обучающем подмножестве (train) и протестируйте на тестовом (test). Определите время обучения и предсказания (см. задачу 1 п. 6)
# 6. Повторите шаги 2-4 для n-gram=2
# 7. Выведите итоговые данные по всем методам для лучших моделей (метод, n-gram, значение параметра модели, время обучения, время предсказания, доля правильных классификаций)
# 8. Сделайте выводы по полученным результатам (преимущества и недостатки методов)
#
Как будет меняться качество классификации для обозначенных ранее методов при использовании FeatureHasher (или HashingVectorizer) из пакета sklearn перед TF-IDF преобразованием, если
# In[ ]: n_features = np.logspace(1, 5, 5, base=10) # количество признаков non_negative=True #Можно воспользоваться GridSearchCV
# In[ ]: