{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Майнор по Анализу Данных, Группа ИАД-2\n",
"## 22/02/2017 Линейная классификация"
]
},
{
"cell_type": "code",
"execution_count": 2,
"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'] = (12,8)\n",
"\n",
"# Для кириллицы на графиках\n",
"font = {'family': 'Verdana',\n",
" 'weight': 'normal'}\n",
"plt.rc('font', **font)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"code_folding": [],
"collapsed": false
},
"outputs": [],
"source": [
"try:\n",
" from ipywidgets import interact, IntSlider, fixed\n",
"except ImportError:\n",
" print u'Так надо'"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Задача классификации"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"На прошлом семинаре мы рассматривали модели регрессии - случай, в котором необходимо было предсказать вещественную переменную $y \\in \\mathbb{R}^n$ (Стоимость автомобиля, стоимость жилья, размер мозга, объемы продаж и тп.)\n",
"\n",
"В задаче классификации переменная $y$ - содержит метку принадлежности к классу, как, например, это было в задаче с наивным байесом - категорию текстов. Частный случай задачи классификации - бинарная классификация $y = \\{-1, 1\\}$. Например: является ли клиент банка кредитоспособным, доброкачественная ли опухоль, сообщение - SPAM или HAM?\n",
"\n",
"Спрашивается, почему бы нам не взять, да и построить обычную регрессию на метки класса $y$?
\n",
"Загрузите [данные](https://www.dropbox.com/s/g3s1drtaxqwthw1/crx.data?dl=0) о кредитовании. Они достаточно сильно анонимизированны и еще не до конца подходят для применения, но сейчас это нам не помешает. Постройте график наблюдений в координатах `y` и `a15`"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"
| \n", " | a1 | \n", "a2 | \n", "a3 | \n", "a4 | \n", "a5 | \n", "a6 | \n", "a7 | \n", "a8 | \n", "a9 | \n", "a10 | \n", "a11 | \n", "a12 | \n", "a13 | \n", "a14 | \n", "a15 | \n", "y | \n", "
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | \n", "b | \n", "30.83 | \n", "0.000 | \n", "u | \n", "g | \n", "w | \n", "v | \n", "1.25 | \n", "t | \n", "t | \n", "1 | \n", "f | \n", "g | \n", "202.0 | \n", "0 | \n", "1 | \n", "
| 1 | \n", "a | \n", "58.67 | \n", "4.460 | \n", "u | \n", "g | \n", "q | \n", "h | \n", "3.04 | \n", "t | \n", "t | \n", "6 | \n", "f | \n", "g | \n", "43.0 | \n", "560 | \n", "1 | \n", "
| 2 | \n", "a | \n", "24.50 | \n", "0.500 | \n", "u | \n", "g | \n", "q | \n", "h | \n", "1.50 | \n", "t | \n", "f | \n", "0 | \n", "f | \n", "g | \n", "280.0 | \n", "824 | \n", "1 | \n", "
| 3 | \n", "b | \n", "27.83 | \n", "1.540 | \n", "u | \n", "g | \n", "w | \n", "v | \n", "3.75 | \n", "t | \n", "t | \n", "5 | \n", "t | \n", "g | \n", "100.0 | \n", "3 | \n", "1 | \n", "
| 4 | \n", "b | \n", "20.17 | \n", "5.625 | \n", "u | \n", "g | \n", "w | \n", "v | \n", "1.71 | \n", "t | \n", "f | \n", "0 | \n", "f | \n", "s | \n", "120.0 | \n", "0 | \n", "1 | \n", "
"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Знакомьтесь - Линейная регрессия!"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Перед тем как мы начнем, рассмотрим функцию $$\\sigma(z) = \\frac{1}{1 + exp{(-z)}},$$она называется **сигмойда**. Постройте данную фукнцию."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"[
"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Давайте сравним работу регуляризаторов. \n",
"\n",
"1. Разбейте данные на обучающую и валидационную выборки в пропорции 70\\30.\n",
"1. Для $C$ из набора np.logspace(-3, 3, 10) обучите LogisctigRegression c Lasso регуляризацией (`penalty='l1'`). На каждой итерации оцените качество (ROC-AUC) на контрольной выборке и запомните полученные коэффициенты модели\n",
"1. На одном графике выведите значение качества в зависимости от параметра `C` \n",
"1. На другом графике для каждого признака выведите значение коэффициента в модели в зависимости от параметра `C`\n",
"1. Проделайте тоже самое для Ridge регуляризации (`penalty='l2'`)"
]
},
{
"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
},
"toc_position": {
"height": "698px",
"left": "0px",
"right": "1219.33px",
"top": "107px",
"width": "210px"
}
},
"nbformat": 4,
"nbformat_minor": 2
}