#!/usr/bin/env python # coding: utf-8 # # Майнор по Анализу Данных, Группа ИАД-2 # ## Введение, вспоминаем Python 18/01/2017 # # Table of Contents #

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  Линейная регрессия
# Этот [Jupyter Notebook](http://jupyter-notebook-beginner-guide.readthedocs.io/en/latest/what_is_jupyter.html) содержит вспомогательные указания для выполнения семинарских и домашних заданий. В течение курса мы будем преимущественно работать в подобных "тетрадках", но может быть иногда будем переключаться на другие среды\средства. # # (Я использую Python версии 2.x.x, а не 3.x.x) # ## Как установить Jupyter Notebook у себя дома?! # Самый простой и надежный способ - воспользоваться готовым дистрибутивом [Anaconda](https://store.continuum.io/cshop/anaconda/), включающий в себе практически все необходимые модули и утилиты, которые нам понадобятся - IPython, NumPy, SciPy, Matplotlib и **Scikit-Learn**. Просто следуйте указаниям установщика для вашей ОС. # # Рекомендую ознакомиться с этим [постом](https://www.dataquest.io/blog/jupyter-notebook-tips-tricks-shortcuts/) - там приводятся различные интересные возможности "тетрадок" о которых вы возможно не знали. # ## Можно ли писать на Python 3? # Пишите, ради бога. В нашем случае разница будет минимальна, поэтому код можно легко перевести из одной версии в другую. # ## Зачем мне нужен этот курс? # Данный курс должен дать вам: # * Основные знания и навыки используемые при работе с данными # * Понимание базовых методов прикладной статистики и (о боже!) машинного обучения # * Умение поставить задачу и выбрать метод для ее решения # ## Я стану Data Scientist'ом?! # Фундамент будет заложен. А дальше нужна практика и ваша собственная мотивация. # # Что желательно уметь делать, будучи DS: # 1. Data Exploration and Preparation # 2. Data Representation and Transformation # 1. Modern Databases # 2. Mathematical Representations # 3. Computing with Data # 4. Data Visualization and Presentation # 5. Data Modeling # 1. Generative Modelling (Applied Statistics) # 2. Predictive Modelling (ML) # 6. Domain Expertise (optional) # ## Вспоминаем pandas # In[ ]: import pandas as pd import numpy as np import matplotlib.pyplot as plt get_ipython().run_line_magic('matplotlib', 'inline') plt.style.use('ggplot') plt.rcParams['figure.figsize'] = (16,8) # ### Рождаемость в США # Загрузите два набора данных с информацией о рождаемости в США: [Набор 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) # In[ ]: # Чем они отличаются? Соедините 2 таблицы, так, чтобы соблюсти целостность информации. # In[ ]: # Найдите количество детей, рождающихся 6, 13 и 20 числа каждого месяца с учетом дня недели. # # Выделяется ли как-то пятница 13? # In[ ]: # ### Качество вина # Загрузите [датасет](https://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality-red.csv) с информацией о характеристиках вина и его качестве. # In[ ]: # * Что из себя представляет объект в этом наборе данных? Сколько их? # * Какие признаки описывают объекты? Сколько их? # * Какой признак является целевым? # * Каковы их области значений? # * Есть ли пропуски? # In[ ]: # Какие признаки больше всего влияют на целевую переменную? # In[ ]: # Создайте новый столбец `quality_cat`, которая будет иметь значение `"good"` если `quality > 5` и `"bad"` - иначе.
# In[ ]: # Нарисуйте гистрограммы признака alcohol в группах с `quality_cat == "good"` и `quality_cat == "bad"`. # In[ ]: # Можете ли вы придумать правило для классификации вина на хорошее и плохое по рисунку выше? Пусть это будет нашей первой моделью) # # Напишите функцию `brute_clf_train()` которая бы перебирала пороговое значение по признаку `alcohol` и находило бы "оптимальное" (кстати, что значит оптимальное?) # In[ ]: # Напишите функцию `brute_clf_predict()` которая бы по значению признака `alcohol` и найденному выше порогу говорила какое качество у вина. # # А заодно выводила бы количество "ошибок" на текущем наборе данных # Проверим, как обобщается наша модель на другие данные. # # * Загрузите другой [датасет](https://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality-white.csv) # * Выполните те же панипуляции с признаками # * Используйте нашу простейшую модель для предсказания качества на новых данных # In[ ]: # ## Вспоминаем NumPy # ### Упражнения с векторами и матрицами # In[ ]: # ### Линейная регрессия # Загрузите [файл 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:]. # # Сейчас мы воспользуемся одной магической формулой и построим модель линейной регрессии. Откуда эта формула берется мы узнаем на следующих занятиях. # # Модель линейной регрессии в матричном виде выглядит так: $\hat{y} = X\hat{\beta}$, где # # $$ \hat{\beta} = (X^T X)^{-1} X^T y $$ # Остатки модели рассчитываются как # $$ \text{res} = y - \hat{y} $$ # # Итак, еще раз: # # 1. Загрузите данные # 2. Оцените веса $\beta$ с помощью формулы # 3. Постройте график, на котором по оси Y: остатки, а по оси X: $\hat{y}$ # In[ ]: # load data D = np.loadtxt('tutorial_dataset_1.csv', skiprows=1, delimiter=',') # In[ ]: # Write your code here # # #