{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Майнор по Анализу Данных, Группа ИАД-2\n", "## Введение, вспоминаем Python 18/01/2017" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Table of Contents\n", "

1  Майнор по Анализу Данных, Группа ИАД-2
1.1  Введение, вспоминаем Python 18/01/2017
1.2  Как установить Jupyter Notebook у себя дома?!
1.3  Можно ли писать на Python 3?
1.4  Зачем мне нужен этот курс?
1.5  Я стану Data Scientist'ом?!
1.6  Вспоминаем pandas
1.6.1  Рождаемость в США
1.6.2  Качество вина
1.7  Вспоминаем NumPy
1.7.1  Упражнения с векторами и матрицами
1.7.2  Линейная регрессия
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Этот [Jupyter Notebook](http://jupyter-notebook-beginner-guide.readthedocs.io/en/latest/what_is_jupyter.html) содержит вспомогательные указания для выполнения семинарских и домашних заданий. В течение курса мы будем преимущественно работать в подобных \"тетрадках\", но может быть иногда будем переключаться на другие среды\\средства.\n", "\n", "(Я использую Python версии 2.x.x, а не 3.x.x)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Как установить Jupyter Notebook у себя дома?!" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Самый простой и надежный способ - воспользоваться готовым дистрибутивом [Anaconda](https://store.continuum.io/cshop/anaconda/), включающий в себе практически все необходимые модули и утилиты, которые нам понадобятся - IPython, NumPy, SciPy, Matplotlib и **Scikit-Learn**. Просто следуйте указаниям установщика для вашей ОС.\n", "\n", "Рекомендую ознакомиться с этим [постом](https://www.dataquest.io/blog/jupyter-notebook-tips-tricks-shortcuts/) - там приводятся различные интересные возможности \"тетрадок\" о которых вы возможно не знали." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Можно ли писать на Python 3?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Пишите, ради бога. В нашем случае разница будет минимальна, поэтому код можно легко перевести из одной версии в другую." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Зачем мне нужен этот курс?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Данный курс должен дать вам:\n", "* Основные знания и навыки используемые при работе с данными\n", "* Понимание базовых методов прикладной статистики и (о боже!) машинного обучения\n", "* Умение поставить задачу и выбрать метод для ее решения" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Я стану Data Scientist'ом?!" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Фундамент будет заложен. А дальше нужна практика и ваша собственная мотивация.\n", "\n", "Что желательно уметь делать, будучи DS:\n", "1. Data Exploration and Preparation\n", "2. Data Representation and Transformation\n", " 1. Modern Databases\n", " 2. Mathematical Representations\n", "3. Computing with Data\n", "4. Data Visualization and Presentation\n", "5. Data Modeling\n", " 1. Generative Modelling (Applied Statistics)\n", " 2. Predictive Modelling (ML)\n", "6. Domain Expertise (optional)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Вспоминаем pandas" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import pandas as pd\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "%matplotlib inline\n", "\n", "plt.style.use('ggplot')\n", "plt.rcParams['figure.figsize'] = (16,8)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Рождаемость в США" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Загрузите два набора данных с информацией о рождаемости в США: [Набор 1](https://www.dropbox.com/s/4v743y3e25lz0an/US_births_1994-2003_CDC_NCHS.csv?dl=0), [Набор 2](https://www.dropbox.com/s/3aoulbiuomamay6/US_births_2000-2014_SSA.csv?dl=0)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Чем они отличаются? Соедините 2 таблицы, так, чтобы соблюсти целостность информации." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Найдите количество детей, рождающихся 6, 13 и 20 числа каждого месяца с учетом дня недели.\n", "\n", "Выделяется ли как-то пятница 13?" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Качество вина" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Загрузите [датасет](https://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality-red.csv) с информацией о характеристиках вина и его качестве." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* Что из себя представляет объект в этом наборе данных? Сколько их?\n", "* Какие признаки описывают объекты? Сколько их?\n", "* Какой признак является целевым?\n", "* Каковы их области значений?\n", "* Есть ли пропуски?" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Какие признаки больше всего влияют на целевую переменную?" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Создайте новый столбец `quality_cat`, которая будет иметь значение `\"good\"` если `quality > 5` и `\"bad\"` - иначе.
" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Нарисуйте гистрограммы признака alcohol в группах с `quality_cat == \"good\"` и `quality_cat == \"bad\"`." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Можете ли вы придумать правило для классификации вина на хорошее и плохое по рисунку выше? Пусть это будет нашей первой моделью)\n", "\n", "Напишите функцию `brute_clf_train()` которая бы перебирала пороговое значение по признаку `alcohol` и находило бы \"оптимальное\" (кстати, что значит оптимальное?)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Напишите функцию `brute_clf_predict()` которая бы по значению признака `alcohol` и найденному выше порогу говорила какое качество у вина.\n", "\n", "А заодно выводила бы количество \"ошибок\" на текущем наборе данных" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Проверим, как обобщается наша модель на другие данные.\n", "\n", "* Загрузите другой [датасет](https://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality-white.csv)\n", "* Выполните те же панипуляции с признаками\n", "* Используйте нашу простейшую модель для предсказания качества на новых данных" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Вспоминаем NumPy" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "### Упражнения с векторами и матрицами" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Линейная регрессия" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Загрузите [файл 1](https://www.dropbox.com/s/kg9px9v3xfysak9/tutorial_dataset.csv?dl=0) и [файл 2](https://www.dropbox.com/s/f87gm612o144emx/tutorial_dataset_2.csv?dl=0) в папку с тетрадкой. С помощью функции `loadtxt` в модуле `numpy` загрузите табличные данные одного из файлов. Присвойте y = D[:,0] а X = D[:, 1:].\n", "\n", "Сейчас мы воспользуемся одной магической формулой и построим модель линейной регрессии. Откуда эта формула берется мы узнаем на следующих занятиях.\n", "\n", "Модель линейной регрессии в матричном виде выглядит так: $\\hat{y} = X\\hat{\\beta}$, где\n", "\n", "$$ \\hat{\\beta} = (X^T X)^{-1} X^T y $$\n", "Остатки модели рассчитываются как\n", "$$ \\text{res} = y - \\hat{y} $$\n", "\n", "Итак, еще раз:\n", "\n", "1. Загрузите данные\n", "2. Оцените веса $\\beta$ с помощью формулы\n", "3. Постройте график, на котором по оси Y: остатки, а по оси X: $\\hat{y}$" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# load data\n", "D = np.loadtxt('tutorial_dataset_1.csv', \n", " skiprows=1, \n", " delimiter=',')" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Write your code here\n", "#\n", "#\n", "#" ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python [default]", "language": "python", "name": "python2" }, "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 }, "toc_position": { "height": "924px", "left": "0px", "right": "1622.67px", "top": "108px", "width": "212px" } }, "nbformat": 4, "nbformat_minor": 0 }