{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Майнор по Анализу Данных, Группа ИАД-2\n", "## Домашнее задание №2: Классификация текстовых данных" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
Чтобы узнать свой вариант, введите Вашу фамилию на русском языке в соответвующее поле ниже и запустите ячейку:
" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Ваш вариант - 2\n" ] } ], "source": [ "surname = u\"Иванов\" #Ваша фамилия\n", "\n", "variant = (hash(surname.lower()) % 2 + 1)\n", "print \"Ваш вариант - \", variant" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Варианты
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* Набор SMS сообщений (sms) - спам/не спам - источник - файл c данными: data/SMSSpamCollection\n", "\n", "* Набор рецензий на фильмы (reviews) - positive/negative - источник - файл c данными: data/reviews.tsv\n", "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Задача 1\n", "#### Классификация текстовых сообщений (2 балла)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Повторите решение задачи 1, но с ипользованием k-folds (k=4) для разделения исходных данных, обучения и тестирования.
" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "random_state = 123 # для всех объектов/методов/моделей" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Ваш код" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Задача 3.\n", "#### Выбор модели (5 баллов)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "1. Используя данные из задачи 1, разбейте обучающее подмножество (train) с использованием k-folds (k=4)
\n",
"2. Обучите и протестируйте на разбитом обучающем подмножестве классификаторы со следующими параметрами:
K-ближайших соседей
" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "ns = np.arange(1, 150, 20) # количество соседей" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Логистическая регрессия
" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "cs = np.logspace(-2, 10, 8, base=10) # параметр регуляризации" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Мультиномиальный наивный Байес
" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "alphas = np.logspace(-4, 1, 8, base=10) # сглаживающий параметр" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "3. Постройте графики (параметры модели)-(доля правильных классификаций) при обучении и валидации
\n",
"4. Выберите лучшую модель для каждого метода, используя значение качества классификации (использовать долю правильных классификаций)
\n",
"5. Выбранные модели обучите на обучающем подмножестве (train) и протестируйте на тестовом (test). Определите время обучения и предсказания (см. задачу 1 п. 6)
\n",
"6. Повторите шаги 2-4 для n-gram=2
\n",
"7. Выведите итоговые данные по всем методам для лучших моделей (метод, n-gram, значение параметра модели, время обучения, время предсказания, доля правильных классификаций)
\n",
"8. Сделайте выводы по полученным результатам (преимущества и недостатки методов)\n",
"
Как будет меняться качество классификации для обозначенных ранее методов при использовании FeatureHasher (или HashingVectorizer) из пакета sklearn перед TF-IDF преобразованием, если
" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "n_features = np.logspace(1, 5, 5, base=10) # количество признаков\n", "non_negative=True" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Можно воспользоваться GridSearchCV
" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python [conda root]", "language": "python", "name": "conda-root-py" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.12" }, "nav_menu": {}, "toc": { "navigate_menu": true, "number_sections": false, "sideBar": true, "threshold": 6, "toc_cell": false, "toc_section_display": "block", "toc_window_display": true } }, "nbformat": 4, "nbformat_minor": 2 }