{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Введение в анализ данных\n", "\n", "## Линейная регрессия\n", "\n", "В данном ноутбуке мы рассмотрим несложный пример построения модели линейной регрессии, а также предварительной обработки данных. Для построения моделей и методов обработки данных будем использовать широко известную библиотеку Scikit-Learn (сокращенно `sklearn`), в которой в удобной форме реализованы многие методы машинного обучения и анализа данных в целом. Более того, принятый интерфейс библиотеки часто используют разработчики других библиотек в силу удобства его использования.\n", "\n", "Поставить библиотеку можно командой `pip install scikit-learn`." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "ExecuteTime": { "end_time": "2021-04-17T11:51:34.636576Z", "start_time": "2021-04-17T11:51:33.862862Z" } }, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd\n", "pd.options.mode.chained_assignment = None\n", "\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns\n", "sns.set(font_scale=1.3, palette='Set2')\n", "\n", "# обратите внимание, что Scikit-Learn импортируется как sklearn\n", "from sklearn.model_selection import train_test_split\n", "from sklearn.preprocessing import OneHotEncoder\n", "from sklearn.linear_model import LinearRegression\n", "from sklearn import metrics" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 1. Постановка задачи\n", "\n", "Рассмотрим данные медицинского страхования. В каждой строке представлены признаки для каждого клиента страховой организации.\n", "\n", "В данных содержатся следующие признаки:\n", "* `birthday` — день рождения (*в версии Физтех.Статистики; в оригинальной версии `age` — возраст*);\n", "* `sex` — пол, возможные значения: `female`, `male`;\n", "* `bmi` — соотношение массы тела квадрату его высоты (body mass index), измеряется в кг/м$^2$, хорошие значения лежат в диапазоне от 18.5 до 24.9;\n", "* `children` — количество детей;\n", "* `smoker` — курит ли клиент;\n", "* `region` — район в США, возможные значения: `northeast`, `southeast`, `southwest`, `northwest`;\n", "* `charges` — индивидуальные медицинские расходы, оплачиваемые медицинским страхованием.\n", "\n", "**Задача:** предсказать *индивидуальные медицинские расходы* по остальным признакам.\n", "\n", "Оригинальные данные можно посмотреть на Kaggle.\n", "\n", "Загрузим данные" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "ExecuteTime": { "end_time": "2021-04-17T11:51:34.660391Z", "start_time": "2021-04-17T11:51:34.638557Z" } }, "outputs": [ { "data": { "text/html": [ "
\n", " | birthday | \n", "sex | \n", "bmi | \n", "children | \n", "smoker | \n", "region | \n", "charges | \n", "
---|---|---|---|---|---|---|---|
0 | \n", "2001-12-20 | \n", "female | \n", "27.900 | \n", "0 | \n", "yes | \n", "southwest | \n", "16884.92400 | \n", "
1 | \n", "2003-03-18 | \n", "male | \n", "33.770 | \n", "1 | \n", "no | \n", "southeast | \n", "1725.55230 | \n", "
2 | \n", "1992-11-02 | \n", "male | \n", "33.000 | \n", "3 | \n", "no | \n", "southeast | \n", "4449.46200 | \n", "
3 | \n", "1987-07-27 | \n", "male | \n", "22.705 | \n", "0 | \n", "no | \n", "northwest | \n", "21984.47061 | \n", "
4 | \n", "1988-11-04 | \n", "male | \n", "28.880 | \n", "0 | \n", "no | \n", "northwest | \n", "3866.85520 | \n", "