#!/usr/bin/env python
# coding: utf-8
# # Домашняя работа №2
# **Срок сдачи:** 21 октября 2017, 23:59
# Штраф за опоздание: -1 балл за каждый день
#
# Файл с дз надо загрузить по [ссылке](https://www.dropbox.com/request/Sc8LELV7lp5Vl3Ad7wJG)
# Постарайтесь назвать файл по следующему формату:** [ИАД-*{Номер}*] *{Фамилия}* *{Имя}* ДЗ*{Номер}* **
#
# Сопровождайте ваш код изображеними, комментариями и выводами.
# Иммейте ввиду, что на некоторые задачи нет единственного верного и полного ответа. Чем больше информации вы сможете извлечь, аргументированных выводов сформулировать, тем лучше.
#
# Используйте данный Ipython Notebook при оформлении домашнего задания.
# # Table of Contents
#
# Прочтите статью ["USING DATA MINING TO PREDICT SECONDARY SCHOOL STUDENT ALCOHOL CONSUMPTION"](https://www.dropbox.com/s/ww4h9ivnkbyy9xw/STUDENT%20ALCOHOL%20CONSUMPTION%20%281%29.pdf?dl=0).
# Загрузите [датасет](https://cloud.mail.ru/public/KiKi/Cow8y2yn7), используемый в статье и выполните следующие задания:
# ## Работа с данными (4 балла)
# 1. Приведите описание признаков датасета на русском языке с указанием типа данных (2 балла)
# 2. Описание предобработки данных (2 балла)
# - Проверьте наличие пропусков. В случае наличия пропусков заполните их медианными значениями (1 балл)
# - Преобразуйте все номинальные признаки в несколько признаков с бинарным значением (1 балл)
# ## Классификация (6 баллов)
#
# ### Предписания
# - Используйте accuracy как основную меру качества
# - Классы в задаче несбалансированные. Для корректной кросс-валидации используйте стратифицированный способ разбиения на фолды [Stratified K-fold](http://scikit-learn.org/stable/modules/generated/sklearn.model_selection.StratifiedKFold.html#sklearn.model_selection.StratifiedKFold)
#
# ### Задание
# 1. Задайте RANDOM_SEED и случайным образом разделите выборку на обучающую и контрольную в пропорции 80/20. Этот же RANDOM_SEED используйте при кросс-валидации (0.5 балла)
# 2. Random Forest (2 балла)
# * В статье описано использование Random Forest для предсказания важности фактором вляющих на потребление алкоголя.
# * Повторите эксперимент с использованием [RandomForest](http://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestClassifier.html#sklearn.ensemble.RandomForestClassifier) и найдите наилучшие параметры с помощью кросс-валидации. (1 балл)
# * Изобразите аналогичную таблицу важности признаков для наилучшей настройки метода (значения могут отличаться). (0.5 балла)
# * Укажите значение accuracy для пяти наилучших настроек метода на контрольной выборке. (0.5 балла)
#
# 3. GradientBoosting (2 балла)
# * Обучите [GradientBoostingClassifier](http://scikit-learn.org/stable/modules/generated/sklearn.ensemble.GradientBoostingClassifier.html#sklearn.ensemble.GradientBoostingClassifier) и найдите для него наилучшие параметры с помощью кросс-валидации. (0.5 балла)
# * Изобразите таблицу важности признаков для наилучшей настройки метода. Отличается ли она от таблицы метода RandomForest. Почему? (1 балл)
# * Укажите значение accuracy для пяти наилучших настроек метода. (0.5 балла)
#
# 4. AdaBoost (1 балл)
# * Обучите [AdaBoostClassifier](http://scikit-learn.org/stable/modules/generated/sklearn.ensemble.AdaBoostClassifier.html) и найдите для него наилучшие параметры с помощью кросс-валидации. (0.5 балла)
# * Укажите значение accuracy для пяти наилучших настроек метода. (0.5 балла)
#
# 5. Какой из классификаторов оказался лучше? (0.5 балла)