{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 113,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn.datasets import load_boston\n",
    "from sklearn.linear_model import LogisticRegression, RandomizedLasso,  LinearRegression\n",
    "from sklearn.cross_validation import train_test_split, KFold\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "%matplotlib inline "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 114,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "data = np.load('dataset.npz')\n",
    "X_train = data['train_data']\n",
    "X_test = data['test_data']\n",
    "y_train = data['train_labels']\n",
    "y_test = data['test_labels']"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Задача 1\n",
    "\n",
    "1. Нормализуйте признаки используя StandardScaler\n",
    "1. Обучите модель  LogisticRegression используя $L_2$ и $L_1$ регуляризацию, сравните качетсво на тренировочной и тестовой выборке. (В качетве меры качества исользуйте долю верно классифицированных объектов. Будем считать, что объект отностится к положительному классу, если вероятность принадлежности объекта к положительному классу, прдесказанная алгоритмом, превосходит $\\dfrac{1}{2}$)\n",
    "1. Подберите по логарифмической сетке оптимальное значение параметра регуляризации $C$ для $L_1$ регуляризатора."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Задача 2\n",
    "1. Обучите модель RandomizedLasso.\n",
    "2. Используя параметр scores найдите два наиболее важных признака\n",
    "3. Обучите модель  LogisticRegression используя для описания каждого объекта только выделенные на предыдущем шаге признаки. Какое качетсво удалось получить на тренировочной и на тестовой выборке?\n",
    "4. Отобразите объекты тренировочной выборке на scatter-plot'е, используя в качестве осей $x$ и $y$, найденные признаки."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Задача 3\n",
    "1. Загрузите датасет boston с помощью функции load_boston. Разбейте выборку на тренировочную и тестовую используя функцию train_test_split. Нормализуйте значения признаков используя StadardScaler.\n",
    "2. Обучите модель  LinearRegression с $L_2$ регуляризатором. Отобразите на графике зависимость среднеквадратичной ошибки обученной модели на тренировочной и тестовой выборках в зависимости от значения параметра регуляризации $\\alpha$.\n",
    "3. Подберите оптимальное значение параметра регуляризации $\\alpha$ по кросс-валидации. Для проведения кросс-валидации ипользуйте функцию KFold.\n",
    "4. Обучите регрессор с оптимальным значением параметра регуляризации. Выделите вес кажого признака в обученной модели  помощью поля coef\\_. Отсортируйте признаки по значению назначенного им веса. Сопоставьте полученные веса с описанием полей датасета http://www.cs.toronto.edu/~delve/data/boston/bostonDetail.html Какие параметры больше всего влияют на стоимость жилья?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
