2024-09-28 14:49:26 +04:00
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
2024-10-25 21:33:48 +04:00
"# Лабораторная работа №2\n",
2024-09-28 18:10:56 +04:00
"\n",
2024-10-25 21:33:48 +04:00
"## 1. Первый набор данных Forbes 2022 Billionaires data (Данные о миллиардерах Forbes за 2022 год)\n",
2024-09-28 18:10:56 +04:00
"\n",
2024-10-25 21:33:48 +04:00
"Выгрузка данных из CSV файла в датафрейм\n",
"\n"
2024-09-28 14:49:26 +04:00
]
},
{
"cell_type": "code",
2024-10-27 17:55:35 +04:00
"execution_count": 844,
2024-09-28 14:49:26 +04:00
"metadata": {},
"outputs": [
{
2024-09-28 18:10:56 +04:00
"name": "stdout",
2024-09-28 14:49:26 +04:00
"output_type": "stream",
"text": [
2024-10-27 17:55:35 +04:00
"Index(['Rank ', 'Name', 'Networth', 'Age', 'Country', 'Source', 'Industry'], dtype='object')\n",
2024-10-25 21:33:48 +04:00
"\n",
2024-09-28 18:10:56 +04:00
"<class 'pandas.core.frame.DataFrame'>\n",
2024-10-25 21:33:48 +04:00
"RangeIndex: 2600 entries, 0 to 2599\n",
"Data columns (total 7 columns):\n",
2024-09-28 18:10:56 +04:00
" # Column Non-Null Count Dtype \n",
"--- ------ -------------- ----- \n",
2024-10-25 21:33:48 +04:00
" 0 Rank 2600 non-null int64 \n",
" 1 Name 2600 non-null object \n",
" 2 Networth 2600 non-null float64\n",
" 3 Age 2600 non-null int64 \n",
" 4 Country 2600 non-null object \n",
" 5 Source 2600 non-null object \n",
" 6 Industry 2600 non-null object \n",
"dtypes: float64(1), int64(2), object(4)\n",
"memory usage: 142.3+ KB\n"
2024-09-28 14:49:26 +04:00
]
2024-10-25 21:33:48 +04:00
}
],
"source": [
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
2024-10-26 15:34:50 +04:00
"import numpy as np\n",
2024-10-25 21:33:48 +04:00
"\n",
"# Загрузка данных\n",
"df = pd.read_csv(\"..//..//static//csv//Forbes Billionaires.csv\")\n",
2024-10-26 15:34:50 +04:00
"\n",
2024-10-25 21:33:48 +04:00
"# Вывод колонок\n",
"print(df.columns)\n",
"\n",
"print()\n",
"\n",
"df.info()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Описание набора \n",
"The World's Billionaires — ежегодный рейтинг самых богатых миллиардеров мира по документально подтвержденному состоянию, составляемый и публикуемый в марте каждого года американским деловым журналом Forbes. Общая чистая стоимость каждого человека в списке оценивается и указывается в долларах США на основе их документально подтвержденных активов с учетом задолженности и других факторов. Члены королевской семьи и диктаторы, чье богатство обусловлено их положением, исключены из этих списков. Этот рейтинг представляет собой индекс самых богатых документально подтвержденных лиц, исключая любой рейтинг тех, чье богатство не может быть полностью установлено.\n"
]
},
{
"cell_type": "code",
2024-10-27 17:55:35 +04:00
"execution_count": 845,
2024-10-25 21:33:48 +04:00
"metadata": {},
"outputs": [
2024-09-28 14:49:26 +04:00
{
2024-09-28 18:10:56 +04:00
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
2024-10-27 17:55:35 +04:00
" <th>Rank</th>\n",
" <th>Name</th>\n",
" <th>Networth</th>\n",
" <th>Age</th>\n",
" <th>Country</th>\n",
" <th>Source</th>\n",
" <th>Industry</th>\n",
2024-09-28 18:10:56 +04:00
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
2024-10-25 21:33:48 +04:00
" <th>0</th>\n",
2024-10-27 17:55:35 +04:00
" <td>1</td>\n",
" <td>Elon Musk</td>\n",
" <td>219.0</td>\n",
" <td>50</td>\n",
" <td>United States</td>\n",
" <td>Tesla, SpaceX</td>\n",
" <td>Automotive</td>\n",
2024-09-28 18:10:56 +04:00
" </tr>\n",
" <tr>\n",
2024-10-25 21:33:48 +04:00
" <th>1</th>\n",
2024-10-27 17:55:35 +04:00
" <td>2</td>\n",
" <td>Jeff Bezos</td>\n",
" <td>171.0</td>\n",
" <td>58</td>\n",
" <td>United States</td>\n",
" <td>Amazon</td>\n",
" <td>Technology</td>\n",
2024-09-28 18:10:56 +04:00
" </tr>\n",
" <tr>\n",
2024-10-25 21:33:48 +04:00
" <th>2</th>\n",
2024-10-27 17:55:35 +04:00
" <td>3</td>\n",
" <td>Bernard Arnault & family</td>\n",
" <td>158.0</td>\n",
" <td>73</td>\n",
" <td>France</td>\n",
" <td>LVMH</td>\n",
" <td>Fashion & Retail</td>\n",
2024-09-28 18:10:56 +04:00
" </tr>\n",
" <tr>\n",
2024-10-25 21:33:48 +04:00
" <th>3</th>\n",
" <td>4</td>\n",
2024-10-27 17:55:35 +04:00
" <td>Bill Gates</td>\n",
" <td>129.0</td>\n",
" <td>66</td>\n",
" <td>United States</td>\n",
" <td>Microsoft</td>\n",
" <td>Technology</td>\n",
2024-09-28 18:10:56 +04:00
" </tr>\n",
" <tr>\n",
2024-10-25 21:33:48 +04:00
" <th>4</th>\n",
2024-10-27 17:55:35 +04:00
" <td>5</td>\n",
" <td>Warren Buffett</td>\n",
" <td>118.0</td>\n",
" <td>91</td>\n",
" <td>United States</td>\n",
" <td>Berkshire Hathaway</td>\n",
" <td>Finance & Investments</td>\n",
2024-09-28 18:10:56 +04:00
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
2024-10-27 17:55:35 +04:00
" Rank Name Networth Age Country \\\n",
"0 1 Elon Musk 219.0 50 United States \n",
"1 2 Jeff Bezos 171.0 58 United States \n",
"2 3 Bernard Arnault & family 158.0 73 France \n",
"3 4 Bill Gates 129.0 66 United States \n",
"4 5 Warren Buffett 118.0 91 United States \n",
2024-10-26 15:34:50 +04:00
"\n",
2024-10-27 17:55:35 +04:00
" Source Industry \n",
"0 Tesla, SpaceX Automotive \n",
"1 Amazon Technology \n",
"2 LVMH Fashion & Retail \n",
"3 Microsoft Technology \n",
"4 Berkshire Hathaway Finance & Investments "
2024-09-28 18:10:56 +04:00
]
},
2024-10-27 17:55:35 +04:00
"execution_count": 845,
2024-09-28 18:10:56 +04:00
"metadata": {},
"output_type": "execute_result"
2024-09-28 14:49:26 +04:00
}
],
"source": [
2024-10-25 21:33:48 +04:00
"# Вывод столбцов\n",
2024-10-27 17:55:35 +04:00
"df.head()"
2024-09-28 14:49:26 +04:00
]
},
{
"cell_type": "code",
2024-10-27 17:55:35 +04:00
"execution_count": 846,
2024-09-28 14:49:26 +04:00
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
2024-10-25 21:33:48 +04:00
" <th>Rank</th>\n",
" <th>Networth</th>\n",
2024-09-28 14:49:26 +04:00
" <th>Age</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
2024-10-25 21:33:48 +04:00
" <th>count</th>\n",
" <td>2600.000000</td>\n",
" <td>2600.000000</td>\n",
" <td>2600.000000</td>\n",
2024-09-28 14:49:26 +04:00
" </tr>\n",
" <tr>\n",
2024-10-25 21:33:48 +04:00
" <th>mean</th>\n",
" <td>1269.570769</td>\n",
" <td>4.860750</td>\n",
" <td>64.271923</td>\n",
2024-09-28 14:49:26 +04:00
" </tr>\n",
" <tr>\n",
2024-10-25 21:33:48 +04:00
" <th>std</th>\n",
" <td>728.146364</td>\n",
" <td>10.659671</td>\n",
" <td>13.220607</td>\n",
2024-09-28 14:49:26 +04:00
" </tr>\n",
" <tr>\n",
2024-10-25 21:33:48 +04:00
" <th>min</th>\n",
" <td>1.000000</td>\n",
" <td>1.000000</td>\n",
" <td>19.000000</td>\n",
2024-09-28 14:49:26 +04:00
" </tr>\n",
" <tr>\n",
2024-10-25 21:33:48 +04:00
" <th>25%</th>\n",
" <td>637.000000</td>\n",
" <td>1.500000</td>\n",
" <td>55.000000</td>\n",
2024-09-28 14:49:26 +04:00
" </tr>\n",
" <tr>\n",
2024-10-25 21:33:48 +04:00
" <th>50%</th>\n",
" <td>1292.000000</td>\n",
" <td>2.400000</td>\n",
" <td>64.000000</td>\n",
2024-09-28 14:49:26 +04:00
" </tr>\n",
" <tr>\n",
2024-10-25 21:33:48 +04:00
" <th>75%</th>\n",
" <td>1929.000000</td>\n",
" <td>4.500000</td>\n",
" <td>74.000000</td>\n",
2024-09-28 14:49:26 +04:00
" </tr>\n",
" <tr>\n",
2024-10-25 21:33:48 +04:00
" <th>max</th>\n",
" <td>2578.000000</td>\n",
" <td>219.000000</td>\n",
" <td>100.000000</td>\n",
2024-09-28 14:49:26 +04:00
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
2024-10-27 17:55:35 +04:00
" Rank Networth Age\n",
2024-10-25 21:33:48 +04:00
"count 2600.000000 2600.000000 2600.000000\n",
"mean 1269.570769 4.860750 64.271923\n",
"std 728.146364 10.659671 13.220607\n",
"min 1.000000 1.000000 19.000000\n",
"25% 637.000000 1.500000 55.000000\n",
"50% 1292.000000 2.400000 64.000000\n",
"75% 1929.000000 4.500000 74.000000\n",
"max 2578.000000 219.000000 100.000000"
2024-09-28 14:49:26 +04:00
]
},
2024-10-27 17:55:35 +04:00
"execution_count": 846,
2024-09-28 14:49:26 +04:00
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
2024-10-25 21:33:48 +04:00
"# Краткая статистическая сводка для данных:\n",
"df.describe()"
2024-09-28 14:49:26 +04:00
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
2024-10-25 21:33:48 +04:00
"### Получение сведений о пропущенных данных"
2024-09-28 14:49:26 +04:00
]
},
{
"cell_type": "code",
2024-10-27 17:55:35 +04:00
"execution_count": 847,
2024-09-28 14:49:26 +04:00
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
2024-10-25 21:33:48 +04:00
"Rank 0\n",
"Name 0\n",
"Networth 0\n",
"Age 0\n",
"Country 0\n",
"Source 0\n",
"Industry 0\n",
"dtype: int64\n"
2024-09-28 14:49:26 +04:00
]
}
],
"source": [
2024-10-25 21:33:48 +04:00
"# Количество пустых значений признаков\n",
"print(df.isnull().sum())\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Нет пропущенных данных"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Анализ сведений о наборе данных\n",
2024-09-28 14:49:26 +04:00
"\n",
2024-10-25 21:33:48 +04:00
"**Н а б о р данных:** \n",
2024-09-28 14:49:26 +04:00
"\n",
2024-10-25 21:33:48 +04:00
"Н а б о р данных представляет собой информацию о самых богатых миллиардерах мира. Их состоянии, стране, источнике богатсва, отрасль, в которой они работают. По этим данным будет проводиться анализ. "
2024-09-28 14:49:26 +04:00
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
2024-10-25 21:33:48 +04:00
"**Проблемная область:**\n",
2024-09-28 14:49:26 +04:00
"\n",
2024-10-25 21:33:48 +04:00
"Анализ данных из списка миллиардеров Forbes позволяет не только понять текущее состояние богатства в мире, но и выявить более глубокие тенденции и паттерны, которые могут помочь в принятии бизнес-решений, понимании экономических процессов и определении направлений для дальнейших исследований. Эти данные могут быть основой для многочисленных статей, отчетов и аналитических исследований, что делает их ценными для широкого круга специалистов в различных областях."
2024-09-28 14:49:26 +04:00
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
2024-10-25 21:33:48 +04:00
"**Анализ содержимого**\n",
"\n",
"*Объекты наблюдения:* миллиардеры.\n",
"\n",
"*Атрибуты объектов:* имя, величина богатства, возраст, страна, источник, индустрия\n",
"\n",
"*Связи между объектами:* \n",
" 1) Зависимость между возрастом миллиардера и е г о состоянием. \n",
" 2) В каких странах наибольшее количество миллиардеров и насколько их состояние велико по сравнению с другими странами.\n",
" 3) Как источник богатства связан с определенными индустриями. \n",
" 4) В каких странах преобладают миллиардеры из определенных отраслей. \n",
" 5) Могут ли более молодые миллиардеры быть более склонными к успеху в определенных индустриях (например, технологии), а более старшие миллиардеры — в традиционных отраслях (например, финансы).\n",
"\n",
"\n"
2024-09-28 14:49:26 +04:00
]
},
{
2024-10-25 21:33:48 +04:00
"cell_type": "markdown",
2024-09-28 14:49:26 +04:00
"metadata": {},
"source": [
2024-10-25 21:33:48 +04:00
"### Бизнес-цель\n",
"1. Концентрация и география богатства\n",
"\n",
2024-10-26 15:34:50 +04:00
" **Цель:** Выявить страны с наибольшим количеством миллиардеров и наибольшей концентрацией богатства для оценки экономической стабильности и перспектив для инвестиций в эти регионы.\n",
2024-10-25 21:33:48 +04:00
"\n",
2024-10-26 15:34:50 +04:00
" **Эффект:** Выбор стратегических регионов для выхода на рынок или расширения бизнеса. Повышение вероятности успешной экспансии за счет инвестиций в страны с наиболее стабильной экономической ситуацией и высоким уровнем благосостояния.\n",
2024-10-25 21:33:48 +04:00
"\n",
2024-10-26 15:34:50 +04:00
"2. Возрастные и демографические характеристики миллиардной элиты\n",
2024-09-28 14:49:26 +04:00
"\n",
2024-10-26 15:34:50 +04:00
" **Цель:** Проанализировать возрастные и демографические характеристики миллиардеров, чтобы выявить общие черты, такие как средний возраст успешных предпринимателей, страны происхождения и индустрии, в которых они добились успеха.\n",
2024-09-28 14:49:26 +04:00
"\n",
2024-10-26 15:34:50 +04:00
" **Эффект:** Определение возрастных групп или регионов с наибольшей вероятностью для предпринимательского успеха. Возможность целенаправленного поиска бизнес-партнеров или инвесторов из этих регионов и возрастных групп.\n",
2024-09-28 14:49:26 +04:00
"\n",
2024-10-25 21:33:48 +04:00
"### Техническая цель\n",
"1. Концентрация и география богатства\n",
2024-09-28 14:49:26 +04:00
"\n",
2024-10-26 15:34:50 +04:00
" **Цель:** Построить аналитическую модель для оценки концентрации богатства по странам.\n",
2024-09-28 14:49:26 +04:00
"\n",
2024-10-26 15:34:50 +04:00
" **Н а вход модели подаются:** страна, количество миллиардеров, совокупное состояние миллиардеров в стране.\n",
2024-09-28 14:49:26 +04:00
"\n",
2024-10-26 15:34:50 +04:00
" **Целевые показатели:** Количество миллиардеров и общий объем состояния в стране.\n",
2024-09-28 14:49:26 +04:00
"\n",
2024-10-26 15:34:50 +04:00
"2. Возрастные и демографические характеристики миллиардной элиты\n",
2024-09-28 14:49:26 +04:00
"\n",
2024-10-26 15:34:50 +04:00
" **Цель:** Разработать модель для анализа возрастной и региональной структуры миллиардного состояния.\n",
2024-09-28 14:49:26 +04:00
"\n",
2024-10-26 15:34:50 +04:00
" **Н а вход подаются:** возраст, страна, индустрия, размер состояния.\n",
2024-09-28 14:49:26 +04:00
"\n",
2024-10-26 15:34:50 +04:00
" **Целевые показатели:** Средний возраст миллиардеров по странам и индустриям, распределение состояния по возрастным категориям.\n",
2024-09-28 14:49:26 +04:00
"\n",
2024-10-25 21:33:48 +04:00
"\n"
2024-09-28 14:49:26 +04:00
]
},
{
"cell_type": "code",
2024-10-27 17:55:35 +04:00
"execution_count": 848,
2024-10-25 21:33:48 +04:00
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA1IAAAIjCAYAAAAJLyrXAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAB+GUlEQVR4nO3de3gU9d3+8XsTcibZECDZUDkERDHgCRSMgFqLAiJq1YpWPFQfrRTbCtpWbBWiVcQ+VWurWH38aRUtaj3iIS2CoJRIEMQagxRoAJUsCCEHAgkhO78/0l2z5LCzye7O7Ob9uq5clzv7nZnP7o7Jfpj53uMwDMMQAAAAAMC0OKsLAAAAAIBoQyMFAAAAAEGikQIAAACAINFIAQAAAECQaKQAAAAAIEg0UgAAAAAQJBopAAAAAAgSjRQAAAAABIlGCgAAAACCRCMFAOj2tm3bJofDof/93/+1uhQAQJSgkQKAbuyZZ56Rw+FQcnKyvv7661bPn3XWWRoxYkSntv3CCy/o4Ycf7mKFofXOO+9o3rx5VpfRJY899pgcDofGjBljdSkA0K3RSAEA1NDQoPvvvz+k27RrI1VYWGh1GV3y/PPPa9CgQSopKdGWLVusLgcAui0aKQCATjrpJD355JPauXOn1aWERV1dndUlhER5eblWr16tBx98UH379tXzzz9vdUkA0G3RSAEAdMcdd6ipqcn0WalFixZp1KhRSklJUVZWli6//HJ9+eWXvufPOussvf3229q+fbscDoccDocGDRokwzDUp08fzZ492zfW4/EoMzNT8fHxqqqq8i1fsGCBevToof379/uWLV++XOPHj1daWpoyMzN14YUXauPGjX61zZs3Tw6HQ2VlZfrhD3+oXr16ady4cbr22mv16KOPSpKvJofD0eq1PfHEExoyZIiSkpJ06qmnau3atR2+Fx9//LEcDof+8pe/tHru73//uxwOh9566y1JUm1trW655RYNGjRISUlJys7O1jnnnKP169d3uA+v559/Xr169dKUKVN06aWXtttI7d27V1dddZUyMjKUmZmpa665Rp9++qkcDoeeeeYZv7FffPGFLr30UmVlZSk5OVmnnHKK3nzzTVP1AEB31sPqAgAA1svLy9PVV1+tJ598Urfffrv69evX7th7771Xd955py677DL9z//8j7755hv98Y9/1BlnnKFPPvlEmZmZ+vWvf63q6mp99dVXeuihhyRJPXv2lMPh0NixY/XBBx/4tvevf/1L1dXViouL0z//+U9NmTJFkvThhx/q5JNPVs+ePSVJ7733niZPnqzBgwdr3rx5OnjwoP74xz9q7NixWr9+vQYNGuRX5w9+8AMNHTpU9913nwzD0Mknn6ydO3dq6dKleu6559p8bS+88IJqa2v14x//WA6HQw888IAuvvhi/ec//1FCQkKb65xyyikaPHiwXnrpJV1zzTV+z7344ovq1auXJk6cKEm66aab9Le//U0333yz8vPztXfvXq1atUobN27UyJEjO/iEmj3//PO6+OKLlZiYqCuuuEILFy7U2rVrdeqpp/rGeDweTZ06VSUlJZoxY4aGDRumN954o1VtkvT5559r7Nix+s53vqPbb79daWlpeumll3TRRRfplVde0fe///2ANQFAt2UAALqtp59+2pBkrF271ti6davRo0cP42c/+5nv+TPPPNMYPny47/G2bduM+Ph449577/XbzmeffWb06NHDb/mUKVOMgQMHttrn7373OyM+Pt6oqakxDMMwHnnkEWPgwIHG6NGjjV/96leGYRhGU1OTkZmZacyaNcu33kknnWRkZ2cbe/fu9S379NNPjbi4OOPqq6/2LZs7d64hybjiiita7XvmzJlGW3/6ysvLDUlG7969jcrKSt/yN954w5BkLFmypPWb18KcOXOMhIQEv3UbGhqMzMxM47rrrvMtczqdxsyZMzvcVns+/vhjQ5KxdOlSwzAMw+PxGEcddZTx85//3G/cK6+8YkgyHn74Yd+ypqYm4+yzzzYkGU8//bRv+fe+9z3j+OOPN+rr633LPB6PcfrppxtDhw7tVJ0A0F1waR8AQJI0ePBgXXXVVXriiSdUUVHR5phXX31VHo9Hl112mfbs2eP7cblcGjp0qN5///2A+xk/fryampq0evVqSc1nnsaPH6/x48frww8/lCSVlpaqqqpK48ePlyRVVFRow4YNuvbaa5WVleXb1gknnKBzzjlH77zzTqv93HTTTUG/B9OmTVOvXr38apWk//znPwHXa2xs1Kuvvupb9o9//ENVVVWaNm2ab1lmZqbWrFnTqblozz//vHJycvTd735XUvPlidOmTdPixYvV1NTkG1dUVKSEhATdcMMNvmVxcXGaOXOm3/YqKyu1fPlyXXbZZaqtrfV9lnv37tXEiRO1efPmNpMcAQDNaKQAAD6/+c1vdPjw4XbnSm3evFmGYWjo0KHq27ev38/GjRu1e/fugPsYOXKkUlNTfU2Tt5E644wz9PHHH6u+vt733Lhx4yRJ27dvlyQde+yxrbZ33HHHac+ePa0CJfLy8sy/8P8aMGCA32NvU7Vv374O1zvxxBM1bNgwvfjii75lL774ovr06aOzzz7bt+yBBx5QaWmp+vfvr9GjR2vevHkBmzRJampq0uLFi/Xd735X5eXl2rJli7Zs2aIxY8Zo165dWrZsmW/s9u3blZubq9TUVL9tHH300X6Pt2zZIsMwdOedd7b6LOfOnStJpj5PAOiumCMFAPAZPHiwpk+frieeeEK33357q+c9Ho8cDofeffddxcfHt3reO5+pIwkJCRozZow++OADbdmyRW63W+PHj1dOTo4aGxu1Zs0affjhhxo2bJj69u3b6deSkpIS9DptvSZJMgwj4LrTpk3Tvffeqz179ig9PV1vvvmmrrjiCvXo8e2f2ssuu0zjx4/Xa6+9pn/84x/63e9+pwULFujVV1/V5MmT29328uXLVVFRocWLF2vx4sWtnn/++ed17rnnmniF3/J4PJKk2267zTeH60hHNl8AgG/RSAEA/PzmN7/RokWLtGDBglbPDRkyRIZhKC8vT8ccc0yH22krEc9r/PjxWrBggd577z316dNHw4YNk8Ph0PDhw/Xhhx/qww8/1Pnnn+8bP3DgQEnSpk2bWm3riy++UJ8+fZSWlhbwtXVUU1dNmzZNhYWFeuWVV5STk6Oamhpdfvnlrcbl5ubqJz/5iX7yk59o9+7dGjlypO69994OG6nnn39e2dnZvtTBll599VW99tprevzxx5WSkqKBAwfq/fff14EDB/zOSh15z6nBgwdLam5sJ0yY0NmXDQDdFpf2AQD8DBkyRNOnT9ef//xnud1uv+cuvvhixcfHq7CwsNVZGsMwtHfvXt/jtLQ0VVdXt7mP8ePHq6GhQQ8//LDGjRvna3DGjx+v5557Tjt37vTNT5Kam4+TTjpJf/nLX/wi0ktLS/WPf/xD5513nqnX5m22Wm4jVI477jgdf/zxevHFF/Xiiy8qNzdXZ5xxhu/5pqamVu9Hdna2+vXrp4aGhna3e/DgQb366qs6//zzdemll7b6ufnmm1VbW+uLLJ84caIaGxv15JNP+rbh8XhaNWHZ2dk666yz9Oc//7nNOXHffPNNp94HAOguOCMFAGjl17/+tZ577jlt2rRJw4cP9y0fMmSIfvvb32rOnDnatm2bLrroIqWnp6u8vFyvvfaabrzxRt12222SpFGjRunFF1/U7Nmzdeqpp6pnz56aOnWqJKmgoEA9evTQpk2bdOONN/q2f8YZZ2jhwoWS5NdISdLvfvc7TZ48WQUFBbr++ut98edOp1Pz5s0z9bpGjRolSfrZz36miRMnKj4+vs2zRp01bdo03XXXXUpOTtb111+vuLhv/72ytrZWRx11lC699FKdeOKJ6tmzp9577z2tXbtWv//979vd5ptvvqna2lpdcMEFbT5/2mmn+W7OO23aNF100UUaPXq0br31Vm3ZskXDhg3Tm2++qcrKSkn+Z+UeffRRjRs3Tscff7xuuOEGDR48WLt27VJxcbG++uorffrppyF6ZwA
"text/plain": [
"<Figure size 1000x600 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Визуализируем отношение возраста и состояния\n",
"plt.figure(figsize=(10, 6))\n",
"plt.scatter(df[\"Networth\"], df[\"Age\"])\n",
"plt.xlabel(\"Networth\")\n",
"plt.ylabel(\"Age\")\n",
"plt.title(\"Networth vs Age\")\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Данные показывают, что в группе миллиардеров нет прямой зависимости между возрастом и величиной состояния, но большинство людей с огромным состоянием (выше 100 миллиардов) — это исключения, а не правило."
]
},
{
"cell_type": "code",
2024-10-27 17:55:35 +04:00
"execution_count": 849,
2024-10-25 21:33:48 +04:00
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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6+vL1q1b73ifpk2bkpWVxc6dO4EbI8pNmzaladOmbN++HYAjR45w8eJFmjZtCkBycjKxsbGEhobi6upq6qtmzZq0bt2ar7/+Osd9+vfvX+B30LVrV0qUKGEWK8Dx48fveF1mZiarV682lX333XdcvHiRrl27mspcXFzYvXs3f/zxx13HlJqaCoCjo+Ndtb/5Lm6dAg/wxhtvAPyjb5/79etnNqX95u/y5MmTd91H3759sba2Nivr2bMnGRkZ/O9//zOVrVixguvXr9O9e/d7jldEpLBT0iwiIvIv884773D9+vU8v20+evQoRqMRX19fSpcubXbEx8dz9uzZO96jTp06FC9e3JQg30yamzVrxt69e0lPTzfVNWnSBMCUlFWpUiVHf9WqVeOvv/7i8uXLZuUVK1a8+wf//ypUqGB2fjOB/vvvv/O9LiAggKpVq5qmKcONpK9UqVI8/fTTprJp06Zx5MgRPDw8aNCgAWPHjr1jQu7k5ATc+B76bpw8eRIrKyt8fHzMyt3c3HBxcSlQgnu7e30/t8rt91K1alXq16/PkiVLTGVLlizhqaeeyvEcIiKPEn3TLCIi8i/j7e1N9+7dmTdvHiNGjMhRn52djcFg4JtvvskxWgiYvj/OT9GiRXnyySf54YcfOHbsGGfOnKFp06aULVuWzMxMdu/ezfbt26latSqlS5e+52exs7Mr8DW5PROA0Wi847Vdu3Zl4sSJ/PXXXzg6OrJu3TpCQkIoUuT//knUpUsXmjZtypo1a/juu+949913mTp1KqtXr+bZZ5/NtV8nJyfKlSvHkSNHCvQsuS1ydreysrJyLf8n7+emvH4vPXv25LXXXuO3334jIyODn376iTlz5tx1vyIi/0YaaRYREfkXujnaPHXq1Bx1lSpVwmg0UrFiRVq1apXjeOqpp0xt80vamjZtSkxMDJs3b6ZUqVJUrVoVV1dXqlevzvbt29m+fTvNmjUztff09AQgISEhR1+//PILpUqVuquti/5JInknXbt25fr166xatYpvvvmG1NRUXnjhhRzt3N3dGThwIGvXruXEiROULFmSiRMn5tt3u3btSExMvKtVpD09PcnOzubo0aNm5X/++ScXL140vUu4MVJ864rlANeuXctzev7duNd3/MILL2Btbc2yZctYsmQJRYsWNZvaLiLyKFLSLCIi8i9UqVIlunfvzieffMKZM2fM6p577jmsra2JiIjIMbpoNBo5f/686dze3p6UlJRc79G0aVMyMjKYOXMmTZo0MSVaTZs2ZdGiRfzxxx+m74nhRqJZq1YtFi5caJbkHTlyhO+++442bdrc1bPdTKxvTxTvh2rVqlGjRg1WrFjBihUrcHd3N0v8s7KycryPMmXKUK5cuRxbQd3urbfewt7enj59+vDnn3/mqE9MTGTWrFkApncxc+ZMszYzZswAMK1ODjd+17euZA43ttzKa6T5btjb29/T+y1VqhTPPvssixcvZsmSJQQFBVGqVKl7jkNE5N9A07NFRET+pUaOHMmiRYtISEigevXqpvJKlSoxYcIEwsPDSUpKokOHDjg6OnLixAnWrFlDv379CAsLA6Bu3bqsWLGCYcOGUb9+fRwcHAgODgagYcOGFClShISEBPr162fqv1mzZsydOxfALGkGePfdd3n22Wdp2LAhL7/
"text/plain": [
"<Figure size 1000x1500 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Визуализируем отношение страны и состояния\n",
"plt.figure(figsize=(10, 15))\n",
"plt.scatter(df[\"Networth\"], df[\"Country\"])\n",
"plt.xlabel(\"Networth\")\n",
"plt.ylabel(\"Country\")\n",
"plt.title(\"Networth vs Country\")\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Эта диаграмма указывает на значительное неравенство в распределении состояния между странами, с явным доминированием США, Китая, Индии и нескольких других крупных экономик. Большинство других стран имеют гораздо меньше миллиардных состояний, и их концентрация богатства значительно ниже."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Проблема выбранного набора данных \n",
2024-09-28 14:49:26 +04:00
"\n",
2024-10-25 21:33:48 +04:00
"**Зашумленность данных:** \n",
"Если данные собирались из разных источников, возможно наличие некорректных значений, таких как неправильные оценки состояния, неверные возрастные данные или ошибки в указании стран и индустрий. Это может привести к ошибочным выводам.\n",
2024-09-28 14:49:26 +04:00
"\n",
2024-10-25 21:33:48 +04:00
"**Смещение данных:** \n",
"Н а б о р данных может быть смещен в пользу определенных стран или индустрий. Например, список может включать больше американских миллиардеров или миллиардеров из технологической индустрии, что не отражает равномерно весь глобальный бизнес-контекст.\n",
2024-09-28 14:49:26 +04:00
"\n",
2024-10-25 21:33:48 +04:00
"**Выбросы:** \n",
"Супербогатые миллиардеры (например, с состоянием более 100 миллиардов) могут сильно выделяться и смещать средние значения, делая общие выводы менее репрезентативными для большинства людей в выборке. \n",
2024-09-28 14:49:26 +04:00
"\n",
2024-10-25 21:33:48 +04:00
"**Актуальность данных:** \n",
"Если данные о состоянии миллиардеров собирались несколько лет назад, то они могут уже не быть актуальными. Изменения на рынках, политические события или пандемии могут значительно повлиять на текущее состояние бизнеса и богатство людей."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
2024-10-27 17:55:35 +04:00
"### Распределение признаков\n",
"\n"
2024-09-28 14:49:26 +04:00
]
},
{
"cell_type": "code",
2024-10-27 17:55:35 +04:00
"execution_count": 850,
2024-09-28 14:49:26 +04:00
"metadata": {},
"outputs": [
{
"data": {
2024-10-27 17:55:35 +04:00
"image/png": "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
2024-09-28 14:49:26 +04:00
"text/plain": [
2024-10-27 17:55:35 +04:00
"<Figure size 1500x1000 with 3 Axes>"
2024-09-28 14:49:26 +04:00
]
},
"metadata": {},
2024-10-25 21:33:48 +04:00
"output_type": "display_data"
2024-09-28 14:49:26 +04:00
}
],
"source": [
2024-10-27 17:55:35 +04:00
"# Проверка распределения признаков\n",
"plt.figure(figsize=(15, 10))\n",
"for i, column in enumerate(['Networth', 'Age', 'Industry'], 1):\n",
" plt.subplot(4, 1, i)\n",
" sns.histplot(df[column], bins=20, kde=True)\n",
" plt.title(f\"Распределение {column}\")\n",
"plt.tight_layout()\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Борьба с выбросами\n",
"\n",
"Используем метод медианного абсолютного отклонения и удалим выбросы.\n",
"\n",
"Этот метод особенно устойчив к выбросам, поскольку он основывается на медиане, а не на среднем значении, что делает е г о более подходящим для выявления выбросов в данных с асимметричным распределением."
]
},
{
"cell_type": "code",
"execution_count": 851,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA7oAAAIjCAYAAAAtGmdSAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABE5ElEQVR4nO3deXwV5b0/8G8SSAiEgMgSUGRTXBCKYvFaBWyLC+57bXFBLfQqtlqvtbUuiNVaaxe1dWl7a9XqbRU3amt7FaugFUGxiLjgBkVRQMCAoARI5vcH95wfIWE1kPL4fr9eeZEzZ+Z5vvPMTMgnM2emIMuyLAAAACARhY1dAAAAADQkQRcAAICkCLoAAAAkRdAFAAAgKYIuAAAASRF0AQAASIqgCwAAQFIEXQAAAJLSpLELAABoTMuXL49FixZFkyZNon379o1dDgANwBldAKBet99+exQUFMTzzz/f2KU0uHHjxsVRRx0VrVu3jtLS0thhhx3ivPPOa+yyAGgggi6QvNwv67mvZs2aRc+ePePcc8+NefPmNXZ5/BsaNmxYFBQURJ8+fSLLsjrvFxQUxLnnnrtZbf/whz+Mhx566FNW2LBuvvnmuP322xu7jK3m5ptvjkMOOSQWL14cN9xwQzz22GPx2GOPxZVXXtnYpQHQQFy6DHxmXHnlldGtW7dYvnx5PP3003HLLbfEI488EtOnT4/mzZs3dnn8G3rppZfigQceiOOPP77B2vzhD38YJ5xwQhxzzDEN1uandfPNN0fbtm1j2LBhjV3KFvfGG2/EBRdcECNGjIibb745CgoKGrskALYAZ3SBz4whQ4bEKaecEl//+tfj9ttvj/PPPz9mzpwZY8eObezS+DdUWloaPXv2jCuvvLLes7op+Pjjjxu7hK3uxhtvjIqKirjxxhuFXICECbrAZ9aXvvSliIiYOXNmREQsWrQoLrzwwujdu3eUlZVFeXl5DBkyJF588cU6yy5fvjyuuOKK6NmzZzRr1iw6duwYxx13XLz11lsRETFr1qxal0uv/XXggQfm23ryySejoKAg7rnnnvj+978fFRUV0aJFizjqqKPinXfeqdP3pEmT4tBDD41WrVpF8+bNY9CgQfGPf/yj3nU88MAD6+3/iiuuqDPvXXfdFf369YvS0tJo06ZNnHzyyfX2v751W1NNTU1cf/310atXr2jWrFl06NAhvvGNb8SHH35Ya76uXbvGEUccUaefc889t06b9dV+3XXX1RnTiIiqqqoYNWpU7LzzzlFSUhKdO3eOiy66KKqqquodq7UVFhbGpZdeGtOmTYsHH3xwg/NvTH8FBQWxbNmyuOOOO/JjNmzYsJg2bVoUFBTEn/70p/y8U6ZMiYKCgth7771r9TNkyJDYd999a027+eabo1evXlFSUhKdOnWKkSNHRmVlZa15DjzwwNhzzz1jypQpMXDgwGjevHl8//vfj65du8bLL78c48ePr3f/zK3bBRdcEO3atYsWLVrEscceGx988MFGjeNrr70WJ510UrRr1y5KS0tj1113jUsuuWS9y+SOidxXSUlJ9OzZM6655ppaf3S44ooroqCgIBYsWLDOtrp27VrrTPWzzz4b/fr1i3POOSc6dOgQJSUlseeee8ZvfvObWsvl9vOf/OQn8fOf/zy6dOkSpaWlMWjQoJg+fXqdfv7+97/HgAEDokWLFtG6des4+uij49VXX60z35w5c+Kss86KTp06RUlJSXTr1i3OPvvsWLFiRURs/M+hNcdo6tSpdfooKiqKgoKCuO+++/LThw0bFl27dq017zvvvBOlpaVRUFAQs2bNWuc4AmxrXLoMfGblQun2228fERFvv/12PPTQQ3HiiSdGt27dYt68efGrX/0qBg0aFK+88kp06tQpIiKqq6vjiCOOiMcffzxOPvnkOO+88+Kjjz6Kxx57LKZPnx49evTI9/HVr341DjvssFr9XnzxxfXWc/XVV0dBQUF897vfjfnz58f1118fgwcPjqlTp0ZpaWlErP5lesiQIdGvX78YNWpUFBYWxu9+97v40pe+FE899VT079+/Trs77rhjXHPNNRERsXTp0jj77LPr7fuyyy6Lk046Kb7+9a/HBx98EL/4xS9i4MCB8c9//jNat25dZ5kRI0bEgAEDIiLigQceqBMGv/GNb8Ttt98eZ5xxRnzrW9+KmTNnxi9/+cv45z//Gf/4xz+iadOm9Y7DpqisrMyv25pqamriqKOOiqeffjpGjBgRu+++e7z00kvx85//PF5//fWN/ozs1772tfjBD34QV155ZRx77LHrPAO4sf39/ve/j69//evRv3//GDFiRERE9OjRI/bcc89o3bp1TJgwIY466qiIiHjqqaeisLAwXnzxxViyZEmUl5dHTU1NPPPMM/llI1aHvdGjR8fgwYPj7LPPjhkzZsQtt9wSzz33XJ1xXrhwYQwZMiROPvnkOOWUU6JDhw5x4IEHxje/+c0oKyvLB9AOHTrUWr9vfvObsd1228WoUaNi1qxZcf3118e5554b99xzz3rHb9q0aTFgwIBo2rRpjBgxIrp27RpvvfVWPPzww3H11VdvcPy///3vx+677x6ffPJJ/g9B7du3j7POOmuDy67LwoUL4/nnn48mTZrEyJEjo0ePHvHQQw/FiBEjYuHChfG9732v1vx33nlnfPTRRzFy5MhYvnx53HDDDfGlL30pXnrppfw4jRs3LoYMGRLdu3ePK664Ij755JP4xS9+Efvvv3+88MIL+XD53nvvRf/+/aOysjJGjBgRu+22W8yZMyfuu++++Pjjj6O4uHijfw7lNGvWLH73u9/FDTfckJ92xx13RHFxcSxfvnyD43H55Zdv1HwA25wMIHG/+93vsojIxo0bl33wwQfZO++8k/3xj3/Mtt9++6y0tDR79913syzLsuXLl2fV1dW1lp05c2ZWUlKSXXnllflpt912WxYR2c9+9rM6fdXU1OSXi4jsuuuuqzNPr169skGDBuVfP/HEE1lEZDvssEO2ZMmS/PR77703i4jshhtuyLe9yy67ZIcccki+nyzLso8//jjr1q1bdtBBB9Xp6wtf+EK255575l9/8MEHWURko0aNyk+bNWtWVlRUlF199dW1ln3ppZeyJk2a1Jn+xhtvZBGR3XHHHflpo0aNytb8L+Wpp57KIiK7++67ay37t7/9rc70Ll26ZIcffnid2keOHJmt/d/U2rVfdNFFWfv27bN+/frVGtPf//73WWFhYfbUU0/VWv7WW2/NIiL7xz/+Uae/NZ1++ulZixYtsizLsjvuuCOLiOyBBx6oVcfIkSM3q78WLVpkp59+ep0+Dz/88Kx///7518cdd1x23HHHZUVFRdlf//rXLMuy7IUXXsgiIhs7dmyWZVk2f/78rLi4ODv44INr7bu//OUvs4jIbrvttvy0QYMGZRGR3XrrrXX6XnufzMkdO4MHD661z33729/OioqKssrKyjrLrGngwIFZy5Yts3/961+1pq/ZVn1yx8QTTzyRn7Z8+fKssLAwO+ecc/LTcvvdBx98sM62unTpUmu8u3TpkkVEdvvtt+enrVq1Kvvyl7+clZSUZAsWLMiy7P8fw2v+jMiyLJs0aVIWEdm3v/3t/LS+fftm7du3zxYuXJif9uKLL2aFhYXZaaedlp922mmnZYWFhdlzzz1Xp87cmGzsz6HcGH31q1/Ntt9++6yqqir/3i677JJ97WtfyyIiGzNmTH766aefnnXp0iX/evr06VlhYWE2ZMiQLCKymTNnrnMcAbY1Ll0GPjMGDx4c7dq1i86dO8fJJ58cZWVl8eCDD8YOO+wQERElJSVRWLj6x2J1dXUsXLgwysrKYtddd40XXngh3879998fbdu2jW9+85t1+vg0n/k77bTTomXLlvnXJ5xwQnTs2DEeeeSRiIiYOnVqvPHGG/G1r30tFi5cGAsWLIgFCxbEsmXL4stf/nJMmDAhampqarW5fPnyaNas2Xr7feCBB6KmpiZOOumkfJsLFiyIioqK2GWXXeKJJ56oNX/uEsuSkpJ1tjlmzJho1apVHHTQQbXa7NevX5S
"text/plain": [
"<Figure size 1200x600 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Количество выявленных выбросов: 508\n",
"Количество записей после удаления выбросов: 2092\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA7oAAAIjCAYAAAAtGmdSAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA3cElEQVR4nO3deZgU9b3o4e8wwAzLDIhsIggIAgoSFJdrZIBEFBH3JBwVFfBEPBFM1GMSjTGIEZebnMQtItnEhbjghp5oFD0ComgUxRWNGlDiAqKyKotM3T+804dmBhiI2uTH+z7PPNrV1VW/7uka5jNVXVWUZVkWAAAAkIg6hR4AAAAAfJGELgAAAEkRugAAACRF6AIAAJAUoQsAAEBShC4AAABJEboAAAAkRegCAACQlLqFHgAAANuuNWvWxEcffRSVlZXRpk2bQg8HoFbs0QWALTBx4sQoKiqKZ555ptBDgS/NM888EyeccEI0b948SkpKYqeddopvfetbhR4WQK0JXdhOVf2yXvVVWloaXbp0idGjR8fChQsLPTy2QcOHD4+ioqLo2bNnZFlW7f6ioqIYPXr0Vi37kksuiXvuueefHOEX69prr42JEycWehjwlZsyZUr06dMnXnnllRg3blxMnTo1pk6dGhMmTCj00ABqzaHLsJ276KKLomPHjrFq1aqYOXNmjB8/Pu6///546aWXomHDhoUeHtugF198Me66664vdO/OJZdcEt/+9rfj6KOP/sKW+c+69tpro3nz5jF8+PBCDwW+Mh999FF897vfjYEDB8bkyZOjfv36hR4SwFaxRxe2c4MGDYoTTzwxvvvd78bEiRPjzDPPjHnz5sWUKVMKPTS2QQ0aNIguXbrERRddVONe3RR88sknhR4CFMz1118fq1atiokTJ4pc4F+a0AXyfPOb34yIiHnz5kXE53/dP+ecc2LPPfeMxo0bR3l5eQwaNCief/75ao9dtWpVXHjhhdGlS5coLS2NnXbaKY499th48803IyJi/vz5eYdLb/jVv3//3LKmTZsWRUVFcdttt8VPfvKTaN26dTRq1CiOPPLIWLBgQbV1P/XUU3HooYdGkyZNomHDhtGvX794/PHHa3yO/fv3r3H9F154YbV5b7755ujdu3c0aNAgmjVrFscdd1yN69/Uc1tfZWVlXHHFFdG9e/coLS2NVq1axWmnnRYff/xx3nwdOnSIww8/vNp6Ro8eXW2ZNY39F7/4RbXXNCJi9erVMWbMmOjcuXOUlJREu3bt4kc/+lGsXr26xtdqQ3Xq1Imf/vSn8cILL8Tdd9+92flrs76ioqJYuXJl3HDDDbnXbPjw4fHCCy9EUVFR3Hvvvbl5Z8+eHUVFRbH33nvnrWfQoEGx//7750279tpro3v37lFSUhJt2rSJUaNGxZIlS/Lm6d+/f/To0SNmz54dffv2jYYNG8ZPfvKT6NChQ7z88ssxffr0Gt+fVc/t7LPPjhYtWkSjRo3imGOOiQ8++GCzr0nVIeAb+5o2bVre/JMnT869B5s3bx4nnnhivPPOO9WW++qrr8aQIUOiRYsW0aBBg+jatWucf/751ebr0KFDrdb7wAMPREVFRTRq1CjKyspi8ODB8fLLL2/yuf3973+PoqKi+PWvf13tvieeeCKKiorilltuyZte2+3x+uuvj29+85vRsmXLKCkpiT322CPGjx9f4ziqfn5s+NWhQ4e8+Wq7PWzssPzDDz88b5lVPwc2POR91KhRuff1+p577rk49NBDo0WLFnnjrGnbX9+GP2/q1asXHTp0iB/+8IexZs2a3Hy1+Tx5//79897bTz75ZPTq1SsuueSSaNeuXZSUlMRuu+0Wl112WVRWVtb4ukyaNCm6du0apaWl0bt375gxY0a19Tz33HMxaNCgKC8vj8aNG8dBBx0UTz75ZLX5lixZEmeddVZ06NAhSkpKom3btnHyySfH4sWLc/MsWrQo/v3f/z1atWoVpaWl8bWvfS1uuOGGrXqNgHQ5dBnIUxWlO+64Y0R8/ovrPffcE9/5zneiY8eOsXDhwpgwYUL069cvXnnlldwZONetWxeHH354PPLII3HcccfFD37wg1i+fHlMnTo1XnrppejUqVNuHccff3wcdthhees977zzahzPuHHjoqioKH784x/HokWL4oorrogBAwbEnDlzokGDBhER8T//8z8xaNCg6N27d4wZMybq1KmT+6X4sccei/3226/actu2bRuXXnppRESsWLEivve979W47gsuuCCGDBkS3/3ud+ODDz6Iq6++Ovr27RvPPfdcNG3atNpjRo4cGRUVFRERcdddd1WLwdNOOy0mTpwYI0aMiO9///sxb968uOaaa+K5556Lxx9/POrVq1fj67AllixZkntu66usrIwjjzwyZs6cGSNHjozdd989Xnzxxfj1r38df/vb32r9GdkTTjghfv7zn8dFF10UxxxzTLXw3tL13XTTTfHd73439ttvvxg5cmRERHTq1Cl69OgRTZs2jRkzZsSRRx4ZERGPPfZY1KlTJ55//vlYtmxZlJeXR2VlZTzxxBO5x0ZEXHjhhTF27NgYMGBAfO9734vXXnstxo8fH08//XS11/nDDz+MQYMGxXHHHRcnnnhitGrVKvr37x9nnHFGNG7cOBeLrVq1ynt+Z5xxRuywww4xZsyYmD9/flxxxRUxevTouO222zb7GpaUlMTvf//7vGlPP/10XHXVVXnTqt4r++67b1x66aWxcOHCuPLKK+Pxxx/Pew++8MILUVFREfXq1YuRI0dGhw4d4s0334z77rsvxo0bV239FRUVuddr7ty5cckll+Tdf9NNN8WwYcNi4MCBcfnll8cnn3wS48ePjz59+sRzzz1XLRir7LrrrnHggQfGpEmT4qyzzsq7b9KkSVFWVhZHHXVUtcfVZnscP358dO/ePY488sioW7du3HfffXH66adHZWVljBo1qsbx/OQnP4ndd989IiJ++9vfxttvv52774vaHjbnjTfeiN/97nfVpi9dujQGDRoUWZbF2WefHe3atYuIqPa6bUrVz5vVq1fHgw8+GL/85S+jtLQ0fv7zn2/1eD/88MOYOXNmzJw5M0455ZTo3bt3PPLII3HeeefF/Pnz47rrrsubf/r06XHbbbfF97///SgpKYlrr702Dj300PjrX/8aPXr0iIiIl19+OSoqKqK8vDx+9KMfRb169WLChAnRv3//mD59eu6PVCtWrIiKioqYO3dunHLKKbH33nvH4sWL4957741//OMf0bx58/j000+jf//+8cYbb8To0aOjY8eOMXny5Bg+fHgsWbIkfvCDH3zprxHwLyIDtkvXX399FhHZww8/nH3wwQfZggULsltvvTXbcccdswYNGmT/+Mc/sizLslWrVmXr1q3Le+y8efOykpKS7KKLLspN++Mf/5hFRParX/2q2roqKytzj4uI7Be/+EW1ebp3757169cvd/vRRx/NIiLbeeeds2XLluWm33777VlEZFdeeWVu2bvttls2cODA3HqyLMs++eSTrGPHjtnBBx9cbV1f//rXsx49euRuf/DBB1lEZGPGjMlNmz9/flZcXJyNGzcu77EvvvhiVrdu3WrTX3/99SwishtuuCE3bcyYMdn6P2Yfe+yxLCKySZMm5T32L3/5S7Xp7du3zwYPHlxt7KNGjco2/NG94dh/9KMfZS1btsx69+6d95redNNNWZ06dbLHHnss7/HXXXddFhHZ448/Xm196xs2bFjWqFGjLMuy7IYbbsgiIrvrrrvyxjFq1KitWl+jRo2yYcOGVVvn4MGDs/322y93+9hjj82OPfbYrLi4OHvggQeyLMuyZ599NouIbMqUKVmWZdmiRYuy+vXrZ4ccckjee/eaa67JIiL74x//mJvWr1+/LCKy6667rtq6N3xPVqnadgYMGJD3njvrrLOy4uLibMmSJdUes771X8f1TZ48OYuI7NFHH82yLMvWrFmTtWzZMuvRo0f26aef5ub77//+7ywisp/97Ge5aX379s3Kysqyt956K2+Z64+vys4775yNGDEid7tqW6ta7/Lly7O
"text/plain": [
"<Figure size 1200x600 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Визуализация результатов\n",
"plt.figure(figsize=(12, 6))\n",
"sns.boxplot(x=df['Networth'])\n",
"plt.title('Распределение Networth с выбросами')\n",
"plt.show()\n",
2024-10-25 21:33:48 +04:00
"\n",
2024-10-27 17:55:35 +04:00
"# Вычисление медианы для 'Networth'\n",
"median_price = df['Networth'].median()\n",
2024-09-28 14:49:26 +04:00
"\n",
2024-10-27 17:55:35 +04:00
"# Вычисление абсолютных отклонений от медианы\n",
"df['absolute_deviation'] = np.abs(df['Networth'] - median_price)\n",
2024-10-25 21:33:48 +04:00
"\n",
2024-10-27 17:55:35 +04:00
"# Вычисление медианного абсолютного отклонения (MAD)\n",
"mad = df['absolute_deviation'].median()\n",
"\n",
"# Определение порога для выбросов. Вы можете настроить множитель в зависимости от ваших предпочтений\n",
"threshold = 3 * mad\n",
"\n",
"# Выявление выбросов\n",
"outliers = df[df['absolute_deviation'] > threshold]\n",
"\n",
"# Вывод количества найденных выбросов и оставшихся записей\n",
"print(f\"Количество выявленных выбросов: {len(outliers)}\")\n",
"\n",
"\n",
"# Удаление выбросов из набора данных\n",
"df = df[df['absolute_deviation'] <= threshold].drop(columns=['absolute_deviation'])\n",
"\n",
"\n",
"print(f\"Количество записей после удаления выбросов: {len(df)}\")\n",
"\n",
"# Визуализация результатов\n",
"plt.figure(figsize=(12, 6))\n",
"sns.boxplot(x=df['Networth'])\n",
"plt.title('Распределение Networth после удаления выбросов')\n",
"plt.show()\n",
"\n",
"\n"
2024-10-25 21:33:48 +04:00
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
2024-10-26 15:34:50 +04:00
"### Разбиение датасета на три части: обучающую, контрольную и тестовую выборки\n",
"\n",
"Обучающая выборка (training set): используется для обучения модели. Это основная часть данных, на которой модель обучается находить зависимости.\n",
"\n",
"Валидационная выборка (validation set): используется для настройки гиперпараметров модели. В о время обучения модель проверяется на этой выборке, чтобы выбрать оптимальные параметры и избежать переобучения.\n",
"\n",
"Тестовая выборка (test set): используется для окончательной проверки модели после завершения процесса обучения. Тестовые данные не используются в процессе обучения и позволяют объективно оценить качество модели."
2024-10-25 21:33:48 +04:00
]
},
{
"cell_type": "code",
2024-10-27 17:55:35 +04:00
"execution_count": 852,
2024-10-25 21:33:48 +04:00
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
2024-10-27 17:55:35 +04:00
"Размер обучающей выборки: 1255\n",
"Размер контрольной выборки: 418\n",
"Размер тестовой выборки: 419\n"
2024-10-25 21:33:48 +04:00
]
}
],
"source": [
"from sklearn.model_selection import train_test_split\n",
2024-09-28 14:49:26 +04:00
"\n",
2024-10-25 21:33:48 +04:00
"# Выделим признаки (все столбцы, кроме целевого, например \"Networth\") и целевой признак (например, \"Networth\")\n",
"X = df.drop(columns=[\"Networth\"]) # Признаки (все столбцы, кроме целевого признака 'Networth')\n",
"y = df[\"Networth\"] # Целевая переменная (Networth)\n",
2024-09-28 14:49:26 +04:00
"\n",
2024-10-25 21:33:48 +04:00
"# 1. Разделяем данные на обучающую (60%) и временную (40%) выборки\n",
"X_train, X_temp, y_train, y_temp = train_test_split(X, y, test_size=0.4, random_state=42)\n",
2024-09-28 14:49:26 +04:00
"\n",
2024-10-25 21:33:48 +04:00
"# 2. Разделяем временную выборку пополам на контрольную (20%) и тестовую (20%) выборки\n",
"X_val, X_test, y_val, y_test = train_test_split(X_temp, y_temp, test_size=0.5, random_state=42)\n",
2024-09-28 14:49:26 +04:00
"\n",
2024-10-25 21:33:48 +04:00
"# Выводим размеры выборок\n",
"print(f\"Размер обучающей выборки: {len(X_train)}\")\n",
"print(f\"Размер контрольной выборки: {len(X_val)}\")\n",
"print(f\"Размер тестовой выборки: {len(X_test)}\")\n"
2024-09-28 14:49:26 +04:00
]
2024-10-26 15:34:50 +04:00
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
2024-10-27 17:55:35 +04:00
"### Оценка сбалансированности выборок\n",
"\n",
"Для оценки сбалансированности выборок можно проверить распределение целевой переменной (price) в каждой из них. Мы можем построить гистограммы или использовать базовую статистику, такую как среднее значение и стандартное отклонение, чтобы убедиться, что распределение price в обучающей, валидационной и тестовой выборках примерно одинаково."
]
},
{
"cell_type": "code",
"execution_count": 853,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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Up8+fbRv3z6XZTI/i/379+vBBx9UQECAgoOD9dxzzyklJSVLvFee7xkZGerRo4cqVKigvXv3uiyb0+8vFC7qWVfUs/+PejZ367777rtq27atgoODVaZMGbVs2dJt7Fd3nZDdOXH1973kOJ6aNm0qi8WiTz755JqxXjlcvWxOY3VXJ/Xq1SvL+57dZxEbG6syZcpke7xc79pFyt0xmJtzKCMjQ2+88YZq164tHx8f1axZU2PGjMlyXmRe63h4eKhZs2Zq1qyZvvrqK1kslnw77q51TmS6+hopOjpavr6+Onz4sPM9DA0N1bBhw3T27Nks6y9evNj5vVaxYkX97W9/0/Hjx12Wybye+vPPP9WtWzf5+fkpLCxMEyZMcOknNjPeK4+p8+fPq2XLlqpVq5bi4uKc03P6/Yeii2sEV1wj/D+uEdzXuZnDldvOzffhypUr1aFDB5UrV04BAQG69dZbtWjRIknuj9fsjrHc1HU52f+LFy/qhRdecH6G9erV07vvvpulL/HMY9DHx0ctW7ZUgwYN3B6D2blyXzw8PFS1alUNHTrU5RohL59/dHS0atWqpSVLlqh27dry9vZW9erV9fLLL2fJTUi5u07Zvn272rZtqzJlyqhWrVqaO3euy3LZ5UlOnDihmjVrqlWrVrpw4YJz+o2cl0UJLdFNklnJBgcHS5L+/PNPLVu2TA888IBq1aqlhIQEffDBB+rQoYP27t2rsLAwSZLNZlOvXr20Zs0aPfzww3ruued0/vx5rV69Wnv27FHt2rWd23jkkUfUo0cPl+1GRkZmG8+bb74pi8Wi0aNH6+TJk5o2bZq6dOminTt3qkyZMpIcSaru3burZcuWGjt2rKxWq+bPn69OnTrpp59+0m233Zal3GrVqmny5MmSpAsXLuipp57KdtuvvfaaHnzwQT3xxBM6deqUZs6cqfbt2+vXX39VUFBQlnWGDh2qO+64Q5L01VdfZUmODhs2TJ988okGDRqkZ599VkeOHNGsWbP066+/6ueff5aXl1e270NuJCYmOvftSna7Xffcc482bdqkoUOHqkGDBtq9e7emTp2qP/74w+UBjjfq0qVL6tChg44fP65hw4apevXq+uWXXxQZGam4uDhNmzYt37aVV3fccYeGDh0qu92uPXv2aNq0aTpx4oR++umna643btw4jR8/Xl26dNFTTz2lAwcOaM6cOdq6davzMzxz5owkx3Fdp04djR8/XikpKZo9e7batWunrVu3qm7duurYsaPCw8O1cOFC3XfffS7bWbhwoWrXrp3r/tMXL16sS5cu6amnnlJwcLC2bNmimTNn6tixY1q8eLHb9RYtWqS//e1vatasmSZPnqwzZ85oxowZ2rRpk3799VdVrFgxV3G4k5fzKtPo0aNzta369evrlVdekWEYOnz4sN577z316NHjhp4GnvnZjhgxQi1bttRbb72lU6dOZfte/fjjj+revbtuuukmjRs3TpcvX9bMmTPVrl077dixI8tF5oMPPqiaNWtq8uTJio6O1owZM3Tu3Dl9+umnbuN54okntH79eq1evVoNGzZ0Tr+R9xkFi3rWddvUs3lTkuvZnK47ffp03XPPPerfv7/S0tL0+eef64EHHtCKFSvUs2fPbMudOnWq8zv6zTffvG4c//73v6/7LI7mzZvrhRd
"text/plain": [
"<Figure size 1500x500 with 3 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Статистика для обучающей выборки:\n",
"count 1255.000000\n",
"mean 2.334104\n",
"std 1.118726\n",
"min 1.000000\n",
"25% 1.500000\n",
"50% 2.000000\n",
"75% 3.000000\n",
"max 5.300000\n",
"Name: Networth, dtype: float64\n",
"\n",
"Статистика для валидационной выборки:\n",
"count 418.000000\n",
"mean 2.381340\n",
"std 1.078073\n",
"min 1.000000\n",
"25% 1.500000\n",
"50% 2.100000\n",
"75% 3.000000\n",
"max 5.300000\n",
"Name: Networth, dtype: float64\n",
"\n",
"Статистика для тестовой выборки:\n",
"count 419.000000\n",
"mean 2.308831\n",
"std 1.131241\n",
"min 1.000000\n",
"25% 1.400000\n",
"50% 1.900000\n",
"75% 3.100000\n",
"max 5.200000\n",
"Name: Networth, dtype: float64\n"
]
}
],
"source": [
"# Визуализация распределения цены в каждой из выборок\n",
"plt.figure(figsize=(15, 5))\n",
"\n",
"# Распределение в обучающей выборке\n",
"plt.subplot(1, 3, 1)\n",
"sns.histplot(y_train, bins=30, kde=True, color='blue')\n",
"plt.title(\"Распределение цены в обучающей выборке\")\n",
"plt.xlabel(\"Цена\")\n",
"plt.ylabel(\"Частота\")\n",
"\n",
"# Распределение в валидационной выборке\n",
"plt.subplot(1, 3, 2)\n",
"sns.histplot(y_val, bins=30, kde=True, color='green')\n",
"plt.title(\"Распределение цены в валидационной выборке\")\n",
"plt.xlabel(\"Цена\")\n",
"plt.ylabel(\"Частота\")\n",
"\n",
"# Распределение в тестовой выборке\n",
"plt.subplot(1, 3, 3)\n",
"sns.histplot(y_test, bins=30, kde=True, color='orange')\n",
"plt.title(\"Распределение цены в тестовой выборке\")\n",
"plt.xlabel(\"Цена\")\n",
"plt.ylabel(\"Частота\")\n",
"\n",
"plt.tight_layout()\n",
"plt.show()\n",
"\n",
"# Вывод базовой статистики для каждой выборки\n",
"print(\"Статистика для обучающей выборки:\")\n",
"print(y_train.describe())\n",
"print(\"\\nС та тис тика для валидационной выборки:\")\n",
"print(y_val.describe())\n",
"print(\"\\nС та тис тика для тестовой выборки:\")\n",
"print(y_test.describe())\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Гистограммы и статистика показыают, что распределения в обучающей, валидационной и тестовой выборках схожи, а значит выборки можно считать сбалансированными."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Борьба с о смещением\n",
"\n",
2024-10-26 15:34:50 +04:00
"Теперь оценим сбалансированность. Анализ проведём в категории 'Networth'."
]
},
{
"cell_type": "code",
2024-10-27 17:55:35 +04:00
"execution_count": 854,
2024-10-26 15:34:50 +04:00
"metadata": {},
"outputs": [
{
"data": {
2024-10-27 17:55:35 +04:00
"image/png": "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Tk5WvXr1VL58eR06dCjXxxnuQ08QXKpv376KjIzUiBEjtGPHDk2ZMkX79u2zf4mWLnxohIaGauDAgQoNDdXPP/+sF198UUlJSRo3bpx9W2PHjtXrr7+uhx56SPXq1dNTTz2l9PR0fffdd6pdu7ZGjRqlDz/8UPfee6+2bt3qdLiezYsvvpjlC7gzw4cP10cffaTPP/88yxe3yy1cuFDt2rVThQoVNGLECJ07d04TJ05U48aNtW7dOsXHx+vee+9VpUqV7I956qmnVKVKFfXu3du+rEqVKpKkBQsW6K677lJMTIz69++v6Ohobdu2TfPmzVP//v1zvM9LdenSRfHx8Ro9erRWrlypCRMm6OTJk/r4448lSZ988om97bJly/T+++/rrbfeUvHixSVJpUqVyvb5L126VN9//32266+2b0l65JFHNH36dHXu3FmDBg3SqlWrNHr0aG3btk1z58512F7Tpk3Vu3dvWa1Wbd68WePHj9fBgwe1bNkye5u3335bHTp0ULdu3ZSenq6ZM2fq/vvv17x589S+fftsY3WFc+fOqUWLFvrjjz/Ut29flS9fXrNmzVLPnj116tQp+zm06dq1q+68806HZY0bN5Z04Qtto0aNdPbsWfXr10/FihXT9OnT1aFDB82ePVudOnXKNo709HSFhYWpf//+KlasmHbv3q2JEydq48aN2rRpU66fV1JSkj788EN17dpVjz76qJKTk/XRRx+pTZs2Wr16da6HSVmtVnXo0EG//vqrevfurSpVqmjTpk166623tHPnTn311Ve5jtGZP/74Qx988EGW5adPn1a7du1kjNHAgQMVFxcn6cJ7MzdGjBihZs2aacqUKVfsDdqyZYsaN26s0qVLa+jQoQoJCdEXX3yhe+65R19++aU6deqkZs2aqV+/fpowYYKee+45+zWhSpUqOnnypN566y1t2bLF/sV32bJl8vHx0bJly9SvXz/7Mklq1qyZpNy/HqdOnarU1FT17t1bAQEB6tSpk5KTk/Xiiy+qd+/eatq0qSSpUaNG9secPHlSbdu21b333qsuXbpo9uzZGjJkiGrUqKF27dpd9Rh26tRJ9957rzIyMrRixQq9//77OnfunMN1yZmcXDeOHz8u6cJnUr169TRmzBgdPXpUEyZM0K+//qr169erePHi6ty5s/r06aMZM2aoTp06DvuZMWOGWrRokevehpx+xl3u1Vdf1fPPP69mzZqpT58+2rNnjyZNmqRVq1Zp1apVCggIyFUc2Xnsscc0bdo09erVS/369bPvZ/369Vq+fLn8/PycPi4jI0PPP/98rvaVk+t2bh0/flypqan6v//7P9122216/PHHtXv3bk2ePDnLsbI9zwYNGmj06NE6cuSI3n77bS1fvlzr169XZGSkfbuZmZlq27atbr31Vr322muaP3++hg8froyMDL300ktOYzl//rzuu+8+7d+/X8uXL1dMTIx9XV6PM/KRAa5g6tSpRpJZs2ZNjtrVq1fPpKen25e/9tprRpL5+uuv7cvOnj2b5fGPPfaYCQ4ONqmpqcYYY1JTU03JkiVN165d7W02bNhgfH19Ta1atUxaWpoxxphjx46ZsLAw079/f3u7Hj16mHLlytn/3rx5s/Hx8THt2rUzksyePXvs68qVK2d69OhhjDHmvffeM5L
2024-10-26 15:34:50 +04:00
"text/plain": [
"<Figure size 1000x600 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"train_data = X_train.copy()\n",
"train_data[\"Networth\"] = y_train # Добавляем целевой признак\n",
"\n",
"# Сортируем данные по возрастанию целевого признака 'Networth'\n",
"train_data_sorted = train_data.sort_values(by=\"Networth\").reset_index(drop=True)\n",
"\n",
"# Построение графика\n",
"plt.figure(figsize=(10, 6))\n",
"plt.plot(train_data_sorted[\"Networth\"], label=\"Networth (отсортированный)\")\n",
"plt.title(\"График отсортированного значения Networth в обучающей выборке\")\n",
"plt.xlabel(\"Индекс (после сортировки)\")\n",
"plt.ylabel(\"Networth\")\n",
"plt.legend()\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"По оценке сбалансированности данных сбалансированность умеренная."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
2024-10-27 17:55:35 +04:00
"## 2. Второй набор данных House Sales in King County, USA (Данные о продаже домов в округе Кинг, США)\n",
2024-10-26 15:34:50 +04:00
"\n",
"Выгрузка данных из CSV файла в датафрейм\n"
]
},
{
"cell_type": "code",
2024-10-27 17:55:35 +04:00
"execution_count": 855,
2024-10-26 15:34:50 +04:00
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Index(['id', 'date', 'price', 'bedrooms', 'bathrooms', 'sqft_living',\n",
" 'sqft_lot', 'floors', 'waterfront', 'view', 'condition', 'grade',\n",
" 'sqft_above', 'sqft_basement', 'yr_built', 'yr_renovated', 'zipcode',\n",
" 'lat', 'long', 'sqft_living15', 'sqft_lot15'],\n",
" dtype='object')\n",
"\n",
"<class 'pandas.core.frame.DataFrame'>\n",
"RangeIndex: 21613 entries, 0 to 21612\n",
"Data columns (total 21 columns):\n",
" # Column Non-Null Count Dtype \n",
"--- ------ -------------- ----- \n",
" 0 id 21613 non-null int64 \n",
" 1 date 21613 non-null object \n",
" 2 price 21613 non-null float64\n",
" 3 bedrooms 21613 non-null int64 \n",
" 4 bathrooms 21613 non-null float64\n",
" 5 sqft_living 21613 non-null int64 \n",
" 6 sqft_lot 21613 non-null int64 \n",
" 7 floors 21613 non-null float64\n",
" 8 waterfront 21613 non-null int64 \n",
" 9 view 21613 non-null int64 \n",
" 10 condition 21613 non-null int64 \n",
" 11 grade 21613 non-null int64 \n",
" 12 sqft_above 21613 non-null int64 \n",
" 13 sqft_basement 21613 non-null int64 \n",
" 14 yr_built 21613 non-null int64 \n",
" 15 yr_renovated 21613 non-null int64 \n",
" 16 zipcode 21613 non-null int64 \n",
" 17 lat 21613 non-null float64\n",
" 18 long 21613 non-null float64\n",
" 19 sqft_living15 21613 non-null int64 \n",
" 20 sqft_lot15 21613 non-null int64 \n",
"dtypes: float64(5), int64(15), object(1)\n",
"memory usage: 3.5+ MB\n"
]
}
],
"source": [
"# Загрузка данных\n",
"df_houses = pd.read_csv(\"..//..//static//csv//kc house data.csv\")\n",
"\n",
"# Вывод\n",
"print(df_houses.columns)\n",
"\n",
"print()\n",
"\n",
"df_houses.info()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Описание набора \n",
"Этот набор данных содержит цены на продажу домов в округе Кинг, включая Сиэтл. Он включает дома, проданные в период с мая 2014 года по май 2015 года.\n",
"\n",
"Это отличный набор данных для оценки простых регрессионных моделей.\n"
]
},
{
"cell_type": "code",
2024-10-27 17:55:35 +04:00
"execution_count": 856,
2024-10-26 15:34:50 +04:00
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>id</th>\n",
" <th>date</th>\n",
" <th>price</th>\n",
" <th>bedrooms</th>\n",
" <th>bathrooms</th>\n",
" <th>sqft_living</th>\n",
" <th>sqft_lot</th>\n",
" <th>floors</th>\n",
" <th>waterfront</th>\n",
" <th>view</th>\n",
" <th>...</th>\n",
" <th>grade</th>\n",
" <th>sqft_above</th>\n",
" <th>sqft_basement</th>\n",
" <th>yr_built</th>\n",
" <th>yr_renovated</th>\n",
" <th>zipcode</th>\n",
" <th>lat</th>\n",
" <th>long</th>\n",
" <th>sqft_living15</th>\n",
" <th>sqft_lot15</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>7129300520</td>\n",
" <td>20141013T000000</td>\n",
" <td>221900.0</td>\n",
" <td>3</td>\n",
" <td>1.00</td>\n",
" <td>1180</td>\n",
" <td>5650</td>\n",
" <td>1.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>7</td>\n",
" <td>1180</td>\n",
" <td>0</td>\n",
" <td>1955</td>\n",
" <td>0</td>\n",
" <td>98178</td>\n",
" <td>47.5112</td>\n",
" <td>-122.257</td>\n",
" <td>1340</td>\n",
" <td>5650</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>6414100192</td>\n",
" <td>20141209T000000</td>\n",
" <td>538000.0</td>\n",
" <td>3</td>\n",
" <td>2.25</td>\n",
" <td>2570</td>\n",
" <td>7242</td>\n",
" <td>2.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>7</td>\n",
" <td>2170</td>\n",
" <td>400</td>\n",
" <td>1951</td>\n",
" <td>1991</td>\n",
" <td>98125</td>\n",
" <td>47.7210</td>\n",
" <td>-122.319</td>\n",
" <td>1690</td>\n",
" <td>7639</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>5631500400</td>\n",
" <td>20150225T000000</td>\n",
" <td>180000.0</td>\n",
" <td>2</td>\n",
" <td>1.00</td>\n",
" <td>770</td>\n",
" <td>10000</td>\n",
" <td>1.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>6</td>\n",
" <td>770</td>\n",
" <td>0</td>\n",
" <td>1933</td>\n",
" <td>0</td>\n",
" <td>98028</td>\n",
" <td>47.7379</td>\n",
" <td>-122.233</td>\n",
" <td>2720</td>\n",
" <td>8062</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>2487200875</td>\n",
" <td>20141209T000000</td>\n",
" <td>604000.0</td>\n",
" <td>4</td>\n",
" <td>3.00</td>\n",
" <td>1960</td>\n",
" <td>5000</td>\n",
" <td>1.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>7</td>\n",
" <td>1050</td>\n",
" <td>910</td>\n",
" <td>1965</td>\n",
" <td>0</td>\n",
" <td>98136</td>\n",
" <td>47.5208</td>\n",
" <td>-122.393</td>\n",
" <td>1360</td>\n",
" <td>5000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1954400510</td>\n",
" <td>20150218T000000</td>\n",
" <td>510000.0</td>\n",
" <td>3</td>\n",
" <td>2.00</td>\n",
" <td>1680</td>\n",
" <td>8080</td>\n",
" <td>1.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>...</td>\n",
" <td>8</td>\n",
" <td>1680</td>\n",
" <td>0</td>\n",
" <td>1987</td>\n",
" <td>0</td>\n",
" <td>98074</td>\n",
" <td>47.6168</td>\n",
" <td>-122.045</td>\n",
" <td>1800</td>\n",
" <td>7503</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>5 rows × 21 columns</p>\n",
"</div>"
],
"text/plain": [
" id date price bedrooms bathrooms sqft_living \\\n",
"0 7129300520 20141013T000000 221900.0 3 1.00 1180 \n",
"1 6414100192 20141209T000000 538000.0 3 2.25 2570 \n",
"2 5631500400 20150225T000000 180000.0 2 1.00 770 \n",
"3 2487200875 20141209T000000 604000.0 4 3.00 1960 \n",
"4 1954400510 20150218T000000 510000.0 3 2.00 1680 \n",
"\n",
" sqft_lot floors waterfront view ... grade sqft_above sqft_basement \\\n",
"0 5650 1.0 0 0 ... 7 1180 0 \n",
"1 7242 2.0 0 0 ... 7 2170 400 \n",
"2 10000 1.0 0 0 ... 6 770 0 \n",
"3 5000 1.0 0 0 ... 7 1050 910 \n",
"4 8080 1.0 0 0 ... 8 1680 0 \n",
"\n",
" yr_built yr_renovated zipcode lat long sqft_living15 \\\n",
"0 1955 0 98178 47.5112 -122.257 1340 \n",
"1 1951 1991 98125 47.7210 -122.319 1690 \n",
"2 1933 0 98028 47.7379 -122.233 2720 \n",
"3 1965 0 98136 47.5208 -122.393 1360 \n",
"4 1987 0 98074 47.6168 -122.045 1800 \n",
"\n",
" sqft_lot15 \n",
"0 5650 \n",
"1 7639 \n",
"2 8062 \n",
"3 5000 \n",
"4 7503 \n",
"\n",
"[5 rows x 21 columns]"
]
},
2024-10-27 17:55:35 +04:00
"execution_count": 856,
2024-10-26 15:34:50 +04:00
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Вывод столбцов\n",
"df_houses.head()"
]
},
{
"cell_type": "code",
2024-10-27 17:55:35 +04:00
"execution_count": 857,
2024-10-26 15:34:50 +04:00
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>id</th>\n",
" <th>price</th>\n",
" <th>bedrooms</th>\n",
" <th>bathrooms</th>\n",
" <th>sqft_living</th>\n",
" <th>sqft_lot</th>\n",
" <th>floors</th>\n",
" <th>waterfront</th>\n",
" <th>view</th>\n",
" <th>condition</th>\n",
" <th>grade</th>\n",
" <th>sqft_above</th>\n",
" <th>sqft_basement</th>\n",
" <th>yr_built</th>\n",
" <th>yr_renovated</th>\n",
" <th>zipcode</th>\n",
" <th>lat</th>\n",
" <th>long</th>\n",
" <th>sqft_living15</th>\n",
" <th>sqft_lot15</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>count</th>\n",
" <td>2.161300e+04</td>\n",
" <td>2.161300e+04</td>\n",
" <td>21613.000000</td>\n",
" <td>21613.000000</td>\n",
" <td>21613.000000</td>\n",
" <td>2.161300e+04</td>\n",
" <td>21613.000000</td>\n",
" <td>21613.000000</td>\n",
" <td>21613.000000</td>\n",
" <td>21613.000000</td>\n",
" <td>21613.000000</td>\n",
" <td>21613.000000</td>\n",
" <td>21613.000000</td>\n",
" <td>21613.000000</td>\n",
" <td>21613.000000</td>\n",
" <td>21613.000000</td>\n",
" <td>21613.000000</td>\n",
" <td>21613.000000</td>\n",
" <td>21613.000000</td>\n",
" <td>21613.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mean</th>\n",
" <td>4.580302e+09</td>\n",
" <td>5.400881e+05</td>\n",
" <td>3.370842</td>\n",
" <td>2.114757</td>\n",
" <td>2079.899736</td>\n",
" <td>1.510697e+04</td>\n",
" <td>1.494309</td>\n",
" <td>0.007542</td>\n",
" <td>0.234303</td>\n",
" <td>3.409430</td>\n",
" <td>7.656873</td>\n",
" <td>1788.390691</td>\n",
" <td>291.509045</td>\n",
" <td>1971.005136</td>\n",
" <td>84.402258</td>\n",
" <td>98077.939805</td>\n",
" <td>47.560053</td>\n",
" <td>-122.213896</td>\n",
" <td>1986.552492</td>\n",
" <td>12768.455652</td>\n",
" </tr>\n",
" <tr>\n",
" <th>std</th>\n",
" <td>2.876566e+09</td>\n",
" <td>3.671272e+05</td>\n",
" <td>0.930062</td>\n",
" <td>0.770163</td>\n",
" <td>918.440897</td>\n",
" <td>4.142051e+04</td>\n",
" <td>0.539989</td>\n",
" <td>0.086517</td>\n",
" <td>0.766318</td>\n",
" <td>0.650743</td>\n",
" <td>1.175459</td>\n",
" <td>828.090978</td>\n",
" <td>442.575043</td>\n",
" <td>29.373411</td>\n",
" <td>401.679240</td>\n",
" <td>53.505026</td>\n",
" <td>0.138564</td>\n",
" <td>0.140828</td>\n",
" <td>685.391304</td>\n",
" <td>27304.179631</td>\n",
" </tr>\n",
" <tr>\n",
" <th>min</th>\n",
" <td>1.000102e+06</td>\n",
" <td>7.500000e+04</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>290.000000</td>\n",
" <td>5.200000e+02</td>\n",
" <td>1.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>1.000000</td>\n",
" <td>1.000000</td>\n",
" <td>290.000000</td>\n",
" <td>0.000000</td>\n",
" <td>1900.000000</td>\n",
" <td>0.000000</td>\n",
" <td>98001.000000</td>\n",
" <td>47.155900</td>\n",
" <td>-122.519000</td>\n",
" <td>399.000000</td>\n",
" <td>651.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25%</th>\n",
" <td>2.123049e+09</td>\n",
" <td>3.219500e+05</td>\n",
" <td>3.000000</td>\n",
" <td>1.750000</td>\n",
" <td>1427.000000</td>\n",
" <td>5.040000e+03</td>\n",
" <td>1.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>3.000000</td>\n",
" <td>7.000000</td>\n",
" <td>1190.000000</td>\n",
" <td>0.000000</td>\n",
" <td>1951.000000</td>\n",
" <td>0.000000</td>\n",
" <td>98033.000000</td>\n",
" <td>47.471000</td>\n",
" <td>-122.328000</td>\n",
" <td>1490.000000</td>\n",
" <td>5100.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td>3.904930e+09</td>\n",
" <td>4.500000e+05</td>\n",
" <td>3.000000</td>\n",
" <td>2.250000</td>\n",
" <td>1910.000000</td>\n",
" <td>7.618000e+03</td>\n",
" <td>1.500000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>3.000000</td>\n",
" <td>7.000000</td>\n",
" <td>1560.000000</td>\n",
" <td>0.000000</td>\n",
" <td>1975.000000</td>\n",
" <td>0.000000</td>\n",
" <td>98065.000000</td>\n",
" <td>47.571800</td>\n",
" <td>-122.230000</td>\n",
" <td>1840.000000</td>\n",
" <td>7620.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75%</th>\n",
" <td>7.308900e+09</td>\n",
" <td>6.450000e+05</td>\n",
" <td>4.000000</td>\n",
" <td>2.500000</td>\n",
" <td>2550.000000</td>\n",
" <td>1.068800e+04</td>\n",
" <td>2.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>4.000000</td>\n",
" <td>8.000000</td>\n",
" <td>2210.000000</td>\n",
" <td>560.000000</td>\n",
" <td>1997.000000</td>\n",
" <td>0.000000</td>\n",
" <td>98118.000000</td>\n",
" <td>47.678000</td>\n",
" <td>-122.125000</td>\n",
" <td>2360.000000</td>\n",
" <td>10083.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
" <td>9.900000e+09</td>\n",
" <td>7.700000e+06</td>\n",
" <td>33.000000</td>\n",
" <td>8.000000</td>\n",
" <td>13540.000000</td>\n",
" <td>1.651359e+06</td>\n",
" <td>3.500000</td>\n",
" <td>1.000000</td>\n",
" <td>4.000000</td>\n",
" <td>5.000000</td>\n",
" <td>13.000000</td>\n",
" <td>9410.000000</td>\n",
" <td>4820.000000</td>\n",
" <td>2015.000000</td>\n",
" <td>2015.000000</td>\n",
" <td>98199.000000</td>\n",
" <td>47.777600</td>\n",
" <td>-121.315000</td>\n",
" <td>6210.000000</td>\n",
" <td>871200.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" id price bedrooms bathrooms sqft_living \\\n",
"count 2.161300e+04 2.161300e+04 21613.000000 21613.000000 21613.000000 \n",
"mean 4.580302e+09 5.400881e+05 3.370842 2.114757 2079.899736 \n",
"std 2.876566e+09 3.671272e+05 0.930062 0.770163 918.440897 \n",
"min 1.000102e+06 7.500000e+04 0.000000 0.000000 290.000000 \n",
"25% 2.123049e+09 3.219500e+05 3.000000 1.750000 1427.000000 \n",
"50% 3.904930e+09 4.500000e+05 3.000000 2.250000 1910.000000 \n",
"75% 7.308900e+09 6.450000e+05 4.000000 2.500000 2550.000000 \n",
"max 9.900000e+09 7.700000e+06 33.000000 8.000000 13540.000000 \n",
"\n",
" sqft_lot floors waterfront view condition \\\n",
"count 2.161300e+04 21613.000000 21613.000000 21613.000000 21613.000000 \n",
"mean 1.510697e+04 1.494309 0.007542 0.234303 3.409430 \n",
"std 4.142051e+04 0.539989 0.086517 0.766318 0.650743 \n",
"min 5.200000e+02 1.000000 0.000000 0.000000 1.000000 \n",
"25% 5.040000e+03 1.000000 0.000000 0.000000 3.000000 \n",
"50% 7.618000e+03 1.500000 0.000000 0.000000 3.000000 \n",
"75% 1.068800e+04 2.000000 0.000000 0.000000 4.000000 \n",
"max 1.651359e+06 3.500000 1.000000 4.000000 5.000000 \n",
"\n",
" grade sqft_above sqft_basement yr_built yr_renovated \\\n",
"count 21613.000000 21613.000000 21613.000000 21613.000000 21613.000000 \n",
"mean 7.656873 1788.390691 291.509045 1971.005136 84.402258 \n",
"std 1.175459 828.090978 442.575043 29.373411 401.679240 \n",
"min 1.000000 290.000000 0.000000 1900.000000 0.000000 \n",
"25% 7.000000 1190.000000 0.000000 1951.000000 0.000000 \n",
"50% 7.000000 1560.000000 0.000000 1975.000000 0.000000 \n",
"75% 8.000000 2210.000000 560.000000 1997.000000 0.000000 \n",
"max 13.000000 9410.000000 4820.000000 2015.000000 2015.000000 \n",
"\n",
" zipcode lat long sqft_living15 sqft_lot15 \n",
"count 21613.000000 21613.000000 21613.000000 21613.000000 21613.000000 \n",
"mean 98077.939805 47.560053 -122.213896 1986.552492 12768.455652 \n",
"std 53.505026 0.138564 0.140828 685.391304 27304.179631 \n",
"min 98001.000000 47.155900 -122.519000 399.000000 651.000000 \n",
"25% 98033.000000 47.471000 -122.328000 1490.000000 5100.000000 \n",
"50% 98065.000000 47.571800 -122.230000 1840.000000 7620.000000 \n",
"75% 98118.000000 47.678000 -122.125000 2360.000000 10083.000000 \n",
"max 98199.000000 47.777600 -121.315000 6210.000000 871200.000000 "
]
},
2024-10-27 17:55:35 +04:00
"execution_count": 857,
2024-10-26 15:34:50 +04:00
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Краткая статистическая сводка для данных:\n",
"df_houses.describe()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Получение сведений о пропущенных данных"
]
},
{
"cell_type": "code",
2024-10-27 17:55:35 +04:00
"execution_count": 858,
2024-10-26 15:34:50 +04:00
"metadata": {},
"outputs": [
{
2024-10-27 17:55:35 +04:00
"data": {
"text/plain": [
"Rank 0\n",
"Name 0\n",
"Networth 0\n",
"Age 0\n",
"Country 0\n",
"Source 0\n",
"Industry 0\n",
"dtype: int64"
]
},
"execution_count": 858,
"metadata": {},
"output_type": "execute_result"
2024-10-26 15:34:50 +04:00
}
],
"source": [
2024-10-27 17:55:35 +04:00
"# Процент пропущенных значений признаков\n",
"for i in df.columns:\n",
" null_rate = df[i].isnull().sum() / len(df) * 100\n",
" if null_rate > 0:\n",
" print(f'{i} Процент пустых значений: %{null_rate:.2f}')\n",
"\n",
"# Проверка на пропущенные данные\n",
"df.isnull().sum()"
2024-10-26 15:34:50 +04:00
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Нет пропущенных данных"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Анализ сведений о наборе данных\n",
"\n",
"**Н а б о р данных:** \n",
"\n",
"Этот набор данных содержит цены на продажу домов в округе Кинг, включая Сиэтл. Он включает дома, проданные в период с мая 2014 года по май 2015 года.\n",
"\n",
"**Проблемная область:**\n",
"\n",
"Н а б о р данных о продаже домов в округе Кинг предоставляет информацию для анализа факторов, влияющих на стоимость недвижимости. Проблемная область заключается в предсказании цены дома на основе различных факторов, таких как площадь, количество комнат, местоположение и состояние дома. Такой анализ важен для оценки стоимости недвижимости и выявления ключевых факторов, определяющих е е цену, что помогает в принятии обоснованных решений покупателям, продавцам и инвесторам.\n",
"\n",
"**Анализ содержимого**\n",
"\n",
"*Объекты наблюдения:* отдельные сделки по продаже домов.\n",
"\n",
"*Атрибуты объектов:* \n",
"\n",
"id — уникальный идентификатор дома. \n",
"date — дата продажи дома. \n",
"price — цена продажи дома (целевая переменная). \n",
"bedrooms — количество спален. \n",
"bathrooms — количество ванных комнат. \n",
"sqft_living — жилая площадь. \n",
"sqft_lot — площадь участка. \n",
"floors — количество этажей. \n",
"waterfront — дом с видом на воду или без. \n",
"view — индекс, отражающий качество вида. \n",
"condition — состояние дома. \n",
"grade — рейтинг строительного качества. \n",
"sqft_above — площадь без подвала. \n",
"sqft_basement — площадь подвала. \n",
"yr_built — год постройки. \n",
"yr_renovated — год последнего ремонта. \n",
"zipcode — почтовый индекс. \n",
"lat и long — географические координаты. \n",
"sqft_living15 и sqft_lot15 — жилая площадь и площадь участка соседних 15 домов.\n",
"\n",
"\n",
"*Связи между объектами:* \n",
"1) Расположение и цена: Связь между географическим положением (zipcode, lat, long) и ценой.\n",
"2) Площадь и цена: Зависимость цены от площади (sqft_living, sqft_lot).\n",
"3) Состояние и цена: Связь между состоянием дома (condition, grade) и е г о стоимостью.\n",
"\n",
"\n",
"### Бизнес-цель\n",
"1. Определение факторов, наиболее влияющих на стоимость дома для оптимизации предложений покупателям и повышения рентабельности.\n",
"\n",
" **Цель:** Идентифицировать факторы (например, площадь, расположение, качество строительства), которые наиболее значительно влияют на цену дома.\n",
"\n",
" **Эффект:** Повышение точности оценок стоимости недвижимости, что помогает покупателям и продавцам формировать оптимальные цены.\n",
"\n",
"2. Оценка рыночных условий для определения стоимости ремонта и улучшений.\n",
"\n",
" **Цель:** Понять, какие улучшения (например, ремонт, увеличение жилой площади) могут повысить стоимость дома и насколько.\n",
"\n",
" **Эффект:** Информация может помочь владельцам недвижимости и инвесторам принимать решения о вложениях в улучшение недвижимости для увеличения е е рыночной стоимости.\n",
"\n",
"### Техническая цель\n",
"1. Техническая цель для определения факторов стоимости:\n",
"\n",
" Построить регрессионную модель для предсказания цены на основе всех доступных атрибутов. \n",
" Н а вход модели подаются: В с е доступные признаки (например, sqft_living, grade, condition). \n",
" Целевой признак: price (цена продажи дома). \n",
" Эффект: Точный расчет цены на основе факторов, что повысит объективность оценки. \n",
"\n",
"2. Техническая цель для анализа влияния улучшений на цену:\n",
"\n",
" Построить модели для анализа зависимости цены от показателей состояния, года постройки и года ремонта. \n",
" Н а вход модели подаются: признаки, такие как yr_built, yr_renovated, sqft_living, condition. \n",
" Целевой признак: price. \n",
" Эффект: Определение оптимальных вложений в улучшения и ремонт для повышения стоимости недвижимости. \n",
"\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
2024-10-27 17:55:35 +04:00
"### Рассмотрим связь цены с другими признаками. \n",
"1. Расположение и цена: Связь между географическим положением (zipcode, lat, long) и ценой."
2024-10-26 15:34:50 +04:00
]
},
{
"cell_type": "code",
2024-10-27 17:55:35 +04:00
"execution_count": 859,
2024-10-26 15:34:50 +04:00
"metadata": {},
"outputs": [
{
"data": {
2024-10-27 17:55:35 +04:00
"image/png": "iVBORw0KGgoAAAANSUhEUgAABdEAAAPdCAYAAABlRyFLAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdeXxTVdoH8N/N3jVtWkrDYltAhYIIRZGyqQy7ggsz4gK4guCOM76IioAbOovLuIAy4wY6OooLDFoWQUEtoCBiLahAy9qCbdqkW9I2ue8fNbFLlpv0Zmt/38+Hd+zNuec899yb8vLk5DmCKIoiiIiIiIiIiIiIiIioDUW4AyAiIiIiIiIiIiIiilRMohMRERERERERERERecAkOhERERERERERERGRB0yiExERERERERERERF5wCQ6EREREREREREREZEHTKITEREREREREREREXnAJDoRERERERERERERkQdMohMRERERERERERERecAkOhERERERERERERGRB0yiExERERFR1Dt+/Dhef/1118/FxcV46623whcQEREREXUYTKITERERUVi8/vrrEAQB3377rdvXL7roIgwYMCDEUVG0EgQBt99+OzZs2IDi4mL83//9H7Zv3x7usIiIiIioA1CFOwAiIiIiIqL26t69O2bPno2JEycCAIxGIz7//PPwBkVEREREHQJXohMRERERUYfw7LPP4uDBg9ixYwd++eUXnHXWWeEOiYiIiIg6ACbRiYiIiCiqHDhwAH/84x9hMBig0+lw3nnnYe3atS3aeCoVU1ZWBkEQsGTJEtexI0eO4LbbbsPZZ5+NmJgYpKSk4E9/+hOKi4u9xtHQ0ACDwYAbb7yxzWsWiwU6nQ5/+ctfXMeef/559O/fH7GxsUhOTsZ5552Ht99+2+sYn3/+OQRB8PjnhhtuaNH+8OHD+NOf/gSDwYDY2FgMGzYM69evb9FmyZIlEAShzViZmZmu/pzz5+1P8/rjW7ZswahRoxAXF4ekpCRcdtll2L9/v9txnX8SEhIwdOhQfPTRRy3a+SrjU1xc3Gb8G264AZmZmQCA3r1744ILLoDJZEJMTAwEQfB5L5uf73Ts2DG352dmZuLSSy9t08cdd9zhdl693cPWTpw4gZtuugldu3aFVqtF//798eqrr7rtr/kq+5MnTyIzMxPnnXceqqurXcetViuWLFmCs846CzqdDkajEVdeeSUOHTrkdT6IiIiIqCWWcyEiIiKiqPHjjz9ixIgR6N69O+6//37ExcXhv//9Ly6//HKsWbMGV1xxhd99fvPNN/j6669x9dVXo0ePHiguLsby5ctx0UUXobCwELGxsW7PU6vVuOKKK/DBBx/g5Zdfhkajcb320UcfwWaz4eqrrwYArFy5EnfddRf++Mc/4u6774bVasW+ffuwc+dOXHvttT5jvOuuu3D++ee3OHbLLbe0+PnUqVMYPnw4amtrcddddyElJQVvvPEGpk6divfff9+vuRk9ejRWrVrl+vnxxx8HADz44IOuY8OHDwcAbN68GZMmTUKvXr2wZMkS1NXV4fnnn8eIESOwZ8+eNslpZ79lZWV46aWX8Kc//QkFBQU4++yzJccnxcMPPwyr1Rq281trfg/ffPNNbNq0qcXrp06dwrBhwyAIAu644w506dIFn376KW6++WZYLBbcc889bvs1m82YNGkS1Go1PvnkE8THxwMA7HY7Lr30Unz22We4+uqrcffdd6OqqgqbNm1CQUEBevfuLdu1EREREXV0TKITERERUdS4++67ccYZZ+Cbb76BVqsFANx2220YOXIkFixYEFAS/ZJLLsEf//jHFsemTJmC3NxcrFmzBjNnzvR47vTp0/Hqq69i48aNLVYnv/vuu+jVqxfOO+88AMD69evRv39/vPfee37HBwCjRo1qE+PcuXNb/Pzkk0/i1KlT2L59O0aOHAkAmD17NgYOHIh7770Xl112GRQKBRSKpi+jiqLodjU0APTq1Qu9evVy/fyvf/0LADBjxow2be+77z4YDAbk5+fDYDAAAC6//HIMHjwYixcvxhtvvNGiffM++vfvj/Hjx2Pfvn2yJtF//PFHvPnmm5g0aRI+/fTTkJ/fXENDA4CmDyamTZsGANixY0ebJPqDDz4Iu92OH374ASkpKQCa7vE111yDJUuW4NZbb0VMTEyLc2w2Gy6//HKUlpbi66+/Rlpamuu1N998E5999hmefvppzJ8/33X8/vvvhyiK7bomIiIios6G5VyIiIiIKCqYTCZs2bIFV111FaqqqlBWVoaysjKUl5djwoQJ+OWXX3DixIkW55jNZle7srIymEymNv02T0w2NDSgvLwcffr0QVJSEvbs2eM1pjFjxiA1NRXvvvuu61hFRQU2bdqE6dOnu44lJSXh+PHj+OabbwK9fJ8++eQTDB061JVAB4D4+HjMmTMHxcXFKCwsBABXovX48ePtHrOkpAR79+7FDTfc4EqgA8DAgQMxbtw4fPLJJ23Ocd6L/fv3Y8WKFYiLi8OwYcNatLHb7a529fX1fse1cOFC5OTk4E9/+pP/FyXh/IaGhhbPVVlZmcdV687jOp3O43iiKGLNmjWYMmUKRFFs0e+ECRNgNpvbPIsOhwOzZs3Cjh078Mknn7RZWb5mzRqkpqbizjvvbDOepw9PiIiIiMg9rkQnIiIioqhw8OBBiKKIRYsWYdGiRW7bnD59Gt27d3f9PHbsWJ/91tXVYdmyZXjttddw4sSJFqt0zWaz13NVKhWmTZuGt99+GzabDVqtFh988AEaGhpaJNEXLFiAzZs3Y+jQoejTpw/Gjx+Pa6+9FiNGjPAZn1RHjhzBBRdc0OZ4v379XK8PGDAAubm5EAQBCxcuxGOPPeYq/+FwOAIaE4DbVeT9+vXDhg0bUFNTg7i4ONfxLl26uP47MTERb731Fnr27Nni3AMHDrjaKRQK9OnTB4sXL5ZU+ubLL7/EunXr8Nlnn+Ho0aN+X5OU8zdu3NjiOrwpKysDAOj1eo9tfv31V1RWVuKVV17BK6+84rbN6dOnW/z84IMPYseOHRAEAbW1tW3aHzp0CGeffTZUKv6Tj4iIiKi9+P9REREREVFUcCZ5//KXv2DChAlu2/Tp06fFzy+++CLOOuss188Wi8VVUsPpzjvvxGuvvYZ77rkHubm50Ov1EAQBV199taTE8tVXX42XX34Zn376KS6//HL897//Rd++fXHuuee62vTr1w8//fQT/ve//yEvLw9r1qzBSy+9hIcffhhLly6VPAdyOPfcc7F48WIsXboUb731VkjHBuAqY1JTU4M1a9bgqquuwv/+9z+MGzfO1SYzMxMrV64EAJSXl+Of//wnZs6ciV69eiE9Pd1r/wsWLMCECRMwZsyYFpuPSiXl/AsuuACPPfZYi2MvvPACPv744zZtnZuStq4N35zzOZsxYwauv/56t20GDhzY4uedO3fi9ddfxwsvvIA5c+Zg7969rhJHRERERCQvJtGJiIiIKCo4a3Sr1WpJK8wBYOjQoa665MDvq4Kbe//993H99dfjH//4h+uY1WpFZWWlpDFGjx4No9GId999FyNHjsSWLVtabMDpFBcXh+nTp2P69Omor6/HlVdeiccffxwLFy70WupDqoyMDPz0009tjh84cMD1utPixYsxZ84cHDhwAHa7HYD7eudSxgTgcdzU1NQWq9CBlt8OuOyyy7Bz5078/e9/b5FEj4uLa9Fu1KhR6N69OzZu3IhZs2Z5jOejjz5Cfn6+zzI87T0/NTW1zTP40UcfuW377bffIj09HT169PDYX5cuXZCQkAC73S752V66dCmuv/56DBo0COeddx4ee+wxPProo67Xe/fujZ07d6KhoQFqtVpSn0RERETkHmuiExEREVFUSEtLw0UXXYSXX34ZJSUlbV7/9ddfA+pXqVS22Wjx+eefdyWXfVEoFPjjH/+IdevWYdWqVWhsbGxRygVoWk3dnEajQXZ2NkRRdG082V6TJ0/Grl27kJ+f7zpWU1ODV155BZmZmcjOzm7R3mg04uKLL8bYsWMxduzYgBL5RqMRgwY
2024-10-26 15:34:50 +04:00
"text/plain": [
2024-10-27 17:55:35 +04:00
"<Figure size 1500x1000 with 3 Axes>"
2024-10-26 15:34:50 +04:00
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
2024-10-27 17:55:35 +04:00
"# Проверим, что нулевые значения удалены\n",
"plt.figure(figsize=(15, 10))\n",
2024-10-26 15:34:50 +04:00
"\n",
2024-10-27 17:55:35 +04:00
"# Повторная визуализация распределений после удаления нулевых значений\n",
"plt.subplot(3, 1, 1)\n",
"plt.scatter(df_houses[\"price\"], df_houses[\"zipcode\"])\n",
"plt.xlabel(\"цена\")\n",
"plt.ylabel(\"почтовый индекс\")\n",
"plt.title(\"Цена vs почтовый индекс\")\n",
2024-10-26 15:34:50 +04:00
"\n",
2024-10-27 17:55:35 +04:00
"plt.subplot(3, 1, 2)\n",
"plt.scatter(df_houses[\"price\"], df_houses[\"lat\"])\n",
"plt.xlabel(\"цена\")\n",
"plt.ylabel(\"Широта\")\n",
"plt.title(\"Цена vs Широта\")\n",
2024-10-26 15:34:50 +04:00
"\n",
2024-10-27 17:55:35 +04:00
"plt.subplot(3, 1, 3)\n",
"plt.scatter(df_houses[\"price\"], df_houses[\"long\"])\n",
"plt.xlabel(\"цена\")\n",
"plt.ylabel(\"Долгота\")\n",
"plt.title(\"Цена vs Долгота\")\n",
2024-10-26 15:34:50 +04:00
"\n",
"\n",
2024-10-27 17:55:35 +04:00
"plt.tight_layout()\n",
"plt.show()"
2024-10-26 15:34:50 +04:00
]
},
{
2024-10-27 17:55:35 +04:00
"cell_type": "markdown",
2024-10-26 15:34:50 +04:00
"metadata": {},
"source": [
2024-10-27 17:55:35 +04:00
"Цена vs Почтовый индекс (zipcode): диаграмма не показывает явной корреляции между ценой и почтовым индексом. Почтовый индекс — это категориальный признак, который может включать множество уникальных значений. Он может вносить шум в модель, если не используется должным образом.\n",
"\n",
"Цена vs Широта (lat): на графике видно, что дома с более высокой ценой сосредоточены в определённой зоне по широте. Это говорит о том, что широта может нести некоторую полезную информацию о расположении и влиянии на цену. Однако слишком широкое использование координат может добавить лишний шум, так как они не всегда напрямую связаны с качеством дома.\n",
"\n",
"Цена vs Долгота (long): здесь также нет явной корреляции между долготой и ценой. Как и в случае с широтой, долгота может давать некоторую информацию, но её использование требует аккуратного подхода."
2024-10-26 15:34:50 +04:00
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
2024-10-27 17:55:35 +04:00
"2. Площадь и цена: Зависимость цены от площади (sqft_living, sqft_lot)."
2024-10-26 15:34:50 +04:00
]
},
{
"cell_type": "code",
2024-10-27 17:55:35 +04:00
"execution_count": 860,
2024-10-26 15:34:50 +04:00
"metadata": {},
"outputs": [
{
"data": {
2024-10-27 17:55:35 +04:00
"image/png": "iVBORw0KGgoAAAANSUhEUgAABdEAAAPeCAYAAADj01PlAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzde3iT9f3/8VdaeoBCUwpCWsehHFRqVUSHIOgUURBE8fCbIB6mDKeCBzwMnHIabopOEUVB8MB3Q0SdoAKuG4gOxQpIRaxFRVY8tjAotFDogSa/P7rEps2d3EnuNmn7fFwXu9bkzp1P7t5Jzevzvt8fm8vlcgkAAAAAAAAAANQTE+kBAAAAAAAAAAAQrQjRAQAAAAAAAAAwQIgOAAAAAAAAAIABQnQAAAAAAAAAAAwQogMAAAAAAAAAYIAQHQAAAAAAAAAAA4ToAAAAAAAAAAAYIEQHAAAAAAAAAMAAIToAAAAAAAAAAAYI0QEAAAAAAAAAMECIDgAAAAAAAACAAUJ0AAAARNSSJUtks9n0ySef+Lz/vPPOU1ZWViOPCgAAAABqEKIDAAAAAAAAAGCAEB0AAAAAAAAAAAOE6AAAAGiSvvzyS1111VVKTU1VYmKizjzzTL399tte2xi1itm3b59sNptmzpzpue3bb7/VbbfdphNPPFGtW7dWhw4d9P/+3//T7t27/Y6jqqpKqampuvHGG+vdV1paqsTERN17772e255++mmdfPLJatOmjdq3b68zzzxTy5Yt8/sc77zzjlq1aqW//OUvXrfXfQ3//e9/1aNHD/3qV79SZWWlJOn999+XzWbT+++/7/XYkSNH1nu8W/fu3WWz2er9q72Pt956SyNHjlR6eroSEhLUs2dPzZ49W9XV1fX2t2DBAmVlZalNmzZe+/v73//u93XPnDnT5zjc/5YsWVLvMUbb1v49Hjt2TLNnz1bPnj2VkJCg7t276w9/+IMqKirqHYdLLrnE67ZJkybJZrN53fbJJ5/UG09lZaWmT5+uM844Q3a7XUlJSTrnnHP03nvv+Xyt7nO17r/u3bt7bfeb3/xGbdu29XvcAAAAYK1WkR4AAAAAEKwvvvhCgwYN0vHHH6+pU6cqKSlJr732mkaPHq033nhDl19+edD73LJliz766CONGTNGv/jFL7R7924tWLBA5513nvLz89WmTRufj4uLi9Pll1+uFStW6LnnnlN8fLznvjfffFMVFRUaM2aMJGnx4sW64447dNVVV+nOO+9UeXm5tm/frk2bNumaa64xHNuIESP0xBNPaPLkyTrhhBN06aWX1tumoqJCo0ePVmxsrFauXOk1jro2bNigd955x+/xOOecc3TzzTdLknbs2KE///nPXvcvWbJEbdu21d133622bdtq/fr1mj59ukpLS/XYY495tnv11Vd122236bzzztPtt9+upKQkn/vzZ8GCBV7BcUFBgaZPn264/eWXX64rrrhCkvTBBx9o0aJFXvf/9re/1f/93//pqquu0j333KNNmzbp4Ycf1o4dO7Ry5UrT4/KntLRUzz//vMaOHasJEybo0KFDeuGFFzRs2DBt3rxZffv29fm4P/7xj8rIyJAkPf744zpw4IAl4wEAAEDoCNEBAADQ5Nx5553q2rWrtmzZooSEBEnSbbfdpsGDB2vKlCkhhegjR47UVVdd5XXbqFGjNHDgQL3xxhu67rrrDB979dVX68UXX9S//vUvr8rlV199VT169NCZZ54pSVqzZo1OPvlkvf7660GP74477tBXX32lcePG6cMPP9Rpp53mdf/48eP15ZdfKicnR6mpqX739fvf/14XX3yx/vGPf/i8/9ixY+rVq5euvfZaSTXV7HVD72XLlql169aen2+55RbdcsstevbZZ/XQQw95fi9vvfWWUlJS9I9//EOJiYmG+/PnqquuUseOHT0/f/LJJz5D9GPHjkmS+vbt6xn7sWPHvEL0zz77TP/3f/+n3/72t1q8eLGkmnOnU6dO+stf/qL33ntP559/vumxGWnfvr12797tNZkxYcIEnXTSSXr66af1wgsveG1fVVUlqWbC5IwzzpAkLV++nBAdAAAgCtDOBQAAAE1KcXGx1q9fr1//+tc6dOiQ9u3bp3379mn//v0aNmyYdu7cqR9//NHrMSUlJZ7t9u3bp+Li4nr7rR0IV1VVaf/+/erVq5dSUlKUm5vrd0xDhgxRx44d9eqrr3puO3DggNauXaurr77ac1tKSop++OEHbdmyJaTX/tRTT2nAgAEaNWqUioqKPLfPnj1by5Yt0xtvvKETTjjB7z5WrFihLVu26JFHHjHcprKy0hOCG6l9vNy/h3POOUdHjhzRl19+6XVfmzZtPAF6Q3K3sPE3dncF/t133+11+z333COpZqLDCrGxsZ4A3el0qri4WMeOHdOZZ57p83wqLy+XJNPHyX0uux8HAACAhkOIDgAAgCblm2++kcvl0rRp03Tcccd5/ZsxY4Ykae/evV6PGTp0qNd2J554Yr39Hj16VNOnT1eXLl2UkJCgjh076rjjjtPBgwdVUlLid0ytWrXSlVdeqbfeesvTV3vFihWqqqryCtGnTJmitm3bqn///urdu7cmTpyojRs3mn7tLpdLe/bs0ffff+9p6bJ69WrNmDFDLpdL//3vf/0+vrq6Wn/4wx80btw4nXrqqYbblZSUBOy7/cUXX+jyyy+X3W5XcnKyjjvuOE/1d+3jNXDgQP3000+aOXOmvvvuO+3bty/g8QzVwYMHJcnv2L/99lvFxMSoV69eXrc7HA6lpKTo22+/tWw8//d//6dTTz1ViYmJ6tChg4477jitWbPG5+vft2+fJMlutwfcb1lZmedcbt26tbp27ap58+ZZNm4AAAB4o50LAAAAmhSn0ylJuvfeezVs2DCf29QNSJ955hmvCu3S0lJdeeWVXtvcfvvteumll3TXXXdp4MCBstvtstlsGjNmjOc5/RkzZoyee+45/eMf/9Do0aP12muv6aSTTvJqu9KnTx999dVXWr16tbKzs/XGG2/o2Wef1fTp0zVr1qyAz/H0009rx44devvtt3XTTTdJkrZu3ap77rlHP/74oyZPnqyLL77YMER+4YUXtHv3bv3zn/80fI7i4mJVVlbK4XAYbnPw4EH96le/UnJysv74xz+qZ8+eSkxMVG5urqZMmeJ1vCZPnqyvvvpKs2fPNvUaw+Guzvc3dre6i4NabenSpfrNb36j0aNH67777lOnTp0UGxurhx9+WLt27aq3/e7duxUXF6f09PSA+05MTNSqVask1VT6v/jii7rrrruUlpamX//615a/FgAAgJaOEB0AAABNSo8ePSTVLOg5dOhQU4/p37+/py+59HPVb21///vfdcMNN+jxxx/33FZeXu6pbg7k3HPPVVpaml599VUNHjxY69ev1wMPPFBvu6SkJF199dW6+uqrVVlZqSuuuEJ/+tOfdP/99/tt5fHTTz9pxowZuuuuuzRq1Ci99dZbGjRokIYNG6ZHH31URUVFOumkkzRz5kz95S9/qff4I0eOaNasWbrtttvUrVs3w+fJz8+XVBP4G3n//fe1f/9+rVixQueee67n9oKCgnrbtm7dWosXL9ann34qu92uGTNm6LPPPtO9995ruP9QmRl7t27d5HQ6tXPnTq/t9uzZo4MHD/o9NsH4+9//rh49emjFihVegb37aom6PvnkE/Xr108xMYEvFo6NjfU690eOHKnU1FRlZ2cTogMAADQA2rkAAACgSenUqZPOO+88PffccyosLKx3f6CWJkZiY2Plcrm8bnv66adVXV1t6vExMTG66qqrtGrVKv3tb3/TsWPHvFq5SNL+/fu9fo6Pj1dmZqZcLpdnYUkjd999tyeElqSzzz5bkjRgwADFxMQoPT1ds2bN0rx585SXl1fv8fPmzVNZWZnPYL+25cuXKz4+XoMHDzbcJjY2VpK8jldlZaWeffZZn9vff//9+u6777R06VINHTrUs3Cm1V599VWlpaX5DdFHjBghSXryySe9bn/iiSck1QTSVvB1jDZt2qScnJx62+bn5ys/P1+XXXZ
2024-10-26 15:34:50 +04:00
"text/plain": [
2024-10-27 17:55:35 +04:00
"<Figure size 1500x1000 with 2 Axes>"
2024-10-26 15:34:50 +04:00
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
2024-10-27 17:55:35 +04:00
"# Проверим, что нулевые значения удалены\n",
"plt.figure(figsize=(15, 10))\n",
"\n",
"# Повторная визуализация распределений после удаления нулевых значений\n",
"plt.subplot(2, 1, 1)\n",
"plt.scatter(df_houses[\"price\"], df_houses[\"sqft_living\"])\n",
"plt.xlabel(\"цена\")\n",
"plt.ylabel(\"жилая площадь\")\n",
"plt.title(\"Цена vs жилая площадь\")\n",
"\n",
"plt.subplot(2, 1, 2)\n",
"plt.scatter(df_houses[\"price\"], df_houses[\"sqft_lot\"])\n",
2024-10-26 15:34:50 +04:00
"plt.xlabel(\"цена\")\n",
2024-10-27 17:55:35 +04:00
"plt.ylabel(\"площадь участка\")\n",
"plt.title(\"Цена vs площадь участка\")\n",
"\n",
"\n",
"plt.tight_layout()\n",
2024-10-26 15:34:50 +04:00
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
2024-10-27 17:55:35 +04:00
"Н а основе представленных диаграмм можно сделать следующие выводы:\n",
"\n",
"Жилая площадь (sqft_living) и цена имеют очевидную положительную корреляцию. Это значит, что по мере увеличения жилой площади увеличивается и цена. Данный признак имеет высокую предсказательную силу для нашей модели.\n",
"\n",
"Площадь участка (sqft_lot) имеет более слабую связь с ценой, и данные довольно разбросаны. Высокие значения площади участка не обязательно связаны с высокой ценой. Следовательно, признак sqft_lot имеет ограниченную предсказательную силу и может внести больше шума, чем пользы, особенно если он существенно не влияет на стоимость недвижимости."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"3. Состояние и цена: Связь между состоянием дома (condition, grade) и е г о стоимостью."
2024-10-26 15:34:50 +04:00
]
},
{
"cell_type": "code",
2024-10-27 17:55:35 +04:00
"execution_count": 861,
2024-10-26 15:34:50 +04:00
"metadata": {},
"outputs": [
{
"data": {
2024-10-27 17:55:35 +04:00
"image/png": "iVBORw0KGgoAAAANSUhEUgAABdEAAAPeCAYAAADj01PlAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAD4d0lEQVR4nOzdfXxcZZ3///eZu0wmzUwyKWnSG5K0qDS0QAstlJuK3Ba0LCAKui3o1y3IuqDrzUJVbKtC8eeurotaoOsiUtkFFVwqUC3LvW0pULkpKQhtEtqSNE2mmUkymZlk5vz+iAm5mZPMJJNM0ryej0ce7Zxznev6XNe5zjmTz5ycMUzTNAUAAAAAAAAAAAawZTsAAAAAAAAAAADGK5LoAAAAAAAAAABYIIkOAAAAAAAAAIAFkugAAAAAAAAAAFggiQ4AAAAAAAAAgAWS6AAAAAAAAAAAWCCJDgAAAAAAAACABZLoAAAAAAAAAABYIIkOAAAAAAAAAIAFkugAAAAAAAAAAFggiQ4AAAAAAAAAgAWS6AAAADiq/PKXv5RhGHr55ZeTrj/nnHM0b968MY4KAAAAwERFEh0AAAAAAAAAAAsk0QEAAAAAAAAAsEASHQAAAJD01ltv6corr5Tf75fb7dapp56qRx99tE8Zq0fFNDY2yjAMrV27tmdZbW2t/vEf/1Ef+chHlJubq6KiIn3qU59STU3NoHF0dHTI7/fr85///IB1oVBIbrdbX//613uW3XnnnTrhhBPk8XhUWFioU089VQ888MCgbTzzzDMyDEPPPPNMz7L3339f5eXlOvXUU9Xa2ipJisVi+s53vqNTTjlFPp9PeXl5Ovvss/X0008nHZf+fTvnnHN0zjnn9FkWjUa1Zs0aHXfcccrJydGsWbP0L//yL4pGowPi3LRpkxYvXtzTt6VLl+pPf/qTJKm8vFyGYVj+lJeXS5Jqamr6LHc6nSovL9c3vvENxWKxPu3t27dPn/rUp+T3++XxeHT66afrscceG3QsAQAAcPRzZDsAAAAAINvefPNNnXnmmZoxY4ZuueUW5eXl6aGHHtJll12m3/3ud7r88svTrvOll17Stm3bdPXVV2vmzJmqqanRhg0bdM4556iqqkoejyfpdk6nU5dffrkefvhh3X333XK5XD3rfv/73ysajerqq6+WJG3cuFE33XSTrrzySn35y19WJBLR66+/rhdffFGf/exnU441GAzq4osvltPp1OOPP64pU6ZI6kra/+d//qc+85nPaNWqVWppadEvfvELXXTRRdq5c6dOPvnktMYkkUjo0ksv1QsvvKDrrrtOc+fO1RtvvKEf//jH+utf/6rf//73PWXXrVuntWvX6owzztB3v/tduVwuvfjii3rqqad04YUX6t///d97kv179uzR7bffrm9+85uaO3euJPX0odt1112ns88+W9FoVH/84x/1r//6r3K73fre974nSTp06JDOOOMMhcNh3XTTTSoqKtJ9992nSy+9VL/97W+HNQcAAABwdCCJDgAAgEnvy1/+so499li99NJLysnJkST94z/+o8466yzdfPPNw0qgfvzjH9eVV17ZZ9ny5cu1ZMkS/e53v9PKlSstt73qqqv0X//1X/rTn/6kT3ziEz3LH3zwQc2ePVunnnqqJOmxxx7TCSecoN/85jdpx9ctGo3qsssuU319vbZt26bi4uKedYWFhaqpqemTyF+1apWOP/543XnnnfrFL34hSbLZuv7A1TTNQdt64IEH9OSTT+rZZ5/VWWed1bN83rx5+uIXv6ht27bpjDPO0Lvvvqvvfve7uvzyy/Xb3/62p/7ebVx22WU9y5555hndfvvtuuCCCwbc+d5tyZIlWrFihSTpC1/4gmbMmKFdu3b1rL/jjjt06NAhPf/88z2xrVq1SieeeKK++tWv6u/+7u/6xAEAAIDJg3eBAAAAmNQCgYCeeuopffrTn1ZLS4saGxvV2NiopqYmXXTRRXrnnXd08ODBPtsEg8Geco2NjQoEAgPqzc3N7fl/R0eHmpqadNxxx6mgoKBP8jaZc889V1OnTtWDDz7Ys+zIkSPaunWrrrrqqp5lBQUFOnDggF566aVh9T2RSOiaa67Rjh079Pjjj2vOnDl91tvt9p4EeiKRUCAQUGdnp0499dQ+fehOvB84cGDQ9n7zm99o7ty5Ov744/uM37nnnitJPY+J+f3vf69EIqHvfOc7AxLXhmEMq6+tra1qbGzUwYMHdc8996i+vl7nnXdez/rHH39cixcv7pPcnzJliq677jrV1NSoqqpqWO0CAABg4uNOdAAAAExq7777rkzT1K233qpbb701aZmGhgbNmDGj5/X5558/ZL3t7e1av3697r33Xh08eLDPXdrBYHDQbR0Ohz75yU/qgQceUDQaVU5Ojh5++GF1dHT0SaLffPPNevLJJ7V48WIdd9xxuvDCC/XZz35WZ5555pDxSdK3vvUt7dixQ4ZhKBwOJy1z33336d/+7d/01ltvqaOjo2d5RUVFz/8XLFggt9utdevWacOGDSosLJTU9eGB0+nsKffOO+9oz549OuaYY5K21dDQIEnau3evbDabKisrU+pHKm688UbdeOONPa8///nP65//+Z97XtfW1uq0004bsF3342Fqa2s1b968jMUDAACAiYMkOgAAACa1RCIhSfr617+uiy66KGmZ4447rs/rn/3sZ/rwhz/c8zoUCumTn/xknzI33nij7r33Xn3lK1/RkiVL5PP5ZBiGrr766p42B3P11Vfr7rvv1hNPPKHLLrtMDz30kI4//niddNJJPWXmzp2rt99+W3/4wx+0ZcsW/e53v9PPf/5zfec739G6deuGbOPFF1/UL3/5S/30pz/Vddddp1dffbXncTZS1xd7fu5zn9Nll12mb3zjGyouLpbdbtf69eu1d+/ennLTpk3TnXfeqS996Ut9xkWSPvrRj/b8P5FIaP78+frRj36UNJ5Zs2YNGfNwfeMb39CFF16oeDyuN998U9/97ndlmqbuvffeUWsTAAAARweS6AAAAJjUZs+eLanrCz1TucNckhYvXtzzXHJJamxsHFDmt7/9ra699lr927/9W8+ySCSi5ubmlNpYunSpSktL9eCDD+qss87SU089pW9961sDyuXl5emqq67SVVddpVgspiuuuEK33XabVq9eLbfbPWgb69at07XXXquTTz5Zp556qr7//e/3fNFmdx9mz56thx9+uM9jVNasWTOgrn/4h3/QFVdcod27dysWi0mSvva1r/UpM2fOHL322ms677zzBn0sy5w5c5RIJFRVVZX2l5daqays7Nm/F110kaLRqL75zW/qtttu0/Tp01VWVqa33357wHZvvfWWJKmsrCwjcQAAAGDi4ZnoAAAAmNSKi4t1zjnn6O6771ZdXd2A9YcPHx5WvXa7fcAXbd55552Kx+MpbW+z2XTllVdq8+bNuv/++9XZ2dnnUS6S1NTU1Oe1y+VSZWWlTNPs8+gVK2effbYk6aSTTtLXv/51/eAHP9Du3bv79EHq+4WhL774orZv3560Pr/fr6VLl+r888/X+eef3/NYl26f/vSndfDgQW3cuHHAtu3t7Wpra5PU9aWhNptN3/3udwfctT/Ul5emqr29XZJ6Ev6XXHKJdu7c2advbW1tuueee1ReXp7RR8sAAABgYuFOdAAAAByV/uu//ktbtmwZsLy2tlbhcFjf//73tXLlSpWVlelnP/uZzjrrLM2fP1+rVq3S7NmzdejQIW3fvl0HDhzQa6+9lnb7n/jEJ3T//ffL5/OpsrJS27dv15NPPqmioqKU67jqqqt05513as2aNZo/f37P87m7XXjhhSopKdGZZ56padOmac+ePfrpT3+qj3/848rPz08r3jVr1uh3v/udVq1apT//+c+y2Wz6xCc+oYcffliXX365Pv7xj6u6ulp33XWXKisr1dramlb9krRy5Uo99NBD+uIXv6inn35aZ555puLxuN566y099NBD+uMf/6hTTz1Vxx13nL71rW/pe9/7ns4++2xdccUVysnJ0UsvvaTp06dr/fr1abe9fft
2024-10-26 15:34:50 +04:00
"text/plain": [
2024-10-27 17:55:35 +04:00
"<Figure size 1500x1000 with 2 Axes>"
2024-10-26 15:34:50 +04:00
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
2024-10-27 17:55:35 +04:00
"# Проверим, что нулевые значения удалены\n",
"plt.figure(figsize=(15, 10))\n",
"\n",
"# Повторная визуализация распределений после удаления нулевых значений\n",
"plt.subplot(2, 1, 1)\n",
"plt.scatter(df_houses[\"price\"], df_houses[\"grade\"])\n",
"plt.xlabel(\"цена\")\n",
"plt.ylabel(\"качество\")\n",
"plt.title(\"Цена vs качество\")\n",
"\n",
"plt.subplot(2, 1, 2)\n",
"plt.scatter(df_houses[\"price\"], df_houses[\"condition\"])\n",
2024-10-26 15:34:50 +04:00
"plt.xlabel(\"цена\")\n",
2024-10-27 17:55:35 +04:00
"plt.ylabel(\"состояние дома\")\n",
"plt.title(\"Цена vs состояние дома\")\n",
"\n",
"\n",
"plt.tight_layout()\n",
2024-10-26 15:34:50 +04:00
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
2024-10-27 17:55:35 +04:00
"Цена и качество (grade): Наблюдается явная зависимость между ценой дома и е г о качеством. Более высокие оценки качества (10 и выше) обычно соответствуют более высокой стоимости дома. Это говорит о том, что качество является значимым фактором, влияющим на цену дома, и е г о следует оставить в модели.\n",
"\n",
"Цена и состояние (condition): Взаимосвязь между состоянием и ценой менее выражена, чем в случае качества. Большинство домов находятся в хорошем или отличном состоянии (оценки 3-5), однако их цена варьируется в широком диапазоне. Это может указывать на то, что состояние дома оказывает меньшее влияние на цену по сравнению с качеством."
2024-10-26 15:34:50 +04:00
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
2024-10-27 17:55:35 +04:00
"### Проблемы выбранного набора данных и их решение\n",
"\n",
"\n",
"**Зашумлённость данных и выбросы** \n",
2024-10-26 15:34:50 +04:00
"\n",
2024-10-27 17:55:35 +04:00
"Зашумленные данные могут возникнуть, если параметры, такие как площадь или состояние дома, были оценены неточно. \n",
"Удалим строки с нулевой ценой, площадью участка и жилой площадью, чтобы уменьшить зашумлённость.\n",
"\n",
"Проведя анализ выше мы выяснили, что столбцы zipcode, sqft_living15, sqft_lot15, sqft_lot могут быть менее полезны, поэтому мы безопасно удалим их, их влияние на цену конкретного дома может быть незначительным."
2024-10-26 15:34:50 +04:00
]
},
{
2024-10-27 17:55:35 +04:00
"cell_type": "code",
"execution_count": 862,
2024-10-26 15:34:50 +04:00
"metadata": {},
2024-10-27 17:55:35 +04:00
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Index(['id', 'date', 'price', 'bedrooms', 'bathrooms', 'sqft_living', 'floors',\n",
" 'waterfront', 'view', 'condition', 'grade', 'sqft_above',\n",
" 'sqft_basement', 'yr_built', 'yr_renovated', 'lat', 'long'],\n",
" dtype='object')\n"
]
}
],
2024-10-26 15:34:50 +04:00
"source": [
2024-10-27 17:55:35 +04:00
"# Удаление столбцов sqft_living15 и sqft_lot15\n",
"df_houses = df_houses.drop(columns=[\"sqft_living15\", \"sqft_lot15\", \"zipcode\", \"sqft_lot\"])\n",
2024-10-26 15:34:50 +04:00
"\n",
2024-10-27 17:55:35 +04:00
"# Проверим, что столбцы удалены\n",
"print(df_houses.columns)"
2024-10-26 15:34:50 +04:00
]
},
{
"cell_type": "code",
2024-10-27 17:55:35 +04:00
"execution_count": 863,
2024-10-26 15:34:50 +04:00
"metadata": {},
"outputs": [
{
"data": {
2024-10-27 17:55:35 +04:00
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA9sAAAIHCAYAAACPAk88AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABrg0lEQVR4nO3dd3gVZf7+8fucdFIJJYUeREBIBEEighRlRZqgKzZUUKzgioK4IkpbWXtbKzZQARFE8YuKggiyKh0iTYqAoJQEDAkJhJRznt8f/M5sDikkYcIJ8H5dVy49M88885mZh8B9pjmMMUYAAAAAAMA2Tl8XAAAAAADA2YawDQAAAACAzQjbAAAAAADYjLANAAAAAIDNCNsAAAAAANiMsA0AAAAAgM0I2wAAAAAA2IywDQAAAACAzQjbAAAAAADYjLANAEA5OBwOjRs3ztdlnNG6dOmiLl26+LoMAAAqFWEbAFAlTJkyRQ6Hw+undu3a6tq1q+bNm+fr8k7Zpk2bNG7cOP3+++++LgUAAJwG/r4uAACAwiZMmKBGjRrJGKPU1FRNmTJFPXv21Ny5c9W7d29fl1dhmzZt0vjx49WlSxc1bNjQ1+X41Pz5831dAgAAlY6wDQCoUnr06KG2bdtanwcPHqyYmBh9/PHHZ3TYhnT06FFVq1ZNgYGBvi4FAIBKx2XkAIAqLSoqSiEhIfL39/5++MiRIxoxYoTq1aunoKAgNW3aVM8//7yMMZKknJwcNWvWTM2aNVNOTo61XHp6uuLi4nTppZfK5XJJkgYNGqSwsDDt2LFD3bt3V2hoqOLj4zVhwgSrv9KsXbtWPXr0UEREhMLCwnTFFVdo2bJl1vwpU6aof//+kqSuXbtal8kvXrz4pH03bNiwyOX1DodDU6ZMKdJ23LhxxbYdNGiQV7tFixbpsssuU/Xq1b3a3X///aXWsnjxYjkcDn3yySd67LHHFBsbq9DQUF199dX6448/vNp26dJFLVu21OrVq9WpUydVq1ZNjz32mDXvxHu2jx07pnHjxun8889XcHCw4uLidO2112r79u1WG7fbrZdfflktWrRQcHCwYmJidM899+jQoUMn3Y8AAJxunNkGAFQpmZmZOnjwoIwxSktL06uvvqrs7GzdcsstVhtjjK6++motWrRIgwcPVqtWrfTtt99q5MiR2rNnj1566SWFhITogw8+UIcOHTR69Gi9+OKLkqShQ4cqMzNTU6ZMkZ+fn9Wny+XSVVddpUsuuUTPPvusvvnmG40dO1YFBQWaMGFCifVu3LhRl112mSIiIvTII48oICBAkyZNUpcuXfTDDz8oOTlZnTp10gMPPKD//Oc/euyxx9S8eXNJsv57Mq1atdKIESMkSTt37tSYMWNKbf/RRx9Z///QQw95zdu5c6d69eqluLg4jRkzRrVq1ZIk3XrrrWWqRZImTpwoh8Ohf/7zn0pLS9PLL7+sbt26KSUlRSEhIVa7v/76Sz169NCNN96oW265RTExMcX253K51Lt3by1cuFA33nijhg0bpqysLC1YsEAbNmxQ48aNJUn33HOPpkyZottvv10PPPCAdu7cqddee01r167VTz/9pICAgDJvAwAAlc4AAFAFTJ482Ugq8hMUFGSmTJni1XbOnDlGknnyySe9pl933XXG4XCY3377zZo2atQo43Q6zZIlS8ysWbOMJPPyyy97LTdw4EAjyfzjH/+wprndbtOrVy8TGBhoDhw4YE2XZMaOHWt97tevnwkMDDTbt2+3pu3du9eEh4ebTp06WdM86160aFG59kt8fLzp3bu39XnlypVGkpk8eXKRtqNHjzYOh8NrWoMGDczAgQOtz5MmTTKSzNKlS73aSTJDhw4ttZZFixYZSaZOnTrm8OHD1vSZM2caSeaVV16xpnXu3NlIMm+99VaRfjp37mw6d+5sfX7//feNJPPiiy8Waet2u40xxvz3v/81ksy0adO85n/zzTfFTgcAwNe4jBwAUKW8/vrrWrBggRYsWKCpU6eqa9euuvPOO/XZZ59Zbb7++mv5+fnpgQce8Fp2xIgRMsZ4Pb183LhxatGihQYOHKghQ4aoc+fORZbzKHwZteey6ry8PH333XfFtne5XJo/f7769eunhIQEa3pcXJxuvvlm/fjjjzp8+HCF9oPHsWPHFBwcXKa2eXl5CgoKKrVNVlaWJKlGjRoVrum2225TeHi49fm6665TXFycvv76a692QUFBuv3220/a3+zZs1WzZk394x//KDLP4XBIkmbNmqXIyEj97W9/08GDB62fNm3aKCwsTIsWLarw9gAAUBm4jBwAUKW0a9fO6wFpN910k1q3bq37779fvXv3VmBgoHbt2qX4+HivwCf977LsXbt2WdMCAwP1/vvv6+KLL1ZwcLAmT55sBbjCnE6nV2CWpPPPP1+SSnxd14EDB3T06FE1bdq0yLzmzZvL7Xbrjz/+UIsWLcq28SdwuVzKyMhQZGRkmdpnZGQoLCys1Dbt27eXJI0cOVJPPfWUdRl5eTRp0sTrs8Ph0HnnnVdkP9WpU6dMD0Pbvn27mjZtWuS+/MK2bdumzMxM1a5du9j5aWlpJy8cAIDTiLANAKjSnE6nunbtqldeeUXbtm2rUHD99ttvJR0/S7xt2zY1atTI7jIrxe7du+V2u8v8qrD9+/crNja21DaXXnqpnnvuOY0fP14XXHCBDVWWrPD926fK7Xardu3amjZtWrHzK/KlAQAAlYmwDQCo8goKCiRJ2dnZkqQGDRrou+++U1ZWltfZ7c2bN1vzPdatW6cJEybo9ttvV0pKiu68806tX7++yNlit9utHTt2WGezJWnr1q2SVGLYrVWrlqpVq6YtW7YUmbd582Y5nU7Vq1dPkoo9m34yq1atkiSvM/2l2bRpky666KKTtnv44Ye1bds2zZ49Wx9++KECAwP1t7/9rcx1bdu2zeuzMUa//fabkpKSytxHYY0bN9by5cuVn59f4kPOGjdurO+++04dOnSwNcQDAFBZuGcbAFCl5efna/78+QoMDLQuE+/Zs6dcLpdee+01r7YvvfSSHA6HevToYS07aNAgxcfH65VXXtGUKVOUmppa5AndHoX7M8botddeU0BAgK644opi2/v5+enKK6/UF1984XUJdWpqqqZPn66OHTsqIiJCkhQaGirp+KXeZTVr1ixFRUWpc+fOJ227atUqbd++XZdffvlJ286dO1dvv/223n33XfXs2VPdunUrc02S9OGHH1r3fkvSp59+qn379ln7vbz+/ve/6+DBg0WOpyTr1WvXX3+9XC6X/vWvfxVpU1BQUK79CgDA6cCZbQBAlTJv3jzrDHVaWpqmT5+ubdu26dFHH7WCa58+fdS1a1eNHj1av//+uy688ELNnz9fX3zxhR588EHrVVFPPvmkUlJStHDhQoWHhyspKUljxozR448/ruuuu049e/a01hscHKxvvvlGAwcOVHJysubNm6evvvpKjz32WKmXKD/55JNasGCBOnbsqCFDhsjf31+TJk1Sbm6unn32Watdq1at5Ofnp2eeeUaZmZkKCgrS5ZdfXuw9yKmpqfrPf/6jWbNmqVOnTpo9e7Y1b+fOnZKkpUuX6qKLLlJSUpImTJigV155RQkJCbrttttK3b/79+/X4MGDdeedd6pfv34nORrFi46OVseOHXX77bcrNTVVL7/8ss477zzdddddFervtttu04cffqjhw4drxYoVuuyyy3TkyBF99913GjJkiPr27avOnTvrnnvu0VNPPaWUlBRdeeWVCggI0LZt2zRr1iy98soruu666yq0fgAAKoVvH4YOAMBxxb36Kzg42LRq1cq8+eab1iugPLKyssxDDz1k4uPjTUBAgGnSpIl57rnnrHarV682/v7+Xq/zMsaYgoICc/HFF5v4+Hhz6NAhY8zxV3+Fhoaa7du3myuvvNJUq1bNxMTEmLFjxxqXy+W1vE549ZcxxqxZs8Z0797dhIWFmWrVqpmuXbuan3/+ucg2vvPOOyYhIcH4+fmV+howzyu2TvbjqaNu3brmjjvuMHv37i3SV+FXf7ndbnPVVVeZJk2
2024-10-26 15:34:50 +04:00
"text/plain": [
2024-10-27 17:55:35 +04:00
"<Figure size 1000x1000 with 2 Axes>"
2024-10-26 15:34:50 +04:00
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
2024-10-27 17:55:35 +04:00
"# Построим графики boxplot для обнаружения выбросов\n",
"plt.figure(figsize=(10, 10))\n",
2024-10-26 15:34:50 +04:00
"\n",
2024-10-27 17:55:35 +04:00
"# Создание boxplot\n",
"for i, column in enumerate(['price', 'sqft_living'], 1):\n",
" plt.subplot(4, 1, i)\n",
" sns.boxplot(x=df_houses[column])\n",
" plt.title(f\"Boxplot для {column}\")\n",
" \n",
"plt.tight_layout()\n",
"plt.show()\n",
"\n"
2024-10-26 15:34:50 +04:00
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
2024-10-27 17:55:35 +04:00
"Выбросы наблюдаются во всех графиках, которые мы построили. Если у определённого параметра много выбросов, то данные могут быть зашумлены или содержат необычные значения, которые стоит анализировать и, возможно, удалить или скорректировать. Графики boxplot помогают визуализировать распределение данных и выявить выбросы, которые находятся за пределами \"усов\" боксплота.\n",
"\n",
"Попробуем решить устранить проблему выбросов для price и sqft_living. Используется метод усреднения данных для устранения выбросов. Метод стандартных отклонений."
2024-10-26 15:34:50 +04:00
]
},
{
"cell_type": "code",
2024-10-27 17:55:35 +04:00
"execution_count": 864,
2024-10-26 15:34:50 +04:00
"metadata": {},
"outputs": [
{
"data": {
2024-10-27 17:55:35 +04:00
"image/png": "iVBORw0KGgoAAAANSUhEUgAAB8UAAAXSCAYAAACB6D73AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAADrTklEQVR4nOzdd5wU9f348fdR7g44mtI8VBBFUTRisERR0aigogZroslX0ChGiS1Go1+jlGgsWGOJ2ECDfhNBf2qMvSYaklhiiwUULICCgPR+N78/eOzk9u5AiEb04/P5ePCQ2Z2d/czs7J7ca2emJMuyLAAAAAAAAAAgQQ3W9QAAAAAAAAAA4L9FFAcAAAAAAAAgWaI4AAAAAAAAAMkSxQEAAAAAAABIligOAAAAAAAAQLJEcQAAAAAAAACSJYoDAAAAAAAAkCxRHAAAAAAAAIBkieIAAAAAAAAAJKvRuh4AAAAAkJZly5bF7Nmzo7q6OiorK9f1cAAAAPiGc6Q4AAB8RZSUlMTQoUPX9TCSsGLFijjrrLNio402igYNGkT//v0/1/JGjx4dJSUl8d577+W37bHHHrHHHnus9bKefvrpKCkpiaeffvpzjQm+al544YU46qijok2bNlFWVhYbbLBBHHrooet6WAAAACCKAwCQvkLQrPmnXbt2seeee8ZDDz20rof3ub3xxhsxdOjQomD7TXfrrbfGiBEj4rDDDovbbrstTj/9dNsJ/ovuu+++2HXXXeONN96ICy+8MB577LF47LHHYuTIket6aAAAAOD06QAAfHMMHz48Ntlkk8iyLKZPnx6jR4+O/fffP/74xz/GAQccsK6H9x974403YtiwYbHHHntE586d1/VwvhKefPLJ6NixY1x55ZX5bePGjftCt9Ojjz76Hz1u9913j8WLF0dpaennHgN8FcyePTuOO+646Nu3b4wdO9a+DQAAwFeOKA4AwDfGfvvtF9tvv30+/eMf/zjat28f//d///e1juLUNWPGjGjVqtV/9Tn+0/DXoEGDKC8v/4JHA+vOqFGjYsmSJTF69GhBHAAAgK8kp08HAOAbq1WrVtGkSZNo1Kj4u6ILFy6MM844IzbaaKMoKyuLLbbYIi677LLIsiwiIhYvXhzdunWLbt26xeLFi/PHzZ49OzbYYIPYZZddoqqqKiIiBg4cGBUVFTFp0qTo27dvNGvWLCorK2P48OH58lbnn//8Z+y3337RokWLqKioiL322iv+9re/5fePHj06Dj/88IiI2HPPPfPTw6/J9ao7d+5c57TyJSUlMXr06DrzDh06tN55Bw4cWDTfU089Fbvttlu0bt26aL6f/vSnnzmea665Jrp37x5NmzaN1q1bx/bbbx933nln0TzPPvts7LDDDlFeXh6bbrppjBw5Mh9bRMR7770XJSUl8dRTT8W//vWvonX6T7fTqtS8pvj06dOjUaNGMWzYsDrzvf3221FSUhLXXnttRNR/TfE99tgjtt5663jjjTdizz33jKZNm0bHjh3j0ksvrbO8999/Pw466KBo1qxZtGvXLk4//fR45JFH1mh9VvU6ruq1f/LJJ2O33XaLZs2aRatWreJ73/tevPnmm3WWO3Xq1Pjxj38clZWVUVZWFptsskmceOKJsWzZsjrbbE2e9+9//3vsu+++0bJly2jatGn07t07nnvuudWuW8TK/WPXXXeNNm3aRHl5eXTp0iV+8YtfxJIlS/J5Zs+eHT//+c9jm222iYqKimjRokXst99+8corrxQtq/A6lZSUxMsvv1xnfRs2bBglJSUxbty4ovveeuutOOyww2K99daL8vLy2H777eP+++8vmqdwSYcXXnih6PaZM2dGSUlJDB06NL+t8JrNnDlzlevduXPnOu/F2grvjcKfxo0bR+fOnePMM88sep1WNbaaau77ERF/+9vfokePHvHrX/86/9zs2rVrXHzxxVFdXV302MLnwR133BFbbLFFlJeXR8+ePePPf/5znef5rM+/gjlz5sTpp58enTt3jrKysthwww3j6KOPLtpmM2bMyL8IVV5eHttuu23cdttt/9E2Wt32veyyy+rct/XWWxdtr2XLlsX5558fPXv2jJYtW0azZs1it912i6eeemq1z1HTQw89FL17947mzZtHixYtYocddij6vCx8prz44ouxyy67RJMmTWKTTTaJG264oc6yli5dGkOGDInNNtssysrKYqONNoqzzjorli5dWmfemu+L2n9qWtV++8ILL9T7nl+T903Eytf6tNNOy/ezzTbbLC655JI6+1l9vve970Xnzp2jvLw82rVrFwcddFC89tprRfOs6ufVAQccUOcMI5dddlnssssusf7660eTJk2iZ8+edT4P6vu8j1j5/wa1l1ddXR1XXXVVdO/ePcrLy6N9+/ZxwgknxKefflo0X+fOnev9It9Pf/rTOq9D7c+TiIgRI0ZESUlJ0T4ZsXb7AQAAfB05UhwAgG+MuXPnxsyZMyPLspgxY0Zcc801sWDBgvjRj36Uz5NlWRx00EHx1FNPxY9//OPo0aNHPPLII3HmmWfG1KlT48orr4wmTZrEbbfdFr169Ypzzz03rrjiioiIGDx4cMydOzdGjx4dDRs2zJdZVVUV++67b3znO9+JSy+9NB5++OEYMmRIrFixIoYPH77K8f7rX/+K3XbbLVq0aBFnnXVWNG7cOEaOHBl77LFHPPPMM7HTTjvF7rvvHqecckr85je/if/93/+NLbfcMiIi/+9n6dGjR5xxxhkRETF58uQ4//zzVzv/7373u/zvp59+etF9kydPjn79+sUGG2wQ559/frRt2zYiIv7nf/7nM8dx0003xSmnnBKHHXZYnHrqqbFkyZJ49dVX4+9//3scddRRERHx2muvRZ8+faJt27YxdOjQWLFiRQwZMiTat2+fL6dt27bxu9/9Li688MJYsGBBXHTRRRER0bVr18+1nT5L+/bto3fv3nHXXXfFkCFDiu77wx/+EA0bNsyj/Kp8+umnse+++8YhhxwSRxxxRIwbNy5+8YtfxDbbbBP77bdfRKz8wsZ3v/vd+Oijj+LUU0+NDh06xJ133rlWMS0i4re//W1UVFTk0/W99o8//njst99+0aVLlxg6dGgsXrw4rrnmmujVq1e89NJLedCZNm1a7LjjjjFnzpwYNGhQdOvWLaZOnRrjxo2LRYsW1TlyuFu3bnHuuedGxMoIXHs/evLJJ2O//faLnj17xpAhQ6JBgwYxatSo+O53vxt/+ctfYscdd1zles2fPz+23HLLOOKII6Jp06Yxfvz4uPTSS2PRokVxzTXXRETEpEmT4t57743DDz88Ntlkk5g+fXqMHDkyevfuHW+88UZUVlYWLbO8vDxGjRoVV199dX7bbbfdFqWlpUWxPWLle7ZXr17RsWPHOPvss6NZs2Zx1113Rf/+/ePuu++Ogw8+eHUvy5di0KBBsdtuu8XSpUvjkUceicsuuyzKy8vjV7/61X+8zFmzZsWzzz4bzz77bBx77LHRs2fPeOKJJ+Kcc86J9957r06IfeaZZ+IPf/hDnHLKKVFWVhbXX3997LvvvvGPf/wjtt5664hYs8+/iIgFCxbEbrvtFm+++WYce+yx8e1vfztmzpwZ999/f0yZMiXatGkTixcvjj322CPeeeed+OlPfxqbbLJJjB07NgYOHBhz5syJU0899b++jWqaN29e3HzzzXHkkUfG8ccfH/Pnz49bbrkl+vbtG//4xz+iR48eq3386NGj49hjj43u3bvHOeecE61atYp//vOf8fDDD+eflxErP1P233//OOKII+LII4+Mu+66K0488cQoLS2NY489NiJWhtiDDjoonn322Rg0aFBsueWW8dprr8WVV14ZEyZMiHvvvbfeMZxyyimxww47RETE7bffHo899th/vD3W9H2zaNGi6N27d0ydOjVOOOGE2HjjjeOvf/1rnHPOOfHRRx/FVVdd9ZnPNWjQoOjQoUNMmzYtrr322th7771j8uTJ0bRp07Ue99VXXx0HHXRQ/PCHP4xly5bF73//+zj88MPjgQceiH79+q318k444YQ
2024-10-26 15:34:50 +04:00
"text/plain": [
2024-10-27 17:55:35 +04:00
"<Figure size 2000x1500 with 2 Axes>"
2024-10-26 15:34:50 +04:00
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
2024-10-27 17:55:35 +04:00
"# Вычисление среднего и стандартного отклонения для столбцов\n",
"means = df_houses[['sqft_living', 'price']].mean()\n",
"std_devs = df_houses[['sqft_living', 'price']].std()\n",
"\n",
"# Определение порога для выбросов (например, 3 стандартных отклонения)\n",
"threshold = 3\n",
"\n",
"# Функция для замены выбросов на среднее значение\n",
"def replace_outliers_with_mean(column):\n",
" mean_value = column.mean()\n",
" upper_limit = mean_value + threshold * column.std()\n",
" lower_limit = mean_value - threshold * column.std()\n",
" \n",
" return column.where((column >= lower_limit) & (column <= upper_limit), mean_value)\n",
"\n",
"# Применение функции к каждому столбцу\n",
"for column in ['sqft_living', 'price']:\n",
" df_houses[column] = replace_outliers_with_mean(df_houses[column])\n",
"\n",
"# Графическое отображение после замены выбросов\n",
"plt.figure(figsize=(20, 15))\n",
"for i, column in enumerate(['sqft_living', 'price'], 1):\n",
" plt.subplot(2, 1, i)\n",
" sns.boxplot(x=df_houses[column])\n",
" plt.title(f\"Boxplot для {column} после замены выбросов на среднее значение\")\n",
"\n",
2024-10-26 15:34:50 +04:00
"plt.tight_layout()\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
2024-10-27 17:55:35 +04:00
"**Смещение данных** \n",
"\n",
"Если дома в выборке представлены неравномерно по различным параметрам (например, есть значительное количество дорогих домов или домов в плохом состоянии), то это может создать смещение в результатах анализа. "
2024-10-26 15:34:50 +04:00
]
},
{
"cell_type": "code",
2024-10-27 17:55:35 +04:00
"execution_count": 865,
2024-10-26 15:34:50 +04:00
"metadata": {},
"outputs": [
{
"data": {
2024-10-27 17:55:35 +04:00
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA9wAAAKyCAYAAAAn2daDAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdd3hUZdrH8e+U9N4bLYSEXiRKVTqioq6KolhXV7GAjXXFxgI27IBrwddV0V1QQQVFWAURLICoSO8loSYhvWeSmTnvHyEjIQElJEwgv891zTVzznnOc+6TQ5k7TzMZhmEgIiIiIiIiIvXK7O4ARERERERERM5GSrhFREREREREGoASbhEREREREZEGoIRbREREREREpAEo4RYRERERERFpAEq4RURERERERBqAEm4RERERERGRBqCEW0RERERERKQBKOEWERERERERaQBKuEVEREROwfLlyzGZTCxfvtzdoYiISCOjhFtERM4aM2fOxGQyuV7e3t4kJSUxduxYMjIy3B2eiIiINDFWdwcgIiJS35588kni4+MpKyvjxx9/5M0332TRokVs2rQJX19fd4cnZ5l+/fpRWlqKp6enu0MREZFGRgm3iIicdS6++GLOPfdcAG6//XbCwsJ45ZVX+Pzzzxk1apSbo5OzRVlZGZ6enpjNZry9vd0djoiINELqUi4iIme9QYMGAZCSkgJATk4ODz30EJ07d8bf35/AwEAuvvhi1q9fX+PcsrIyJk2aRFJSEt7e3sTExHDVVVexe/duAFJTU6t1Yz/2NWDAAFddVWN9P/74Yx577DGio6Px8/Pj8ssvZ//+/TWuvXr1ai666CKCgoLw9fWlf//+rFixotZ7HDBgQK3XnzRpUo2y//3vf0lOTsbHx4fQ0FCuu+66Wq9/ons7mtPpZNq0aXTs2BFvb2+ioqK48847yc3NrVauVatWXHrppTWuM3bs2Bp11hb7iy++WONnCmCz2Zg4cSJt2rTBy8uL5s2b8/DDD2Oz2Wr9WR1twIABdOrUiTVr1tCnTx98fHyIj49nxowZ1cpVPbuPPvqIJ554gri4OHx9fSkoKDjuGO7Vq1dzySWXEBISgp+fH126dGH69OnVymzbto2rr76a0NBQvL29Offcc/niiy/+MG4RETkzqIVbRETOelXJcVhYGAB79uxh/vz5XHPNNcTHx5ORkcFb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
2024-10-26 15:34:50 +04:00
"text/plain": [
2024-10-27 17:55:35 +04:00
"<Figure size 1000x700 with 4 Axes>"
2024-10-26 15:34:50 +04:00
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
2024-10-27 17:55:35 +04:00
"# Построим графики boxplot для обнаружения выбросов\n",
"plt.figure(figsize=(10, 7))\n",
2024-10-26 15:34:50 +04:00
"\n",
2024-10-27 17:55:35 +04:00
"# Создание boxplot\n",
"for i, column in enumerate(['price', 'sqft_living', 'condition', 'grade'], 1):\n",
" plt.subplot(4, 1, i)\n",
" sns.histplot(df_houses[column], bins=5, kde=True)\n",
" plt.title(f\"Распределение {column}\")\n",
" plt.xlabel(\"Цена\")\n",
" plt.ylabel(\"Частота\")\n",
" \n",
2024-10-26 15:34:50 +04:00
"plt.tight_layout()\n",
"plt.show()\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
2024-10-27 17:55:35 +04:00
"Смещение наблюдается к левому краю, но в нашем случае это нормально, и аугментация не требуется."
2024-10-26 15:34:50 +04:00
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
2024-10-27 17:55:35 +04:00
"**Корреляции между признаками** \n",
2024-10-26 15:34:50 +04:00
"\n",
2024-10-27 17:55:35 +04:00
"Некоторые признаки могут быть сильно скоррелированы между собой, что может снизить качество анализа и обучаемых моделей, если они будут использоваться."
2024-10-26 15:34:50 +04:00
]
},
{
"cell_type": "code",
2024-10-27 17:55:35 +04:00
"execution_count": 866,
2024-10-26 15:34:50 +04:00
"metadata": {},
"outputs": [
{
"data": {
2024-10-27 17:55:35 +04:00
"image/png": "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
2024-10-26 15:34:50 +04:00
"text/plain": [
2024-10-27 17:55:35 +04:00
"<Figure size 500x500 with 2 Axes>"
2024-10-26 15:34:50 +04:00
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Выбираем интересующие нас признаки\n",
"selected_columns = ['sqft_living', 'bedrooms', 'floors']\n",
"correlation_matrix = df_houses[selected_columns].corr()\n",
"\n",
"# Отображаем корреляционную матрицу\n",
2024-10-27 17:55:35 +04:00
"plt.figure(figsize=(5, 5))\n",
2024-10-26 15:34:50 +04:00
"sns.heatmap(correlation_matrix, annot=True, cmap='coolwarm', square=True)\n",
"plt.title(\"Корреляция между sqft_living, bedrooms и floors\")\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Умеренная корреляция между sqft_living и bedrooms указывает на то, что связь между этими признаками существует, но они не являются взаимозаменяемыми. О б а признака могут быть полезны для моделей, так как предоставляют дополнительную информацию.\n",
"Корреляция между другими парами признаков слишком слаба, чтобы создать риск мультиколлинеарности, поэтому можно оставить все три признака для анализа и построения модели."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
2024-10-27 17:55:35 +04:00
"**Актуальность данных**\n",
"\n",
2024-10-26 15:34:50 +04:00
"Данные собраны за период с мая 2014 года по май 2015 года. С тех пор рынок недвижимости мог существенно измениться, и такие изменения могут сделать данные устаревшими для современных анализов."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Разбиение датасета на три части: обучающую, контрольную и тестовую выборки"
]
},
{
"cell_type": "code",
2024-10-27 17:55:35 +04:00
"execution_count": 867,
2024-10-26 15:34:50 +04:00
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Размер обучающей выборки: 12967\n",
"Размер контрольной выборки: 4323\n",
"Размер тестовой выборки: 4323\n"
]
}
],
"source": [
"from sklearn.model_selection import train_test_split\n",
"\n",
"# Выделим признаки (все столбцы, кроме целевого, например \"price\") и целевой признак (например, \"price\")\n",
"X = df_houses.drop(columns=[\"price\"]) # Признаки (все столбцы, кроме целевого признака 'price')\n",
"y = df_houses[\"price\"] # Целевая переменная (price)\n",
"\n",
"# 1. Разделяем данные на обучающую (60%) и временную (40%) выборки\n",
"X_train, X_temp, y_train, y_temp = train_test_split(X, y, test_size=0.4, random_state=42)\n",
"\n",
"# 2. Разделяем временную выборку пополам на контрольную (20%) и тестовую (20%) выборки\n",
"X_val, X_test, y_val, y_test = train_test_split(X_temp, y_temp, test_size=0.5, random_state=42)\n",
"\n",
"# Выводим размеры выборок\n",
"print(f\"Размер обучающей выборки: {len(X_train)}\")\n",
"print(f\"Размер контрольной выборки: {len(X_val)}\")\n",
"print(f\"Размер тестовой выборки: {len(X_test)}\")"
]
},
2024-10-27 17:55:35 +04:00
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Оценка сбалансированности выборок\n",
"\n",
"Для оценки сбалансированности выборок можно проверить распределение целевой переменной (price) в каждой из них. Мы можем построить гистограммы или использовать базовую статистику, такую как среднее значение и стандартное отклонение, чтобы убедиться, что распределение price в обучающей, валидационной и тестовой выборках примерно одинаково."
]
},
2024-10-26 15:34:50 +04:00
{
"cell_type": "code",
2024-10-27 17:55:35 +04:00
"execution_count": 868,
2024-10-26 15:34:50 +04:00
"metadata": {},
"outputs": [
{
"data": {
2024-10-27 17:55:35 +04:00
"image/png": "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ly6lR48ehISEEBkZydVXX83WrVs91nE9Fr///jvXX3894eHh1KlThwcffJCcnJwi8RZ+vRcUFDBw4ECioqLYsmWLx7qlff+SyqM21pPa2L+pjS3bbV988UUuuugi6tSpQ3BwMJ06dSox9lPLJhT3mjj1vR6cz6d27dphsVj44IMPThtr4enUdUsba0nt0RVXXFHkfi/usdi7dy/BwcHFPl/OdN4CZXsOluU1VFBQwNNPP03Tpk0JDAykcePGjB8/vsjrwnWe4+fnR/v27Wnfvj3/+9//sFgsXnvene414XLq+dGqVasICgpix44d7vswNjaWu+66iyNHjhS5/Zw5c9zva3Xr1uXmm29m//79Huu4zqX++usv+vfvT0hICHFxcUyePNmjRqwr3sLPqWPHjtGpUyeaNGnCwYMH3ctL+/4nvk3nCZ50nvA3nSeU3O66psL7Lst74nfffUevXr0ICwsjPDycLl268MknnwAlP1+Le46Vpb0rzfFnZWXx8MMPux/D5s2b8+KLLxapJe56DgYGBtKpUydatmxZ4nOwOIWPxc/Pj3POOYeRI0d6nCeU5/FftWoVTZo04YsvvqBp06YEBATQsGFDHnvssSK5CSjbucr69eu56KKLCA4OpkmTJrz55pse6xWXJzlw4ACNGzemc+fOHD9+3L38bF6XZlFPdB/iamTr1KkDwF9//cXcuXO57rrraNKkCSkpKbz11lv06tWLLVu2EBcXB4DdbueKK65gyZIl3HDDDTz44IMcO3aMRYsWsWnTJpo2berex4033sjAgQM99jtu3Lhi43n22WexWCyMHTuW1NRUXn75Zfr27UtSUhLBwcGAM0k1YMAAOnXqxMSJE7FarcyaNYs+ffrw448/cuGFFxbZboMGDZgyZQoAx48f55577il2308++STXX389d9xxB4cOHeLVV1+lZ8+e/Prrr0RGRha5zciRI+nRowcA//vf/4okR++66y4++OADbrvtNh544AF27tzJa6+9xq+//srPP/+MzWYr9n4oi/T0dPexFeZwOLjqqqv46aefGDlyJC1btmTjxo1Mnz6dP/74w2MAx7OVnZ1Nr1692L9/P3fddRcNGzZk5cqVjBs3joMHD/Lyyy97bV/l1aNHD0aOHInD4WDTpk28/PLLHDhwgB9//PG0t5s0aRJPPfUUffv25Z577mHbtm288cYbrF271v0YHj58GHA+r88//3yeeuopcnJymDlzJt27d2ft2rU0a9aM3r17Ex8fz+zZs7nmmms89jN79myaNm1a5vrpc+bMITs7m3vuuYc6deqwZs0aXn31Vfbt28ecOXNKvN0nn3zCzTffTPv27ZkyZQqHDx/mlVde4aeffuLXX3+lbt26ZYqjJOV5XbmMHTu2TPtq0aIFjz/+OIZhsGPHDl566SUGDhx4VqOBux7b++67j06dOvH8889z6NChYu+rxYsXM2DAAM4991wmTZrEiRMnePXVV+nevTu//PJLkZPM66+/nsaNGzNlyhRWrVrFK6+8wtGjR/noo49KjOeOO+5g2bJlLFq0iFatWrmXn839LBVHbaznvtXGlk91bmNLe9sZM2Zw1VVXMXToUPLy8vj000+57rrrmDdvHoMGDSp2u9OnT3e/Pz/77LNnjOPf//73Gcfh6NChAw8//DDgTHp
2024-10-26 15:34:50 +04:00
"text/plain": [
2024-10-27 17:55:35 +04:00
"<Figure size 1500x500 with 3 Axes>"
2024-10-26 15:34:50 +04:00
]
},
"metadata": {},
"output_type": "display_data"
},
{
2024-10-27 17:55:35 +04:00
"name": "stdout",
"output_type": "stream",
"text": [
"Статистика для обучающей выборки:\n",
"count 1.296700e+04\n",
"mean 5.071337e+05\n",
"std 2.575532e+05\n",
"min 7.500000e+04\n",
"25% 3.210000e+05\n",
"50% 4.500000e+05\n",
"75% 6.205235e+05\n",
"max 1.640000e+06\n",
"Name: price, dtype: float64\n",
"\n",
"Статистика для валидационной выборки:\n",
"count 4.323000e+03\n",
"mean 5.099599e+05\n",
"std 2.578829e+05\n",
"min 7.800000e+04\n",
"25% 3.217500e+05\n",
"50% 4.500000e+05\n",
"75% 6.300000e+05\n",
"max 1.625000e+06\n",
"Name: price, dtype: float64\n",
"\n",
"Статистика для тестовой выборки:\n",
"count 4.323000e+03\n",
"mean 5.059874e+05\n",
"std 2.540701e+05\n",
"min 8.995000e+04\n",
"25% 3.235000e+05\n",
"50% 4.500000e+05\n",
"75% 6.250000e+05\n",
"max 1.637500e+06\n",
"Name: price, dtype: float64\n"
]
}
],
"source": [
"# Визуализация распределения цены в каждой из выборок\n",
"plt.figure(figsize=(15, 5))\n",
"\n",
"# Распределение в обучающей выборке\n",
"plt.subplot(1, 3, 1)\n",
"sns.histplot(y_train, bins=30, kde=True, color='blue')\n",
"plt.title(\"Распределение цены в обучающей выборке\")\n",
"plt.xlabel(\"Цена\")\n",
"plt.ylabel(\"Частота\")\n",
"\n",
"# Распределение в валидационной выборке\n",
"plt.subplot(1, 3, 2)\n",
"sns.histplot(y_val, bins=30, kde=True, color='green')\n",
"plt.title(\"Распределение цены в валидационной выборке\")\n",
"plt.xlabel(\"Цена\")\n",
"plt.ylabel(\"Частота\")\n",
"\n",
"# Распределение в тестовой выборке\n",
"plt.subplot(1, 3, 3)\n",
"sns.histplot(y_test, bins=30, kde=True, color='orange')\n",
"plt.title(\"Распределение цены в тестовой выборке\")\n",
"plt.xlabel(\"Цена\")\n",
"plt.ylabel(\"Частота\")\n",
"\n",
"plt.tight_layout()\n",
"plt.show()\n",
"\n",
"# Вывод базовой статистики для каждой выборки\n",
"print(\"Статистика для обучающей выборки:\")\n",
"print(y_train.describe())\n",
"print(\"\\nС та тис тика для валидационной выборки:\")\n",
"print(y_val.describe())\n",
"print(\"\\nС та тис тика для тестовой выборки:\")\n",
"print(y_test.describe())\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Гистограммы и статистика показыают, что распределения в обучающей, валидационной и тестовой выборках схожи, а значит выборки можно считать сбалансированными."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 3. Третий набор данных Diamonds Prices (Цены на бриллианты)\n",
"\n",
"Выгрузка данных из CSV файла в датафрейм"
]
},
{
"cell_type": "code",
"execution_count": 869,
"metadata": {},
"outputs": [
2024-10-26 15:34:50 +04:00
{
2024-10-27 17:55:35 +04:00
"name": "stdout",
"output_type": "stream",
"text": [
"Index(['Unnamed: 0', 'carat', 'cut', 'color', 'clarity', 'depth', 'table',\n",
" 'price', 'x', 'y', 'z'],\n",
" dtype='object')\n",
"\n",
"<class 'pandas.core.frame.DataFrame'>\n",
"RangeIndex: 53943 entries, 0 to 53942\n",
"Data columns (total 11 columns):\n",
" # Column Non-Null Count Dtype \n",
"--- ------ -------------- ----- \n",
" 0 Unnamed: 0 53943 non-null int64 \n",
" 1 carat 53943 non-null float64\n",
" 2 cut 53943 non-null object \n",
" 3 color 53943 non-null object \n",
" 4 clarity 53943 non-null object \n",
" 5 depth 53943 non-null float64\n",
" 6 table 53943 non-null float64\n",
" 7 price 53943 non-null int64 \n",
" 8 x 53943 non-null float64\n",
" 9 y 53943 non-null float64\n",
" 10 z 53943 non-null float64\n",
"dtypes: float64(6), int64(2), object(3)\n",
"memory usage: 4.5+ MB\n"
]
}
],
"source": [
"# Загрузка данных\n",
"df_diamond = pd.read_csv(\"../../static/csv/Diamonds Prices2022.csv\")\n",
"\n",
"# Вывод\n",
"print(df_diamond.columns)\n",
"\n",
"print()\n",
"\n",
"df_diamond.info()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Описание набора\n",
"\n",
"В этом документе рассматривается набор данных, содержащий цены и атрибуты приблизительно 54 000 бриллиантов круглой огранки. \n",
"В наборе данных 53 940 бриллиантов с 10 характеристиками (карат, огранка, цвет, чистота, глубина, таблица, цена, x, y и z). Большинство переменных являются числовыми по своей природе, но переменные огранка, цвет и чистота являются упорядоченными факторными переменными с о следующими уровнями.\n",
"О валюте для столбца цены: это Price ($) \n",
"И О столбцах x, y и z они являются измерениями бриллианта как (( x: length in mm, y: width in mm,z: depth in mm))\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 870,
"metadata": {},
"outputs": [
2024-10-26 15:34:50 +04:00
{
"data": {
2024-10-27 17:55:35 +04:00
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Unnamed: 0</th>\n",
" <th>carat</th>\n",
" <th>cut</th>\n",
" <th>color</th>\n",
" <th>clarity</th>\n",
" <th>depth</th>\n",
" <th>table</th>\n",
" <th>price</th>\n",
" <th>x</th>\n",
" <th>y</th>\n",
" <th>z</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>0.23</td>\n",
" <td>Ideal</td>\n",
" <td>E</td>\n",
" <td>SI2</td>\n",
" <td>61.5</td>\n",
" <td>55.0</td>\n",
" <td>326</td>\n",
" <td>3.95</td>\n",
" <td>3.98</td>\n",
" <td>2.43</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2</td>\n",
" <td>0.21</td>\n",
" <td>Premium</td>\n",
" <td>E</td>\n",
" <td>SI1</td>\n",
" <td>59.8</td>\n",
" <td>61.0</td>\n",
" <td>326</td>\n",
" <td>3.89</td>\n",
" <td>3.84</td>\n",
" <td>2.31</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>3</td>\n",
" <td>0.23</td>\n",
" <td>Good</td>\n",
" <td>E</td>\n",
" <td>VS1</td>\n",
" <td>56.9</td>\n",
" <td>65.0</td>\n",
" <td>327</td>\n",
" <td>4.05</td>\n",
" <td>4.07</td>\n",
" <td>2.31</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>4</td>\n",
" <td>0.29</td>\n",
" <td>Premium</td>\n",
" <td>I</td>\n",
" <td>VS2</td>\n",
" <td>62.4</td>\n",
" <td>58.0</td>\n",
" <td>334</td>\n",
" <td>4.20</td>\n",
" <td>4.23</td>\n",
" <td>2.63</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>5</td>\n",
" <td>0.31</td>\n",
" <td>Good</td>\n",
" <td>J</td>\n",
" <td>SI2</td>\n",
" <td>63.3</td>\n",
" <td>58.0</td>\n",
" <td>335</td>\n",
" <td>4.34</td>\n",
" <td>4.35</td>\n",
" <td>2.75</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
2024-10-26 15:34:50 +04:00
"text/plain": [
2024-10-27 17:55:35 +04:00
" Unnamed: 0 carat cut color clarity depth table price x y \\\n",
"0 1 0.23 Ideal E SI2 61.5 55.0 326 3.95 3.98 \n",
"1 2 0.21 Premium E SI1 59.8 61.0 326 3.89 3.84 \n",
"2 3 0.23 Good E VS1 56.9 65.0 327 4.05 4.07 \n",
"3 4 0.29 Premium I VS2 62.4 58.0 334 4.20 4.23 \n",
"4 5 0.31 Good J SI2 63.3 58.0 335 4.34 4.35 \n",
"\n",
" z \n",
"0 2.43 \n",
"1 2.31 \n",
"2 2.31 \n",
"3 2.63 \n",
"4 2.75 "
2024-10-26 15:34:50 +04:00
]
},
2024-10-27 17:55:35 +04:00
"execution_count": 870,
2024-10-26 15:34:50 +04:00
"metadata": {},
2024-10-27 17:55:35 +04:00
"output_type": "execute_result"
}
],
"source": [
"# Для наглядности\n",
"df_diamond.head()"
]
},
{
"cell_type": "code",
"execution_count": 871,
"metadata": {},
"outputs": [
2024-10-26 15:34:50 +04:00
{
"data": {
2024-10-27 17:55:35 +04:00
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Unnamed: 0</th>\n",
" <th>carat</th>\n",
" <th>depth</th>\n",
" <th>table</th>\n",
" <th>price</th>\n",
" <th>x</th>\n",
" <th>y</th>\n",
" <th>z</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>count</th>\n",
" <td>53943.000000</td>\n",
" <td>53943.000000</td>\n",
" <td>53943.000000</td>\n",
" <td>53943.000000</td>\n",
" <td>53943.000000</td>\n",
" <td>53943.000000</td>\n",
" <td>53943.000000</td>\n",
" <td>53943.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mean</th>\n",
" <td>26972.000000</td>\n",
" <td>0.797935</td>\n",
" <td>61.749322</td>\n",
" <td>57.457251</td>\n",
" <td>3932.734294</td>\n",
" <td>5.731158</td>\n",
" <td>5.734526</td>\n",
" <td>3.538730</td>\n",
" </tr>\n",
" <tr>\n",
" <th>std</th>\n",
" <td>15572.147122</td>\n",
" <td>0.473999</td>\n",
" <td>1.432626</td>\n",
" <td>2.234549</td>\n",
" <td>3989.338447</td>\n",
" <td>1.121730</td>\n",
" <td>1.142103</td>\n",
" <td>0.705679</td>\n",
" </tr>\n",
" <tr>\n",
" <th>min</th>\n",
" <td>1.000000</td>\n",
" <td>0.200000</td>\n",
" <td>43.000000</td>\n",
" <td>43.000000</td>\n",
" <td>326.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25%</th>\n",
" <td>13486.500000</td>\n",
" <td>0.400000</td>\n",
" <td>61.000000</td>\n",
" <td>56.000000</td>\n",
" <td>950.000000</td>\n",
" <td>4.710000</td>\n",
" <td>4.720000</td>\n",
" <td>2.910000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td>26972.000000</td>\n",
" <td>0.700000</td>\n",
" <td>61.800000</td>\n",
" <td>57.000000</td>\n",
" <td>2401.000000</td>\n",
" <td>5.700000</td>\n",
" <td>5.710000</td>\n",
" <td>3.530000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75%</th>\n",
" <td>40457.500000</td>\n",
" <td>1.040000</td>\n",
" <td>62.500000</td>\n",
" <td>59.000000</td>\n",
" <td>5324.000000</td>\n",
" <td>6.540000</td>\n",
" <td>6.540000</td>\n",
" <td>4.040000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
" <td>53943.000000</td>\n",
" <td>5.010000</td>\n",
" <td>79.000000</td>\n",
" <td>95.000000</td>\n",
" <td>18823.000000</td>\n",
" <td>10.740000</td>\n",
" <td>58.900000</td>\n",
" <td>31.800000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
2024-10-26 15:34:50 +04:00
"text/plain": [
2024-10-27 17:55:35 +04:00
" Unnamed: 0 carat depth table price \\\n",
"count 53943.000000 53943.000000 53943.000000 53943.000000 53943.000000 \n",
"mean 26972.000000 0.797935 61.749322 57.457251 3932.734294 \n",
"std 15572.147122 0.473999 1.432626 2.234549 3989.338447 \n",
"min 1.000000 0.200000 43.000000 43.000000 326.000000 \n",
"25% 13486.500000 0.400000 61.000000 56.000000 950.000000 \n",
"50% 26972.000000 0.700000 61.800000 57.000000 2401.000000 \n",
"75% 40457.500000 1.040000 62.500000 59.000000 5324.000000 \n",
"max 53943.000000 5.010000 79.000000 95.000000 18823.000000 \n",
"\n",
" x y z \n",
"count 53943.000000 53943.000000 53943.000000 \n",
"mean 5.731158 5.734526 3.538730 \n",
"std 1.121730 1.142103 0.705679 \n",
"min 0.000000 0.000000 0.000000 \n",
"25% 4.710000 4.720000 2.910000 \n",
"50% 5.700000 5.710000 3.530000 \n",
"75% 6.540000 6.540000 4.040000 \n",
"max 10.740000 58.900000 31.800000 "
2024-10-26 15:34:50 +04:00
]
},
2024-10-27 17:55:35 +04:00
"execution_count": 871,
2024-10-26 15:34:50 +04:00
"metadata": {},
2024-10-27 17:55:35 +04:00
"output_type": "execute_result"
}
],
"source": [
"# Описание данных (основные статистические показатели)\n",
"df_diamond.describe()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Получение сведений о пропущенных данных"
]
},
{
"cell_type": "code",
"execution_count": 872,
"metadata": {},
"outputs": [
2024-10-26 15:34:50 +04:00
{
"data": {
"text/plain": [
2024-10-27 17:55:35 +04:00
"Unnamed: 0 False\n",
"carat False\n",
"cut False\n",
"color False\n",
"clarity False\n",
"depth False\n",
"table False\n",
"price False\n",
"x False\n",
"y False\n",
"z False\n",
"dtype: bool"
2024-10-26 15:34:50 +04:00
]
},
2024-10-27 17:55:35 +04:00
"execution_count": 872,
2024-10-26 15:34:50 +04:00
"metadata": {},
2024-10-27 17:55:35 +04:00
"output_type": "execute_result"
}
],
"source": [
"# Количество пустых значений признаков\n",
"df_diamond.isnull().any()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Нет пропущенных данных"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Анализ сведений о наборе данных\n",
"\n",
"**Н а б о р данных:** \n",
"\n",
"Н а б о р данных содержит 53 940 наблюдений, каждое из которых представляет собой бриллиант с характеристиками, такими как вес (карат), огранка, цвет, прозрачность, глубина, размеры (x, y, z), а также цена.\n",
"\n",
"**Проблемная область:**\n",
"\n",
"Проблемной областью может быть задача оценки стоимости бриллианта на основе е г о характеристик, что важно для торговли бриллиантами, определения их рыночной стоимости и других бизнес-задач.\n",
"\n",
"**Анализ содержимого**\n",
"\n",
"*Объекты наблюдения:* бриллианты\n",
"\n",
"*Атрибуты объектов:* \n",
"\n",
"carat — вес \n",
"depth — глубина в бриллианте \n",
"price — цена продажи дома (целевая переменная). \n",
"x,y,z - размеры \n",
"table - площадка \n",
"clarity - прозрачность \n",
"\n",
"Категориальные характеристики: \n",
"\n",
"cut - огранка \n",
"color - цвет \n",
"\n",
"\n",
"*Связи между объектами:* \n",
"1) В е с и цена: Связь между весом бриллианта (carat, price) и ценой.\n",
"2) Качество огранки и цена: Связь между качеством огранки (cut, price) и ценой.\n",
"3) Размеры бриллианта и цена: Связь между размером (x, y, z, price) и ценой.\n",
"\n",
"\n",
"### Бизнес-цель\n",
"1. Автоматизация процесса оценки стоимости бриллианта\n",
"\n",
" **Цель:** Построить модель для оценки цены бриллианты на основе е г о характеристик.\n",
"\n",
" **Эффект:** Улучшение бизнес-процессов (повышение эффективности операционных процессов), повышение доходов, сокращение затрат и улучшение клиентских отношений. \n",
"\n",
"2. Оптимизация ассортимента и продаж \n",
"\n",
" **Цель:** Построить модель для анализа данных, какие характеристики бриллиантов наиболее востребованы и наилучшим образом влияют на рост продаж. \n",
"\n",
" **Эффект:** Компании могут оптимизировать ассортимент на более востребованные, что приведёт к увеличению продаж\n",
"\n",
"### Техническая цель\n",
"1. Разработка модели для оценки стоимости бриллиантов \n",
"\n",
" Создать модель машинного обучения, которая на вход получает характеристики бриллианта (вес, огранка, цвет и т.д.) и предсказывает е г о цену. \n",
" Н а вход поступают характеристики, а целевой признак - цена бриллианта. \n",
"\n",
"2. Оптимизация ассортимента и прогнозирование спроса \n",
"\n",
" Создать модель для предсказания спроса (популярности) определённых категорий бриллиаантов в зависимости от их характеристик. Н а вход поступают характеристики бриллианта, а целевой признак - показатели продаж или востребованность товара.\n",
"\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Рассмотрим связь цены с другими признаками. \n",
"\n",
"1. В е с и цена: Связь между весом бриллианта (carat, price) и ценой."
]
},
{
"cell_type": "code",
"execution_count": 873,
"metadata": {},
"outputs": [
2024-10-26 15:34:50 +04:00
{
"data": {
2024-10-27 17:55:35 +04:00
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA2QAAAIjCAYAAABswtioAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAC/7klEQVR4nOzdeXwTdf4/8FdSmvSgTVsKpCBCQRRKuVegcqgIUmG9cA9APFlYWHAFXZdlFQVZxRv5La4oou5XBDxWQQW7lsPlsIBSKtaiQmmLQgvSE1p6Jr8/6oQkTSYzk0kySV7Px4OHtpnMfNKm7ec9n/fn/dZZrVYriIiIiIiIyO/0gR4AERERERFRuGJARkREREREFCAMyIiIiIiIiAKEARkREREREVGAMCAjIiIiIiIKEAZkREREREREAcKAjIiIiIiIKEAYkBEREREREQUIAzIiIiIiIqIAYUBGREQUgoqLi6HT6fDmm28GeihERCSCARkREYW9U6dOYcmSJcjLywv0UIiIKMy0C/QAiIiIAu3UqVNYunQpevTogUGDBgV6OKro3r07Lly4gMjIyEAPhYiIRHCFjIiIQk59fT0sFkughxEQzc3NaGxshE6nQ1RUFCIiIgI9JCIiEsGAjIiIAuLkyZOYMWMGunTpAqPRiNTUVMyZMweNjY0AgIqKCvzlL39B//790b59e8THx+OGG27A119/7XCezz//HDqdDhs3bsQjjzyCrl27IiYmBjU1NZLO8fnnn+PKK68EANxzzz3Q6XSie6/ef/996HQ6/O9//2vz2CuvvAKdTof8/HwAQFlZGe655x5ccsklMBqNSElJwc0334zi4mLRr83dd9+N9u3b4/jx45gwYQJiY2PRpUsXPP7447BarbbjhH1izz33HF588UX06tULRqMRBQUFbveQfffdd/jd736Hjh07Ijo6GldccQUefvjhNt+be++9F507d4bRaES/fv3w+uuvi46ZiIiUYcoiERH53alTpzBs2DBUVVVh1qxZ6NOnD06ePIn3338fdXV1MBgMOH78ODZt2oTf/va3SE1NxenTp/HKK6/g6quvRkFBAbp06eJwzmXLlsFgMOAvf/kLGhoaYDAYUFBQ4PEcffv2xeOPP45HH30Us2bNwujRowEAV111lcuxT5o0Ce3bt8e7776Lq6++2uGxd955B/369UN6ejoA4LbbbsO3336L++67Dz169MCZM2eQnZ2NEydOoEePHqJfo5aWFmRmZmLEiBF45plnkJWVhcceewzNzc14/PHHHY594403UF9fj1mzZsFoNCIpKcnlCuHhw4cxevRoREZGYtasWejRowcKCwvx8ccf44knngAAnD59GiNGjIBOp8O8efPQsWNHfPrpp5gxYwZqamowf/580XETEZFMViIiIj+78847rXq93vrll1+2ecxisVitVqu1vr7e2tLS4vBYUVGR1Wg0Wh9//HHb53bu3GkFYO3Zs6e1rq7O4Xip5/jyyy+tAKxvvPGGpPFPnTrV2qlTJ2tzc7Ptc6WlpVa9Xm87b2VlpRWA9dlnn5V0Tnt33XWXFYD1vvvus33OYrFYJ02aZDUYDNaff/7Z9loAWOPj461nzpxp8zqdX9OYMWOscXFx1pKSEodjha+51Wq1zpgxw5qSkmI9e/aswzFTpkyxmkymNl9jIiLyDlMWiYjIrywWCzZt2oQbb7wRv/rVr9o8rtPpAABGoxF6feufqZaWFpSXl6N9+/a44oorkJub2+Z5d911F6Kjox0+J/ccUv3+97/HmTNn8Pnnn9s+9/7778NiseD3v/89ACA6OhoGgwGff/45KisrFV1n3rx5tv8XVqwaGxuxbds2h+Nuu+02dOzYUfRcP//8M3bt2oV7770Xl156qcNjwtfcarXiP//5D2688UZYrVacPXvW9m/ChAmorq726utGRERtMSAjIiK/+vnnn1FTU2NL63PHYrFgxYoV6N27N4xGI5KTk9GxY0ccPnwY1dXVbY5PTU31+hxSZWZmwmQy4Z133rF97p133sGgQYNw+eWXA2gNBp9++ml8+umn6Ny5M8aMGYNnnnkGZWVlkq6h1+vRs2dPh88J53beg+bqtTs7fvw4AIh+3X/++WdUVVXh1VdfRceOHR3+3XPPPQCAM2fOSBo/ERFJw4CMiIg06cknn8QDDzyAMWPGYN26dfjvf/+L7Oxs9OvXz+X+KOfVMSXnkMpoNOKWW27Bhx9+iObmZpw8eRJ79+61rY4J5s+fjx9++AHLly9HVFQUFi9ejL59++LQoUOKr+2Kq9euhPA1mT59OrKzs13+GzlypCrXIiKiVizqQUREftWxY0fEx8fbKhG68/777+Paa6/F2rVrHT5fVVWF5ORkSdeSeg4hZU+O3//+9/j3v/+N7du348iRI7BarW0CMgDo1asXHnzwQTz44IM4evQoBg0ahOeffx7r1q0TPb/FYsHx48dtq2IA8MMPPwCAx4IgrgirbWJf944dOyIuLg4tLS0YN26c7GsQEZF8XCEjIiK/0uv1uOWWW/Dxxx/jq6++avO49Zey7hEREQ4l3gHgvffew8mTJyVfS+o5YmNjAbQGalKNGzcOSUlJeOedd/DOO+9g2LBhDqmDdXV1qK+vd3hOr169EBcXh4aGBknXWLVqle3/rVYrVq1ahcjISFx33XWSxyno2LEjxowZg9dffx0nTpxweMz+a37bbbfhP//5j8vA7eeff5Z9XSIiEscVMiIi8rsnn3wSn332Ga6++mrMmjULffv2RWlpKd577z3s2bMHCQkJ+PWvf43HH38c99xzD6666ip88803ePvtt9vsqxIj9Ry9evVCQkICVq9ejbi4OMTGxmL48OGie7MiIyMxefJkbNy4EbW1tXjuueccHv/hhx9w3XXX4Xe/+x3S0tLQrl07fPjhhzh9+jSmTJnicexRUVHIysrCXXfdheHDh+PTTz/Fli1b8Pe//91jAQ93/t//+38YNWoUhgwZglmzZiE1NRXFxcXYsmUL8vLyAABPPfUUdu7cieHDh2PmzJlIS0tDRUUFcnNzsW3bNlRUVCi6NhERuRG4Ao9ERBTOSkpKrHfeeae1Y8eOVqPRaO3Zs6d17ty51oaGBqvV2lqy/sEHH7SmpKRYo6OjrSNHjrTm5ORYr776auvVV19tO49Q9v69995rcw2p57BardbNmzdb09LSrO3atZNcAj87O9sKwKrT6aw//vijw2Nnz561zp0719qnTx9rbGys1WQyWYcPH2599913PZ73rrvussbGxloLCwut119/vTUmJsbauXNn62OPPeZQxl8obe+qtL6rsvdWq9Wan59vvfXWW60JCQnWqKgo6xVXXGFdvHixwzGnT5+2zp0719qtWzdrZGSk1Ww2W6+77jrrq6++6nHsREQkj85qdcrlICIiooC6++678f777+P8+fOBHgoREfkY95AREREREREFCAMyIiIiIiKiAGFARkREREREFCDcQ0ZERERERBQgXCEjIiIiIiIKEAZkREREREREAcLG0CqxWCw4deoU4uLioNPpAj0cIiIiIiIKEKvVinPnzqFLly7Q68XXwBiQqeTUqVPo1q1boIdBREREREQa8eOPP+KSSy4RPYYBmUri4uIAtH7R4+PjAzwaIiIiIiIKlJqaGnTr1s0WI4hhQKYSIU0xPj6eARkREREREUnaysSiHkRERERERAHCgIyIiIiIiChAGJAREREREREFCAMyIiIiIiKiAGFARkREREREFCAMyIiIiIiIiAKEARkREREREVGAMCAjIiIiIiIKEAZkREREREREAcKAjIiIiIiIKEAYkBEREREREQUIAzIiIiIiIqIAYUBGREREREQUIO0CPQAiIrW0WKw4UFSBM+fq0SkuCsNSkxCh14XsdeW60NiCJ7cWoLi8Dj06xODvE9MQbYhoM/6h3RNxsKRS8uvxxetvbLbgrZxilFTUoXtSDO7I6AFDO95DJCKi0KOzWq3WQA8iFNTU1MBkMqG6uhrx8fGBHg5R2MnKL8WSjwpQVlNv+5w5PgpLbkpDZnqK2+d5G0wova6/zfy
2024-10-26 15:34:50 +04:00
"text/plain": [
2024-10-27 17:55:35 +04:00
"<Figure size 1000x600 with 1 Axes>"
2024-10-26 15:34:50 +04:00
]
},
"metadata": {},
"output_type": "display_data"
2024-10-27 17:55:35 +04:00
}
],
"source": [
"# Визуализируем отношение carat и price\n",
"plt.figure(figsize=(10, 6))\n",
"plt.scatter(df_diamond[\"carat\"], df_diamond[\"price\"])\n",
"plt.xlabel(\"carat\")\n",
"plt.ylabel(\"price\")\n",
"plt.title(\"carat vs price\")\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"В е с (карат) оказывает значительное влияние на цену бриллианта, но цена также зависит и от других параметров, которые стоит учесть для более точного анализа."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"2. Качество огранки и цена: Связь между качеством огранки (cut, price) и ценой."
]
},
{
"cell_type": "code",
"execution_count": 874,
"metadata": {},
"outputs": [
2024-10-26 15:34:50 +04:00
{
"data": {
2024-10-27 17:55:35 +04:00
"image/png": "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
2024-10-26 15:34:50 +04:00
"text/plain": [
2024-10-27 17:55:35 +04:00
"<Figure size 1000x600 with 1 Axes>"
2024-10-26 15:34:50 +04:00
]
},
"metadata": {},
"output_type": "display_data"
2024-10-27 17:55:35 +04:00
}
],
"source": [
"# Визуализируем отношение cut и price\n",
"plt.figure(figsize=(10, 6))\n",
"plt.scatter(df_diamond[\"cut\"], df_diamond[\"price\"])\n",
"plt.xlabel(\"cut\")\n",
"plt.ylabel(\"price\")\n",
"plt.title(\"cut vs price\")\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Качество огранки (cut) может не быть сильным предсказателем цены, по крайней мере, без учета других параметров бриллианта."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"3. Размеры бриллианта и цена: Связь между размером (x, y, z, price) и ценой. А также, заодно проверим depth и table"
]
},
{
"cell_type": "code",
"execution_count": 875,
"metadata": {},
"outputs": [
2024-10-26 15:34:50 +04:00
{
"data": {
2024-10-27 17:55:35 +04:00
"image/png": "iVBORw0KGgoAAAANSUhEUgAABdEAAAISCAYAAAAjjoaeAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdeXgTZdcG8Dst3WnTjbYpAi2IQinIJlJZRQQUEHdBVARfVFCRxQXUWioq4vt+ssgiIuJSQVGRRbAIgiJYKFARalGgFBBoQboCpWvm+6MmJGmWmWSSSdr7d11cF00m85xZmiZnzpxHJQiCACIiIiIiIiIiIiIiqsdL6QCIiIiIiIiIiIiIiNwVk+hERERERERERERERBYwiU5EREREREREREREZAGT6EREREREREREREREFjCJTkRERERERERERERkAZPoREREREREREREREQWMIlORERERERERERERGQBk+hERERERERERERERBYwiU5E5KG0Wi0uXLiA48ePKx2Ky5WUlODYsWOoqalROhQiIiIiIiIiauCYRCci8iAFBQWYPHkyWrVqBV9fXzRr1gwJCQkoKytTOjSnqq6uxjvvvIMbbrgBfn5+CAsLQ9u2bfHjjz8qHRoRERERERERNXBNlA6AiNzLxx9/jLFjx2Lv3r3o3r17vef79++PCxcuIDs7W4HoGrdjx47hlltuQXV1NSZNmoSuXbuiSZMmCAgIQFBQkNLhOU1lZSUGDRqE3bt346mnnsKsWbMQGBgIb29vdOvWTenwiIiIiIiIiKiBYxKdiMhDPPnkk/D19cXu3bvRvHlzpcNxmTlz5mDPnj3YvHkz+vfvr3Q4RERERCQTFvAQEZGnYBKdiMgD7N+/H9u2bcMPP/zQqBLoNTU1mDdvHqZNm8YEOhEREREREREpgj3RiUgWf/75J+677z6Eh4fD398f3bt3x/r1642W+fjjj6FSqbBv3z6jxy9cuACVSoWZM2fqHzt58iQmTpyI66+/HgEBAYiIiMD999+PEydOWI2juroa4eHhGDt2bL3nysrK4O/vj+eff17/2HvvvYcOHTogMDAQYWFh6N69O1auXGl1jJ9++gkqlcrsv507dxotGxcXZ3a5n376CQAwZswYREZGorq6ut44gwYNwvXXXw8A2L17N/z9/ZGbm4sOHTrAz88PMTExePLJJ1FUVGT0uv79+9dLOO/du1c/tiGVSoVnnnmm3tjDhg1DXFyc0WP/+9//cPPNNyMiIgIBAQHo1q0bvv76a6v7yjAmw+2PjIzE0KFDbVYV/fXXXyguLkZwcDD69euHwMBAqNVqDBs2rN5rZ86cCZVKhT///BMPPPAAQkJCEBERgeeeew4VFRX1ttvwfAOA//73v1CpVGaT9Y899pjZ42i6Dt26zf0zPHfFjl9VVYXXXnsN3bp1g1qtRlBQEPr06YPt27cbvfbEiRNQqVT43//+Vy+exMRE/TqtnbvmtunMmTMYN24coqOj4efnhw4dOuCjjz6qNwYRERERERFRQ8YkOhE57I8//kDPnj1x+PBhTJ8+Hf/3f/+HoKAg3HXXXfj222/tWufevXvx66+/YuTIkViwYAGeeuop/Pjjj+jfvz/Ky8stvs7Hxwd333031q5di6qqKqPn1q5di8rKSowcORIAsGzZMkyaNAkJCQmYN28eUlNT0blzZ+zZs0dUjJMmTcJnn31m9E+X9DbUp08f/fMvv/yy0XOPPPIICgsLsXnzZqPHCwoKsG3bNjz88MMAgMLCQlRUVGDChAmIiYnB//73P4wcORIfffQRBgwYgMrKSquxvvTSS6K2yZr58+ejS5cueP311/HWW2+hSZMmuP/++7Fx40ZRr2/Xrh0+++wzfPrpp3jmmWfwyy+/4I477rD6msLCQgDAjBkzkJ+fj9TUVDz//PPYt28fevXqhSNHjtR7zQMPPICKigrMnj0bd9xxBxYsWIAnnnjC6jglJSWYPXu21WUiIyONjrU1d999t345W2NbG7+srAwffvgh+vfvjzlz5mDmzJn4559/MHjwYBw4cMDmek21b9/eaBv69OlTb7vuueceAMC5c+fQs2dPbN26Fc888wzmz5+Pa6+9Fo8//jjmzZsneWwiIiIiubCA5+q/xx57rN5rTAtYdP8+/vhjo+W++uordOvWDQEBAYiMjMTDDz+MM2fOGC3z2GOPoWnTpkaPff3110aFQTpNmzatF8+KFSswYMAAREVFwc/PDwkJCViyZInZbdUVhtgqSNEdW8PH/vjjD4SFhWHYsGGoqakBABQVFeH5559Hx44d0bRpU4SEhOD222/H77//bnZ8IiJr2M6FiBz23HPPoWXLlti7dy/8/PwAABMnTkTv3r3x0ksv4e6775a8zqFDh+K+++4zemz48OFISkrCN998g0ceecTiax988EF89NFH+OGHHzBs2DD9419++SVat26t77e4ceNGdOjQAV999ZXk+IC65LhpjKZqampw7bXX6pPhP/30E9566y398wMGDMA111yDtLQ0o1hXrVoFrVarf51WqwUA3Hrrrdi8eTO8vb0BAJ07d8bYsWOxbNkysxXlAPD9999j+/btGDJkCNLT0+3aVgA4cuQIAgIC9D8/88wz6Nq1K959910MHTrU5uujo6P12wPUfel466238M8//6BZs2ZmX6Pb7sjISGRkZCAiIgIAMHLkSHTo0AEvv/xyvWr4+Ph4rFu3DgDw9NNPIyQkBIsXL8bzzz+PTp06mR1n9uzZ8PHxsThRaU1NDYKDg43iN3cO6j6wd+7cWb9sTU0NPvjgA7PrtTV+WFgYTpw4AV9fX/1j48ePR7t27fDee+9h+fLlVtdryvQYbN26FadOnTJ6TOeVV15BbW0tDh06pN/vTz31FEaNGoWZM2fiySefNDofiIiIiFzhjz/+QK9evdC8eXNMnz4dQUFBWL16Ne666y588803dn33MCzgueaaa3DixAksWbIE/fv3R05ODgIDA82+TlfAs2bNGixdutToM5ulAp777rtPf6fkwYMHsWfPHjz00EM2Y5w0aRJuvPFGo8f+85//WFy+Xbt2eOWVVwDUXTiYMmWK0fO6fvQ33ngjZs+ejXPnzmH+/PnYtWsXfvvtN4SGhtqMSYwlS5agQ4cOuPPOO9GkSRNs2LABEydOhFarxdNPP232NaNGjdIX22zatAmrVq2yOsbff/+NIUOGoF27dli9ejWaNKlLdR0/fhxr167F/fffj/j4eJw7dw5Lly5Fv379kJOTg9jYWFm2kYgaBybRicghRUVF2LZtG15//XVcvHgRFy9e1D83ePBgpKSk4MyZM0Z9vEtLS3HhwgWjdZgyTM5VV1ejrKwM1157LUJDQ5GVlWU1iT5gwABERkbiyy+/1Cemi4uLsWXLFqNKkNDQUJw+fRp79+6t94FULlVVVfoLC+Z4eXlh9OjRWLBgAS5evIjg4GAAwOeff46bb74Z8fHxRstPnTpVn0AH6hK506dPx8aNG80m0QVBwIwZM3DvvfciMTHRbBK9oqLC6HgAMNtexvCYFBcXo7a2Fn369LH5odZwnRcuXIAgCDh27Bi+/fZbdOrUCZGRkTZfO3bsWH0iFwDatm2LO++8E+np6aitrTXaJ6Yfxp999lksXrwYmzZtMptEP3PmDN577z288847FtvT2DqOhssBELWsmPG9vb3126bValFSUgKtVovu3bsjKyur3rrKy8vrHcva2lrRsegIgoBvvvkGDzzwAARBMFrn4MGD8cUXXyArKwu9evWSvG4iIiIiR7CA56qnnnrK7LI1NTXQaDT6QokTJ04YJdGrq6vx0ksvITExETt27IC/vz8AoHfv3hg2bBjmzp2L1NRUu+I09fPPP9crxBkyZAjefffdep/bdd9BunXrpo+9oKDA6veN4uJiDBkyBEFBQfjuu++MLnh07NgRR44cgZfX1SYMjzzyCNq1a4fly5cjOTlZlm0kosaB7VyIyCHHjh2DIAhITk5Gs2bNjP6lpKQAAM6fP2/0moEDBxotZ64FypUrV/Daa6+hRYsW8PPzQ2RkJJo1a4a
2024-10-26 15:34:50 +04:00
"text/plain": [
2024-10-27 17:55:35 +04:00
"<Figure size 1500x1000 with 2 Axes>"
2024-10-26 15:34:50 +04:00
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
2024-10-27 17:55:35 +04:00
"image/png": "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
2024-10-26 15:34:50 +04:00
"text/plain": [
2024-10-27 17:55:35 +04:00
"<Figure size 1500x1000 with 3 Axes>"
2024-10-26 15:34:50 +04:00
]
},
"metadata": {},
"output_type": "display_data"
2024-10-27 17:55:35 +04:00
}
],
"source": [
"# Проверим, что нулевые значения удалены\n",
"plt.figure(figsize=(15, 10))\n",
"\n",
"# Повторная визуализация распределений после удаления нулевых значений\n",
"plt.subplot(2, 2, 1)\n",
"plt.scatter(df_diamond[\"price\"], df_diamond[\"depth\"])\n",
"plt.xlabel(\"цена\")\n",
"plt.ylabel(\"глубина в бриллианте \")\n",
"plt.title(\"Цена vs глубина в бриллианте \")\n",
"\n",
"plt.subplot(2, 2, 2)\n",
"plt.scatter(df_diamond[\"price\"], df_diamond[\"table\"])\n",
"plt.xlabel(\"цена\")\n",
"plt.ylabel(\"площадка\")\n",
"plt.title(\"Цена vs площадка\")\n",
"\n",
"plt.tight_layout()\n",
"plt.show()\n",
"\n",
"# Проверим, что нулевые значения удалены\n",
"plt.figure(figsize=(15, 10))\n",
"\n",
"# Повторная визуализация распределений после удаления нулевых значений\n",
"plt.subplot(3, 3, 1)\n",
"plt.scatter(df_diamond[\"price\"], df_diamond[\"x\"])\n",
"plt.xlabel(\"цена\")\n",
"plt.ylabel(\"длина\")\n",
"plt.title(\"Цена vs длина\")\n",
"\n",
"plt.subplot(3, 3, 2)\n",
"plt.scatter(df_diamond[\"price\"], df_diamond[\"y\"])\n",
"plt.xlabel(\"цена\")\n",
"plt.ylabel(\"ширина\")\n",
"plt.title(\"Цена vs ширина\")\n",
"\n",
"plt.subplot(3, 3, 3)\n",
"plt.scatter(df_diamond[\"price\"], df_diamond[\"z\"])\n",
"plt.xlabel(\"цена\")\n",
"plt.ylabel(\"глубина\")\n",
"plt.title(\"Цена vs глубина\")\n",
"\n",
"plt.tight_layout()\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Из представленных диаграмм можно сделать следующие выводы:\n",
"\n",
"Глубина бриллианта (depth) и цена:\n",
"\n",
"Н а диаграмме \"Цена vs глубина в бриллианте\" видна слабая связь между ценой и глубиной бриллианта. Значения глубины сосредоточены в диапазоне от 50 до 70, и вариации в этом диапазоне не сильно влияют на цену. Это говорит о том, что глубина может иметь минимальное влияние на предсказание цены и может рассматриваться для исключения.\n",
"Площадка (table) и цена:\n",
"\n",
"Диаграмма \"Цена vs площадка\" также не показывает четкой зависимости между значением площадки и ценой бриллианта. Влияние площадки на цену незначительно, и этот признак, вероятно, не является важным для предсказания цены.\n",
"Длина (x), ширина (y), глубина (z) и цена:\n",
"\n",
"Признаки длины, ширины и глубины (x, y, z) показывают более выраженные зависимости с ценой, особенно длина (x), которая, кажется, имеет позитивную корреляцию с ценой. Эти признаки могут быть более полезны для модели."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Проблемы выбранного набора данных и их решение\n",
"\n",
"**Зашумлённость данных и выбросы** \n",
"\n",
"Проведя анализ выше мы выяснили, что столбцы depth и table могут быть менее полезны, поэтому мы безопасно удалим их, и их влияние на цену конкретного бриллианта может быть незначительным."
]
},
{
"cell_type": "code",
"execution_count": 876,
"metadata": {},
"outputs": [
2024-10-26 15:34:50 +04:00
{
2024-10-27 17:55:35 +04:00
"name": "stdout",
"output_type": "stream",
"text": [
"Index(['Unnamed: 0', 'carat', 'cut', 'color', 'clarity', 'price', 'x', 'y',\n",
" 'z'],\n",
" dtype='object')\n"
]
}
],
"source": [
"# Удаление столбцов sqft_living15 и sqft_lot15\n",
"df_diamond = df_diamond.drop(columns=[\"depth\", \"table\"])\n",
"\n",
"# Проверим, что столбцы удалены\n",
"print(df_diamond.columns)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Также зашумлённость может быть обнаружена через большое количество выбросов (аномальных значений). Выбросы могут выходить за нормальные границы. "
]
},
{
"cell_type": "code",
"execution_count": 877,
"metadata": {},
"outputs": [
2024-10-26 15:34:50 +04:00
{
"data": {
2024-10-27 17:55:35 +04:00
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA90AAAIHCAYAAACCHD97AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABOXklEQVR4nO3de3zP9f//8ft754MdYsyWYXMOS8RyJnIOnz4U+eRMhVKkkjJ89NEn/ZSiPjpZSvkkxTehEPn0MUT2cYpYc/g4jdjJaez9/P3Rd++vt7HN7LX3Drfr5bKLvV+v5+v5frxez/dr293rZDPGGAEAAAAAgELn5uoCAAAAAAAorQjdAAAAAABYhNANAAAAAIBFCN0AAAAAAFiE0A0AAAAAgEUI3QAAAAAAWITQDQAAAACARQjdAAAAAABYhNANAAAAAIBFCN0AANwCm82mKVOmuLoMAABQTBG6AQDFUlxcnGw2m9NXpUqV1L59e61cudLV5d2yPXv2aMqUKTp48KCrSylV/va3v2np0qWuLgMAAAdCNwCgWJs2bZo+/vhjLViwQM8++6xOnTqlbt26afny5a4u7Zbs2bNHU6dOJXQXMkI3AKC48XB1AQAA5KZr1666++67Ha+HDRum0NBQffbZZ+rRo4cLK4PV7Ha7MjMz5ePj4+pSAAAoMI50AwBKlODgYPn6+srDw/n/jc+dO6fx48crIiJC3t7eqlOnjl577TUZYyRJFy5cUN26dVW3bl1duHDBsdyZM2cUFhamFi1aKCsrS5I0ePBglStXTr/99ps6d+4sf39/hYeHa9q0aY7+crN9+3Z17dpVgYGBKleunDp06KBNmzY55sfFxalv376SpPbt2ztOn1+/fn2efVevXj3Hafc2m01xcXE52k6ZMuW6bQcPHuzUbt26dWrdurVuu+02p3ZjxozJs56LFy9qypQpql27tnx8fBQWFqYHHnhAiYmJjjavvfaaWrRooQoVKsjX11dNmjTRF198kaOv7PdcuHCh6tevL29vb61atSrffdhsNp07d04fffTRDdcVAICixpFuAECxlpqaqtOnT8sYo+TkZL311lvKyMjQX/7yF0cbY4x69uypdevWadiwYWrUqJG+/fZbTZgwQUePHtXrr78uX19fffTRR2rZsqUmTZqkWbNmSZJGjx6t1NRUxcXFyd3d3dFnVlaWunTponvuuUevvvqqVq1apdjYWF25ckXTpk27Yb27d+9W69atFRgYqGeffVaenp6aN2+e2rVrpx9++EExMTFq06aNnnzySb355pt64YUXVK9ePUly/JuXRo0aafz48ZKkpKQkTZ48Odf2H3/8seP7p59+2mleUlKSunfvrrCwME2ePFkVK1aUJD3yyCN51pGVlaUePXpo7dq16tevn8aOHav09HStXr1au3btUo0aNSRJs2fPVs+ePTVgwABlZmZq0aJF6tu3r5YvX67u3bs79fn999/r888/15gxYxQSEqLq1avnu4+PP/5Yw4cPV7NmzTRy5EhJctQAAIDLGAAAiqH58+cbSTm+vL29TVxcnFPbpUuXGklm+vTpTtP79OljbDabOXDggGPaxIkTjZubm9mwYYNZvHixkWTeeOMNp+UGDRpkJJknnnjCMc1ut5vu3bsbLy8vc+rUKcd0SSY2Ntbxunfv3sbLy8skJiY6ph07dswEBASYNm3aOKZlv/e6detuaruEh4ebHj16OF7/9NNPRpKZP39+jraTJk0yNpvNaVq1atXMoEGDHK/nzZtnJJn4+HindpLM6NGjc63lww8/NJLMrFmzcsyz2+2O78+fP+80LzMz0zRo0MDce++9Od7Tzc3N7N69O0d/+e3D39/faf0AAHA1Ti8HABRrc+fO1erVq7V69Wp98sknat++vYYPH64vv/zS0WbFihVyd3fXk08+6bTs+PHjZYxxutv5lClTVL9+fQ0aNEijRo1S27ZtcyyX7erTq7NPfc7MzNSaNWuu2z4rK0vfffedevfuraioKMf0sLAwPfzww/rxxx+VlpZWoO2Q7eLFi/m+xjkzM1Pe3t65tklPT5ckVahQ4aZrWbJkiUJCQvTEE0/kmGez2Rzf+/r6Or4/e/asUlNT1bp1a/388885lmvbtq3uuOOOHNNvpg8AAIoTTi8HABRrzZo1c7qRWv/+/XXXXXdpzJgx6tGjh7y8vHTo0CGFh4crICDAadns07UPHTrkmObl5aUPP/xQTZs2lY+Pj+bPn+8UELO5ubk5BWdJql27tiTd8I7jp06d0vnz51WnTp0c8+rVqye73a4jR46ofv36+Vv5a2RlZSklJUVBQUH5ap+SkqJy5crl2qZ58+aSpAkTJmjGjBmO08vzIzExUXXq1Mlxff21li9frunTpyshIUGXLl1yTL/edo+MjLzlPgAAKE440g0AKFHc3NzUvn17HT9+XPv37y9QH99++62kP44aF7QPVzh8+LDsdrvjOue8nDhxQpUrV861TYsWLTRz5kytXbtWd9xxhypWrHhTwTsv//rXv9SzZ0/5+Pjo7bff1ooVK7R69Wo9/PDD170p3dVHtAvaBwAAxQlHugEAJc6VK1ckSRkZGZKkatWqac2aNUpPT3c62r13717H/Gw7duzQtGnTNGTIECUkJGj48OHauXNnjqPHdrtdv/32m+PotiT9+uuvknTD0FuxYkX5+flp3759Oebt3btXbm5uioiIkFSwI7Rbt26VJKcj/7nZs2ePGjdunGe7Z555Rvv379eSJUu0YMECeXl56b777stzuRo1amjz5s26fPmyPD09r9tmyZIl8vHx0bfffut0qvv8+fPztQ432wdHvgEAxQ1HugEAJcrly5f13XffycvLy3H6eLdu3ZSVlaU5c+Y4tX399ddls9nUtWtXx7KDBw9WeHi4Zs+erbi4OJ08eTLHHb2zXd2fMUZz5syRp6enOnTocN327u7u6tSpk5YtW+Z0CvrJkyf16aefqlWrVgoMDJQk+fv7S/rjFPD8Wrx4sYKDg9W2bds8227dulWJiYm6995782z79ddf691339X777+vbt26qWPHjvmq589//rNOnz6dY7tLchyBdnd3l81mczyOTfrj9PylS5fm6z1utg9/f/+b2qYAAFiNI90AgGJt5cqVjiPWycnJ+vTTT7V//349//zzjgB7//33q3379po0aZIOHjyoO++8U999952WLVump556yvHYqOxrgteuXauAgABFR0dr8uTJevHFF9WnTx9169bN8b4+Pj5atWqVBg0apJiYGK1cuVLffPONXnjhhVxPv54+fbpWr16tVq1aadSoUfLw8NC8efN06dIlvfrqq452jRo1kru7u/7+978rNTVV3t7euvfee1WpUqUcfZ48eVJvvvmmFi9erDZt2mjJkiWOeUlJSZKk+Ph4NW7cWNHR0Zo2bZpmz56tqKgoDRw4MNfte+LECQ0bNkzDhw9X79698xgNZwMHDtSCBQs0btw4bdmyRa1bt9a5c+e0Zs0ajRo1Sr169VL37t01a9YsdenSRQ8//LCSk5M1d+5c1axZUzt27MjX+9xMH02aNNGaNWs0a9YshYeHKzIyUjExMTe1XgAAFCqX3jsdAIAbuN4jw3x8fEyjRo3MO++84/RIKmOMSU9PN08//bQJDw83np6eplatWmbmzJmOdtu2bTMeHh5OjwEzxpgrV66Ypk2bmvDwcHP27FljzB+PDPP39zeJiYmmU6dOxs/Pz4SGhprY2FiTlZXltLyueWSYMcb8/PPPpnPnzqZcuXLGz8/PtG/f3mzcuDHHOr733nsmKirKuLu75/r4sHXr1l338WnXfmXXUaVKFTN06FBz7NixHH1d/cgwu91uunTpYmrVqmUyMjJyrFdejwwz5o9HeU2aNMlERkYaT09PU7lyZdOnTx+nR6Z98MEHplatWsbb29vUrVvXzJ8/38TGxppr/wzJ7T3z28fevXtNmzZtjK+vr5HE48MAAC5nM4Y7kAAAcLXBgwfriy++cFwz7mrr169X+/btc71p2ODBg1W9enVNmTKl6AoDAAB54ppuAAAAAAAswjXdAAA
2024-10-26 15:34:50 +04:00
"text/plain": [
2024-10-27 17:55:35 +04:00
"<Figure size 1000x1000 with 2 Axes>"
2024-10-26 15:34:50 +04:00
]
},
"metadata": {},
"output_type": "display_data"
2024-10-27 17:55:35 +04:00
}
],
"source": [
"# Построим графики boxplot для обнаружения выбросов\n",
"plt.figure(figsize=(10, 10))\n",
"\n",
"# Создание boxplot\n",
"for i, column in enumerate(['carat', 'price'], 1):\n",
" plt.subplot(4, 1, i)\n",
" sns.boxplot(x=df_diamond[column])\n",
" plt.title(f\"Boxplot для {column}\")\n",
" \n",
"plt.tight_layout()\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Они наблюдаются во всех графиках, которые мы построили. Если у определённого параметра много выбросов, то данные могут быть зашумлены или содержат необычные значения, которые стоит анализировать и, возможно, удалить или скорректировать. Графики boxplot помогают визуализировать распределение данных и выявить выбросы, которые находятся за пределами \"усов\" боксплота.\n",
"\n",
"Попробуем решить устранить проблему выбросов для price и carat. Используем метод интерквартильного размаха и заменим их на медиану."
]
},
{
"cell_type": "code",
"execution_count": 878,
"metadata": {},
"outputs": [
2024-10-26 15:34:50 +04:00
{
"data": {
2024-10-27 17:55:35 +04:00
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA94AAAHqCAYAAADyGZa5AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABvpElEQVR4nO3deZyN5eP/8ffsM2bMDGYMYxljz5YoIgxZxwifkkiMLb4hSamkLEmypEgJlVFEobTJTkoi4pO9yVpkbM0YOzPX7w+/c38cZ8wit4N5PR+PeXCu+zr3ue77vu5zzvvcy+VhjDECAAAAAAC28HR3AwAAAAAAuJ0RvAEAAAAAsBHBGwAAAAAAGxG8AQAAAACwEcEbAAAAAAAbEbwBAAAAALARwRsAAAAAABsRvAEAAAAAsBHBGwAA3NbS09N19OhR7d69291NAQDkUgRvALc0Dw8PDR061N3NAHCTOXTokPr166eoqCj5+voqPDxcFSpU0IkTJ9zdNABALkTwBpChhIQEeXh4OP0VLFhQDRo00Hfffefu5v1r27Zt09ChQ7V37153N+W28tprr2n+/PnubgZyuT/++EP33HOPZs+erZ49e+qbb77RkiVLtGzZMgUGBrq7eQCAXMjb3Q0AcHN75ZVXFB0dLWOMkpKSlJCQoObNm+vrr79WixYt3N28a7Zt2zYNGzZM9evXV4kSJdzdnNvGa6+9pjZt2qh169bubgpysZ49e8rX11c///yzihQp4u7mAABA8AaQudjYWN19993W427duikiIkKzZs26pYM3spaenq7z58/L39/f3U0Bsm3Dhg1avny5Fi9eTOgGANw0ONUcQI6EhoYqICBA3t7Ov9udOnVKzzzzjIoVKyY/Pz+VK1dOY8eOlTFGknTmzBmVL19e5cuX15kzZ6znHT9+XIULF1bt2rWVlpYmSercubOCgoK0e/duNW3aVIGBgYqMjNQrr7xizS8zGzduVGxsrIKDgxUUFKSGDRvq559/tqYnJCTo4YcfliQ1aNDAOpV+5cqVWc67RIkSLqfge3h4KCEhwaXu0KFDM6zbuXNnp3orVqxQ3bp1lS9fPqd6ffr0ybI9Z8+e1dChQ1W2bFn5+/urcOHCevDBB7Vr1y6rztixY1W7dm0VKFBAAQEBql69uubOnesyL8drzpw5UxUrVpSfn58WLlyY7Xl4eHjo1KlTmj59+lWX9XIrV67McP1c7bm7d+/Www8/rPz58ytPnjy699579e23317TOpGyv30OHDigrl27KiIiQn5+fqpYsaI+/PDDqy6Xw7FjxxQbG6uiRYvKz89PhQsXVocOHbRv3z6nejnZPh4eHnrrrbdcppUvXz7DPpOcnKx+/fpZ+2Xp0qU1atQopaenW3X27t0rDw8PjR071mW+lSpVUv369a3Hjm2WUfscOnfunK2zSC7flzw9PVWoUCE98sgj2r9/f7ba5uDYjg4///yz/P39tWvXLqsfFypUSD179tTx48ednlu/fn1VqlRJGzZsUO3atRUQEKDo6Gi99957Lq9z+PBh64dHf39/3XnnnZo+fbpLvfT0dI0fP16VK1eWv7+/wsPD1axZM61fv96qc/HiRQ0fPlylSpWSn5+fSpQooRdffFHnzp3L8TrKbP1m9ONonz59nNaXJE2bNk3333+/ChYsKD8/P1WoUEGTJk3K8jWkS9vbw8NDVatWdZk2cuRIeXh4KCgoyGXajBkzVL16dQUEBCh//vxq166d/vzzzwxf42rvEZe/Zzv65pXv43FxcS73Atm3b5969eqlcuXKKSAgQAUKFNDDDz/scumR45Kry7edJB09etRpnitWrJCHh4e++OILl7Z/8skn8vDw0Jo1azJcNgC5B0e8AWQqJSVFR48elTFGhw8f1ttvv62TJ0/qscces+oYY9SyZUutWLFC3bp1U9WqVbVo0SINGDBABw4c0JtvvqmAgABNnz5d9913nwYNGqRx48ZJknr37q2UlBQlJCTIy8vLmmdaWpqaNWume++9V6NHj9bChQs1ZMgQXbx4Ua+88spV27t161bVrVtXwcHBeu655+Tj46PJkyerfv36+v7771WzZk3Vq1dPffv21YQJE/Tiiy/qjjvukCTr36xUrVpVzzzzjCRpz549Gjx4cKb1P/74Y+v/Tz/9tNO0PXv2KC4uToULF9bgwYMVHh4uSerYsWOW7UhLS1OLFi20bNkytWvXTk899ZRSU1O1ZMkSbdmyRaVKlZIkjR8/Xi1btlSHDh10/vx5zZ49Ww8//LC++eYbxcXFOc1z+fLl+uyzz9SnTx+FhYVZASo78/j444/VvXt31ahRQz169JAkqw2Z6du3r+655x6nsu7duzs9TkpKUu3atXX69Gn17dtXBQoU0PTp09WyZUvNnTtX//nPf3K0Ti6X2fZJSkrSvffea4Xa8PBwfffdd+rWrZtOnDihfv36XXW5zp8/r7x58+qpp55SgQIFtGvXLr399tv67bfftHnzZqteTraPv7+/pk2b5vS6P/30k0uYl6TTp08rJiZGBw4cUM+ePVW8eHH99NNPGjhwoP7+++8MA/yNVrduXfXo0UPp6enasmWL3nrrLR08eFA//PDDNc/z2LFjOnv2rJ544gndf//9+r//+z/t2rVL77zzjtauXau1a9fKz8/Pqv/PP/+oefPmatu2rdq3b6/PPvtMTzzxhHx9fdW1a1dJl344rF+/vv744w/16dNH0dHRmjNnjjp37qzk5GQ99dRT1vy6deumhIQExcbGqnv37rp48aJ++OEH/fzzz9bZQ927d9f06dPVpk0bPfPMM1q7dq1Gjhyp7du3u4Q3O9bRlSZNmqSKFSuqZcuW8vb21tdff61evXopPT1dvXv3zvL53t7e2rp1qzZu3Ki77rrLKk9ISMjwjJkRI0bo5ZdfVtu2bdW9e3cdOXJEb7/9turVq6eNGzcqNDTU5TmNGzdWp06dJEm//PKLJkyYkGW7Vq1apQULFriU//LLL/rpp5/Url07FS1aVHv37tWkSZNUv359bdu2TXny5Mly3perX7++ihUrppkzZ1rvRQ4zZ85UqVKlVKtWrRzNE8BtyABABqZNm2Ykufz5+fmZhIQEp7rz5883ksyrr77qVN6mTRvj4eFh/vjjD6ts4MCBxtPT06xatcrMmTPHSDJvvfWW0/Pi4+ONJPPkk09aZenp6SYuLs74+vqaI0eOWOWSzJAhQ6zHrVu3Nr6+vmbXrl1W2cGDB03evHlNvXr1rDLHa69YsSJH6yUyMtK0aNHCevzLL78YSWbatGkudQcNGmQ8PDycyqKiokx8fLz1ePLkyUaSWbNmjVM9SaZ3796ZtuXDDz80ksy4ceNcpqWnp1v/P336tNO08+fPm0qVKpn777/f5TU9PT3N1q1bXeaX3XkEBgY6LV9mVqxYYSSZOXPmuEy7cj79+vUzkswPP/xglaWmppro6GhTokQJk5aWZozJ/joxJnvbp1u3bqZw4cLm6NGjTvXatWtnQkJCXNZLVkaPHm0kOc0vJ9unTZs2xtvb26xfv96pjY8++qhLnxk+fLgJDAw0v//+u9N8XnjhBePl5WX2799vjDFmz549RpIZM2aMS3srVqxoYmJirMeZbTOH+Ph4ExUVdfWV8P9dua6NMebRRx81efLksR5n1jaHIUOGmMu/zjgeN2zY0Fy8eNEqd7ynvf3221ZZTEyMkWTeeOMNq+zcuXOmatWqpmDBgub8+fPGGGPeeustI8nMmDHDqnf+/HlTq1YtExQUZE6cOGGMMWb58uVGkunbt69LOx39b9OmTUaS6d69u9P0Z5991kgyy5cvz9E6upqoqCgTFxfnUt67d2+n9WWMax80xpimTZuakiVLZvk68fHxJjAw0DzwwAOmT58+VvkPP/xgAgICTOvWrU1gYKBVvnfvXuPl5WVGjBjhNJ/Nmzcbb29vl/Lz588bSU7zzuj929E3Ly+rWbOmiY2NdfmcyGh516xZYySZjz76yCpz9JlffvnFqe6RI0dc5jlw4EDj5+dnkpOTrbLDhw8bb29vp3oAci9ONQeQqXfeeUd
2024-10-26 15:34:50 +04:00
"text/plain": [
2024-10-27 17:55:35 +04:00
"<Figure size 1000x500 with 2 Axes>"
2024-10-26 15:34:50 +04:00
]
},
"metadata": {},
"output_type": "display_data"
2024-10-27 17:55:35 +04:00
}
],
"source": [
"# Вычисление квантилей для каждого столбца\n",
"Q1 = df_diamond[['carat', 'price']].quantile(0.25)\n",
"Q3 = df_diamond[['carat', 'price']].quantile(0.75)\n",
"IQR = Q3 - Q1\n",
"\n",
"# Определение границ для выбросов\n",
"lower_bound = Q1 - 1.5 * IQR\n",
"upper_bound = Q3 + 1.5 * IQR\n",
"\n",
"# Функция для замены выбросов на медианное значение\n",
"def replace_outliers_with_median(column):\n",
" median_value = column.median()\n",
" return column.where((column >= lower_bound[column.name]) & (column <= upper_bound[column.name]), median_value)\n",
"\n",
"# Применение функции к каждому столбцу\n",
"for column in ['carat', 'price']:\n",
" df_diamond[column] = replace_outliers_with_median(df_diamond[column])\n",
"\n",
"# Графическое отображение после замены выбросов\n",
"plt.figure(figsize=(10, 5))\n",
"for i, column in enumerate(['carat', 'price'], 1):\n",
" plt.subplot(2, 1, i)\n",
" sns.boxplot(x=df_diamond[column])\n",
" plt.title(f\"Boxplot для {column} после замены выбросов на медиану\")\n",
"\n",
"plt.tight_layout()\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Актуальность данных** \n",
"\n",
"Это проблема, которая возникает, когда данные устарели или больше не отражают текущую ситуацию. Это часто встречается в данных о ценах. \n",
"\n",
"**Просачивание данных** \n",
"\n",
"Происходит, когда в обучающей выборке присутствует информация, которая не должна быть известна модели на этапе обучения. В данном случае это может происходить, если некоторые переменные, такие как цена, сильно коррелируют с целевым признаком и тем самым искажают результат. Проверка на наличие утечек данных. \n",
"\n",
"**Смещение в данных** \n",
"\n",
"Может возникать, если датасет не полностью репрезентативен для реальной популяции бриллиантов. Например, если в датасете больше дешёвых или дорогих бриллиантов, это создаёт смещение в оценке моделей \n",
"Код ниже проверяет данные на распредение признаков и просачивание данных."
]
},
{
"cell_type": "code",
"execution_count": 879,
"metadata": {},
"outputs": [
2024-10-26 15:34:50 +04:00
{
"data": {
2024-10-27 17:55:35 +04:00
"image/png": "iVBORw0KGgoAAAANSUhEUgAABdEAAAPdCAYAAABlRyFLAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdd3xV9f3H8fe5O3uShEACYSNDICjiVhBUrFJXtThqqagFFWkd/Oq2lqp1i6JtHa1YV91SlKGiiCAgyt4YVhJCxs2+6/z+uMmFCwQEQ27G6/l4nMcZ3+855/O94TyAz/3mcwzTNE0BAAAAAAAAAID9WCIdAAAAAAAAAAAAzRVJdAAAAAAAAAAAGkASHQAAAAAAAACABpBEBwAAAAAAAACgASTRAQAAAAAAAABoAEl0AAAAAAAAAAAaQBIdAAAAAAAAAIAGkEQHAAAAAAAAAKABJNEBAAAAAAAAAGgASXQAAAAAOEyff/65DMPQ559/HulQAAAAcJSRRAcAAECL9vLLL8swjNDicrnUo0cPTZgwQQUFBZEODwAAAEALZ4t0AAAAAEBjuP/++5WTk6Oamhp99dVXeu655zRjxgytWLFC0dHRkQ4Prcypp56q6upqORyOSIcCAACAo4wkOgAAAFqFc845R4MHD5Yk/e53v1NKSooee+wxvf/++7r88ssjHB1ai5qaGjkcDlksFrlcrkiHAwAAgCZAORcAAAC0SmeeeaYkafPmzZKk4uJi/fGPf1S/fv0UGxur+Ph4nXPOOfr+++/3O7empkb33nuvevToIZfLpfbt2+vCCy/Uxo0bJUlbtmwJKyGz73L66aeHrlVfO/uNN97Q//3f/ykjI0MxMTE6//zztXXr1v3uvXDhQp199tlKSEhQdHS0TjvtNM2fP/+AYzz99NMPeP977713v76vvvqqcnNzFRUVpeTkZF122WUHvP/Bxra3QCCgJ554Qn369JHL5VJ6erquu+46lZSUhPXr3LmzzjvvvP3uM2HChP2ueaDYH3nkkf0+U0mqra3VPffco27dusnpdCorK0u33XabamtrD/hZ7e30009X3759tWTJEp144omKiopSTk6Opk2bFtav/mf3+uuv684771SHDh0UHR0tt9vdYE30hQsX6txzz1VSUpJiYmLUv39/Pfnkk2F91qxZo4svvljJyclyuVwaPHiwPvjgg0PGDQAAgMhgJjoAAABapfqEd0pKiiRp06ZNeu+993TJJZcoJydHBQUFev7553Xaaadp1apVyszMlCT5/X6dd955mjNnji677DLdfPPNKi8v16xZs7RixQp17do1dI/LL79c5557bth9J0+efMB4HnzwQRmGodtvv12FhYV64oknNHz4cC1btkxRUVGSpLlz5+qcc85Rbm6u7rnnHlksFr300ks688wz9eWXX+r444/f77odO3bUlClTJEkVFRW64YYbDnjvu+66S5deeql+97vfadeuXXr66ad16qmn6rvvvlNiYuJ+54wbN06nnHKKJOmdd97Ru+++G9Z+3XXX6eWXX9Y111yjm266SZs3b9Yzzzyj7777TvPnz5fdbj/g53A4SktLQ2PbWyAQ0Pnnn6+vvvpK48aNU+/evbV8+XI9/vjjWrdund57771DXrukpETnnnuuLr30Ul1++eV68803dcMNN8jhcOi3v/1tWN8HHnhADodDf/zjH1VbW9tgCZdZs2bpvPPOU/v27XXzzTcrIyNDq1ev1kcffaSbb75ZkrRy5UqddNJJ6tChg+644w7FxMTozTff1OjRo/Xf//5Xv/zlLw//gwIAAMDRZQIAAAAt2EsvvWRKMmfPnm3u2rXL3Lp1q/n666+bKSkpZlRUlLlt2zbTNE2zpqbG9Pv9Yedu3rzZdDqd5v333x869uKLL5qSzMcee2y/ewUCgdB5ksxHHnlkvz59+vQxTzvttND+Z599ZkoyO3ToYLrd7tDxN99805RkPvnkk6Frd+/e3Rw5cmToPqZpmlVVVWZOTo551lln7XevE0880ezbt29of9euXaYk85577gkd27Jli2m1Ws0HH3ww7Nzly5ebNpttv+Pr1683JZmvvPJK6Ng999xj7v1fhy+//NKUZE6fPj3s3JkzZ+53vFOnTuaoUaP2i338+PHmvv8d2Tf22267zUxLSzNzc3PDPtN///vfpsViMb/88suw86dNm2ZKMufPn7/f/fZ22mmnmZLMRx99NHSstrbWHDBggJmWlmZ6PB7TNPf87Lp06WJWVVWFXaO+7bPPPjNN0zR9Pp+Zk5NjdurUySwpKQnru/fPc9iwYWa/fv3MmpqasPYTTzzR7N69+0HjBgAAQGRQzgUAAACtwvDhw9WuXTtlZWXpsssuU2xsrN5991116NBBkuR0OmWxBP/56/f7tXv3bsXGxqpnz55aunRp6Dr//e9/lZqaqhtvvHG/e+xbfuRwXHXVVYqLiwvtX3zxxWrfvr1mzJghSVq2bJnWr1+vX//619q9e7eKiopUVFSkyspKDRs2TPPmzVMgEAi7Zk1NzSHrcr/zzjsKBAK69NJLQ9csKipSRkaGunfvrs8++yysv8fjkRT8vBry1ltvKSEhQWeddVbYNXNzcxUbG7vfNb1eb1i/oqIi1dTUHDTu7du36+mnn9Zdd92l2NjY/e7fu3dv9erVK+ya9SV89r3/gdhsNl133XWhfYfDoeuuu06FhYVasmRJWN+rr7469NsCDfnuu++0efNmTZw4cb+Z/fV/boqLizV37lxdeumlKi8vD8W9e/dujRw5UuvXr9f27dsPGTsAAACaFuVcAAAA0CpMnTpVPXr0kM1mU3p6unr27BlKmkvBEiBPPvmknn32WW3evFl+vz/UVl/yRQqWgenZs6dstsb9p3L37t3D9g3DULdu3bRlyxZJ0vr16yUFE7YNKSsrU1JSUmi/qKhov+vua/369TJNs8F++5ZdKS0tlaT9Etf7XrOsrExpaWkHbC8sLAzb//TTT9WuXbuDxrmve+65R5mZmbruuuv09ttv73f/1atXN3jNfe9/IJmZmYqJiQk71qNHD0nBuvAnnHBC6HhOTs4hr1dfPqhv374N9tmwYYNM09Rdd92lu+66q8HY67/4AQAAQPNAEh0AAACtwvHHH6/Bgwc32P6Xv/xFd911l37729/qgQceUHJysiwWiyZOnLjfDO9IqI/hkUce0YABAw7YZ+/Etsfj0c6dO3XWWWcd8rqGYeh///ufrFbrQa8pSfn5+ZKkjIyMg14zLS1N06dPP2D7vsntIUOG6M9//nPYsWeeeUbvv//+Ac9fvXq1Xn75Zb366qsHrK0eCATUr18/PfbYYwc8Pysrq8HYj8ShZqH/VPU/4z/+8Y8aOXLkAft069atUe4FAACAxkMSHQAAAG3C22+/rTPOOEP//Oc/w46XlpYqNTU1tN+1a1ctXLhQXq+3UV6OWa9+pnk90zS1YcMG9e/fP3RfSYqPj9fw4cMPeb3vv/9eXq/3oF8c1F/XNE3l5OSEZlofzKpVq2QYhnr27HnQa86ePVsnnXTST0owp6am7jemg738c/LkyRowYIB+9atfNXj/77//XsOGDTviEjs7duxQZWVl2Gz0devWSZI6d+582Ner//mtWLGiwZ9fly5dJAVn//+UnzEAAACaB2qiAwAAoE2wWq0yTTPs2FtvvbVfDeqLLrpIRUVFeuaZZ/a7xr7nH45//etfKi8vD+2//fbb2rlzp8455xxJUm5urrp27aq//e1vqqio2O/8Xbt27Re71WrVeeedd9D7XnjhhbJarbrvvvv2i980Te3evTu07/P59N///lfHH3/8Qcu5XHrppfL7/XrggQf2a/P5fKGSMEdiwYIFev/99/XXv/61wQT5pZdequ3bt+vvf//7fm3V1dWqrKw85H18Pp+ef/750L7H49Hzzz+vdu3aKTc397DjHjRokHJycvTEE0/sN/76zz0tLU2nn366nn/+ee3cuXO/a+z7MwYAAEDzwEx0AAAAtAnnnXee7r//fl1zzTU68cQTtXz5ck2fPj00O7jeVVddpX/961+aNGmSFi1
2024-10-26 15:34:50 +04:00
"text/plain": [
2024-10-27 17:55:35 +04:00
"<Figure size 1500x1000 with 3 Axes>"
2024-10-26 15:34:50 +04:00
]
},
"metadata": {},
"output_type": "display_data"
2024-10-27 17:55:35 +04:00
}
],
"source": [
"# Проверка распределения признаков\n",
"plt.figure(figsize=(15, 10))\n",
"for i, column in enumerate(['price', 'cut', 'carat'], 1):\n",
" plt.subplot(3, 1, i)\n",
" sns.histplot(df_diamond[column], bins=20, kde=True)\n",
" plt.title(f\"Распределение {column}\")\n",
"plt.tight_layout()\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Для устранения смещения применим рэсемплинг данных, либо же балансировку."
]
},
{
"cell_type": "code",
"execution_count": 880,
"metadata": {},
"outputs": [
2024-10-26 15:34:50 +04:00
{
"data": {
2024-10-27 17:55:35 +04:00
"image/png": "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
2024-10-26 15:34:50 +04:00
"text/plain": [
2024-10-27 17:55:35 +04:00
"<Figure size 1000x600 with 1 Axes>"
2024-10-26 15:34:50 +04:00
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
2024-10-27 17:55:35 +04:00
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA1sAAAJSCAYAAAA1RN95AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABtgklEQVR4nO3dd3gUVf/+8XuTkISWhABJCIQeqhQpYqjSq4CgiCIg8ADSyyMCPtKbgNK7CoiAFKm2UKUaOqGJgArSTEJLQpD0+f3BL/tlSUCIGZaE9+u69rrYmbMzn9mcDXtnzpyxGIZhCAAAAACQphzsXQAAAAAAZESELQAAAAAwAWELAAAAAExA2AIAAAAAExC2AAAAAMAEhC0AAAAAMAFhCwAAAABMQNgCAAAAABMQtgAAAADABIQtAAAAADABYQvAE1u8eLEsFov14erqqmLFiql3794KDQ21d3kAAADPBCd7FwAg/Ro9erQKFSqk6Oho7dmzR3PnztUPP/ygkydPKkuWLPYuDwAAwK4IWwBSrXHjxqpUqZIk6T//+Y9y5sypKVOmaMOGDXrrrbfsXB0AAIB9MYwQQJqpU6eOJOn8+fOSpJs3b+r9999XmTJllC1bNrm5ualx48Y6duxYstdGR0dr5MiRKlasmFxdXZUnTx61atVKv//+uyTpwoULNkMXH3y88sor1m3t2LFDFotFK1eu1IcffigfHx9lzZpVzZs316VLl5Lte//+/WrUqJHc3d2VJUsW1apVS3v37k3xGF955ZUU9z9y5MhkbZcuXaqKFSsqc+bM8vT0VNu2bVPc/6OO7X6JiYmaNm2aSpcuLVdXV3l7e6t79+66deuWTbuCBQuqWbNmyfbTu3fvZNtMqfbJkycne08lKSYmRiNGjFDRokXl4uIiPz8/ffDBB4qJiUnxvXrQ6tWrre9Hrly59M477+jKlSs2bd59990U34eiRYsmO77NmzerfPnycnV1ValSpbR27VqbbT1u/0vqL998802ymrNly6Z3333X+jxpCO2FCxesy06dOqUcOXKoWbNmio+Pf2i7xMRElS1bVhaLRYsXL37ke/XgUN1/6m9Hjx5V48aN5ebmpmzZsqlu3brat29fsu2Gh4drwIABKliwoFxcXJQvXz516NBB169ft2n3sJ/Dg/v99ddf9frrr8vT01Ourq6qVKmSNm7c+Mhjk/6vz3/yySeaOnWqChQooMyZM6tWrVo6efJksvaPu59/Or4JEyaodOnSypIlizw9PdW8eXMdOXIkxdosFovWr19vsy46Olo5cuSw1p5k5MiRj/x5pfTzfljb+/vM434+U9OHU3pcvnxZknT8+HG9++67Kly4sFxdXeXj46POnTvrxo0bybYP4NE4swUgzSQFo5w5c0qS/vjjD61fv15vvPGGChUqpNDQUM2fP1+1atXSL7/8Il9fX0lSQkKCmjVrpm3btqlt27bq16+fbt++rS1btujkyZMqUqSIdR9vvfWWmjRpYrPfoUOHpljPuHHjZLFYNHjwYIWFhWnatGmqV6+egoODlTlzZknS9u3b1bhxY1WsWFEjRoyQg4ODFi1apDp16mj37t166aWXkm03X758mjBhgiQpKipKPXr0SHHfw4YNU5s2bfSf//xH165d08yZM1WzZk0dPXpUHh4eyV7TrVs31ahRQ5K0du1arVu3zmZ99+7dtXjxYnXq1El9+/bV+fPnNWvWLB09elR79+5VpkyZUnwfnkR4eLj12O6XmJio5s2ba8+ePerWrZtKliypEydOaOrUqTp79myyL6UPSqq7cuXKmjBhgkJDQzV9+nTt3bs32fvh4uKizz//3Ob12bNnt3l+7tw5vfnmm3rvvffUsWNHLVq0SG+88YYCAwNVv359SY/f//6NS5cuqVGjRipRooRWrVolJ6eH/7f61Vdf6cSJE0+0/aShuklS6m+nTp1SjRo15Obmpg8++ECZMmXS/Pnz9corr2jnzp2qUqWK9bU1atTQ6dOn1blzZ1WoUEHXr1/Xxo0bdfnyZeXKlctmu7ly5dLUqVOtz9u3b59sv9WqVVPevHk1ZMgQZc2aVatWrVLLli21Zs0avfbaa/94fEuWLNHt27fVq1cvRUdHa/r06apTp45OnDghb2/vJ9rP4xzfpk2b1LRpUxUtWlShoaFatmyZqlWrpsDAQNWqVcumNldXVy1atEgtW7a0Llu7dq2io6Mfejxz585VtmzZrM/Pnz+v4cOHP7T9a6+9platWkmSdu/erQULFjzy/XrY5zM1HuxbkuTp6SlJ2rJli/744w916tRJPj4+OnXqlBYsWKBTp05p3759yf5oA+ARDAB4QosWLTIkGVu3bjWuXbtmXLp0yVixYoWRM2dOI3PmzMbly5cNwzCM6OhoIyEhwea158+fN1xcXIzRo0dbly1cuNCQZEyZMiXZvhITE62vk2RMnjw5WZvSpUsbtWrVsj7/6aefDElG3rx5jcjISOvyVatWGZKM6dOnW7ft7+9vNGzY0LofwzCMv//+2yhUqJBRv379ZPuqWrWq8cILL1ifX7t2zZBkjBgxwrrswoULhqOjozFu3Dib1544ccJwcnJKtvzcuXOGJOPLL7+0LhsxYoRx/6/o3bt3G5KMZcuW2bw2MDAw2fICBQoYTZs2TVZ7r169jAd/7T9Y+wcffGB4eXkZFStWtHlPv/rqK8PBwcHYvXu3zevnzZtnSDL27t2bbH9JYmNjDS8vL+OFF14w7t69a13+3XffGZKM4cOHW5d17NjRyJo160O3lXR8kow1a9ZYl0VERBh58uQxXnzxReuyx+1/Sf1l9erVyfaVNWtWo2PHjtbnSX3//Pnzxs2bN41SpUoZxYsXN65fv27zuvvbJdWSP39+o3HjxoYkY9GiRY88xqTXHzx40GZ5Sv2tZcuWhrOzs/H7779bl129etXInj27UbNmTeuy4cOHG5KMtWvXJtvf/f3fMAyjXbt2RqFChWyWPbjfunXrGmXKlDGio6NttlO1alXD39//kceX9Hm+//eFYRjG/v37DUnGgAEDnng/T3J8SaKioozixYsb/v7+1r6SVNtbb71lODk5GSEhITa1vP3228l+FyV9Xq9du2az/YMHD6b4846LizMkGaNGjbIue7DPGMbjfz5T04cf7Fv3+/vvv5Mt+/rrrw1Jxq5dux76OgDJMYwQQKrVq1dPuXPnlp+fn9q2bats2bJp3bp1yps3r6R7ZygcHO79mklISNCNGzeULVs2FS9e3Gbozpo1a5QrVy716dMn2T7+zV9QO3ToYHNG5PXXX1eePHn0ww8/SJKCg4N17tw5vf3227px44auX7+u69ev686dO6pbt6527dqlxMREm21GR0fL1dX1kftdu3atEhMT1aZNG+s2r1+/Lh8fH/n7++unn36yaR8bGyvp3vv1MKtXr5a7u7vq169vs82KFSsqW7ZsybYZFxdn0+769euP/Iu8JF25ckUzZ87UsGHDbP46n7T/kiVLqkSJEjbbTBo6+uD+73fo0CGFhYWpZ8+eNu9d06ZNVaJECX3//fePrCslvr6+NmdO3Nzc1KFDBx09elQhISGSHr//Jbl9+3ay9+xhoqOj1bx5c127dk2BgYHWs7kPM3v2bN24cUMjRox44mN9lISEBG3evFktW7ZU4cKFrcvz5Mmjt99+W3v27FFkZKSke5+zcuXKpXjG6cHPWWxs7CP7482bN7V9+3a1adPG5n27ceOGGjZsqHPnziUbIpqSli1bWn9fSNJLL72kKlWqWD+jT7Kfxz2+W7duWbdz9+5dde3aVefOnVNwcLDNaypUqKDSpUvrq6++kiT9+eef+umnn2yG5KXW43zmH/Soz2eSJ+nDj5J05l+619evX7+ul19+WZJS/OwAeDiGEQJItdmzZ6tYsWJycnKSt7e3ihcvbv1yK90bejZ9+nTNmTNH58+fV0JCgnXd/V9Of//9dxUvXvyRQ7BSw9/f3+Z50rU/SddEnDt3TpLUsWPHh24jIiJCOXLksD6/fv16su0+6Ny5czIM46HtHhzuFx4eLkkP/QKVtM2IiAh5eXm
2024-10-26 15:34:50 +04:00
"text/plain": [
2024-10-27 17:55:35 +04:00
"<Figure size 1000x600 with 1 Axes>"
2024-10-26 15:34:50 +04:00
]
},
"metadata": {},
"output_type": "display_data"
2024-10-27 17:55:35 +04:00
}
],
"source": [
"# Балансировка данных. Визуализация до ресэмплинга\n",
"plt.figure(figsize=(10, 6))\n",
"df_diamond['cut'].value_counts().plot(kind='bar', color='blue')\n",
"plt.title('Распределение огранки до ресэмплинга')\n",
"plt.xlabel('Огранка')\n",
"plt.ylabel('Количество')\n",
"plt.xticks(rotation=45)\n",
"plt.show()\n",
"\n",
"# Пример ресэмплинга\n",
"brand_counts = df_diamond['cut'].value_counts()\n",
"min_count = brand_counts.min()\n",
"balanced_data = pd.concat([df_diamond[df_diamond['cut'] == brand].sample(min_count) for brand in brand_counts.index])\n",
"\n",
"# Визуализация после ресэмплинга\n",
"plt.figure(figsize=(10, 6))\n",
"balanced_data['cut'].value_counts().plot(kind='bar', color='green')\n",
"plt.title('Распределение огранки после ресэмплинга')\n",
"plt.xlabel('Огранка')\n",
"plt.ylabel('Количество')\n",
"plt.xticks(rotation=45)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Рэсемплинг данных позволил нам изменить размер выборки, чтобы достичь более сбалансированного распределения классов, чтобы повысить общую эффективность анализа данных. Устанили перекос (дисбаланс) данных и добились более равномерного распределения огранок."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Разбиение датасета на три части: обучающую, контрольную и тестовую выборки"
]
},
{
"cell_type": "code",
"execution_count": 881,
"metadata": {},
"outputs": [
2024-10-26 15:34:50 +04:00
{
2024-10-27 17:55:35 +04:00
"name": "stdout",
"output_type": "stream",
"text": [
"Размер обучающей выборки: 32365\n",
"Размер контрольной выборки: 10789\n",
"Размер тестовой выборки: 10789\n"
]
}
],
"source": [
"from sklearn.model_selection import train_test_split\n",
"\n",
"# Выделим признаки (все столбцы, кроме целевого, например \"price\") и целевой признак (например, \"price\")\n",
"X = df_diamond.drop(columns=[\"price\"]) # Признаки (все столбцы, кроме целевого признака 'price')\n",
"y = df_diamond[\"price\"] # Целевая переменная (price)\n",
"\n",
"# 1. Разделяем данные на обучающую (60%) и временную (40%) выборки\n",
"X_train, X_temp, y_train, y_temp = train_test_split(X, y, test_size=0.4, random_state=42)\n",
"\n",
"# 2. Разделяем временную выборку пополам на контрольную (20%) и тестовую (20%) выборки\n",
"X_val, X_test, y_val, y_test = train_test_split(X_temp, y_temp, test_size=0.5, random_state=42)\n",
"\n",
"# Выводим размеры выборок\n",
"print(f\"Размер обучающей выборки: {len(X_train)}\")\n",
"print(f\"Размер контрольной выборки: {len(X_val)}\")\n",
"print(f\"Размер тестовой выборки: {len(X_test)}\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Оценка сбалансированности выборок\n",
"\n",
"Для оценки сбалансированности выборок можно проверить распределение целевой переменной (price) в каждой из них. Мы можем построить гистограммы или использовать базовую статистику, такую как среднее значение и стандартное отклонение, чтобы убедиться, что распределение price в обучающей, валидационной и тестовой выборках примерно одинаково."
]
},
{
"cell_type": "code",
"execution_count": 882,
"metadata": {},
"outputs": [
2024-10-26 15:34:50 +04:00
{
"data": {
2024-10-27 17:55:35 +04:00
"image/png": "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
2024-10-26 15:34:50 +04:00
"text/plain": [
2024-10-27 17:55:35 +04:00
"<Figure size 1500x500 with 3 Axes>"
2024-10-26 15:34:50 +04:00
]
},
"metadata": {},
"output_type": "display_data"
},
{
2024-10-27 17:55:35 +04:00
"name": "stdout",
"output_type": "stream",
"text": [
"Статистика для обучающей выборки:\n",
"count 32365.000000\n",
"mean 3116.224471\n",
"std 2691.916703\n",
"min 327.000000\n",
"25% 954.000000\n",
"50% 2399.000000\n",
"75% 4497.000000\n",
"max 11880.000000\n",
"Name: price, dtype: float64\n",
"\n",
"Статистика для валидационной выборки:\n",
"count 10789.000000\n",
"mean 3105.240430\n",
"std 2666.332966\n",
"min 326.000000\n",
"25% 942.000000\n",
"50% 2401.000000\n",
"75% 4455.000000\n",
"max 11883.000000\n",
"Name: price, dtype: float64\n",
"\n",
"Статистика для тестовой выборки:\n",
"count 10789.000000\n",
"mean 3094.410140\n",
"std 2652.622648\n",
"min 335.000000\n",
"25% 956.000000\n",
"50% 2401.000000\n",
"75% 4455.000000\n",
"max 11883.000000\n",
"Name: price, dtype: float64\n"
]
}
],
"source": [
"# Визуализация распределения цены в каждой из выборок\n",
"plt.figure(figsize=(15, 5))\n",
"\n",
"# Распределение в обучающей выборке\n",
"plt.subplot(1, 3, 1)\n",
"sns.histplot(y_train, bins=30, kde=True, color='blue')\n",
"plt.title(\"Распределение цены в обучающей выборке\")\n",
"plt.xlabel(\"Цена\")\n",
"plt.ylabel(\"Частота\")\n",
"\n",
"# Распределение в валидационной выборке\n",
"plt.subplot(1, 3, 2)\n",
"sns.histplot(y_val, bins=30, kde=True, color='green')\n",
"plt.title(\"Распределение цены в валидационной выборке\")\n",
"plt.xlabel(\"Цена\")\n",
"plt.ylabel(\"Частота\")\n",
"\n",
"# Распределение в тестовой выборке\n",
"plt.subplot(1, 3, 3)\n",
"sns.histplot(y_test, bins=30, kde=True, color='orange')\n",
"plt.title(\"Распределение цены в тестовой выборке\")\n",
"plt.xlabel(\"Цена\")\n",
"plt.ylabel(\"Частота\")\n",
"\n",
"plt.tight_layout()\n",
"plt.show()\n",
"\n",
"# Вывод базовой статистики для каждой выборки\n",
"print(\"Статистика для обучающей выборки:\")\n",
"print(y_train.describe())\n",
"print(\"\\nС та тис тика для валидационной выборки:\")\n",
"print(y_val.describe())\n",
"print(\"\\nС та тис тика для тестовой выборки:\")\n",
"print(y_test.describe())\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"После того как мы оценили сбалансированность, можем решить, нужно ли использовать методы аугментации данных. Например, если одна из категорий в 'cut' значительно меньше других, это может потребовать применения oversampling или undersampling."
]
},
{
"cell_type": "code",
"execution_count": 886,
"metadata": {},
"outputs": [
2024-10-26 15:34:50 +04:00
{
2024-10-27 17:55:35 +04:00
"name": "stdout",
"output_type": "stream",
"text": [
"Размер обучающей выборки: 32365\n",
"Размер валидационной выборки: 10789\n",
"Размер тестовой выборки: 10789\n",
"Unnamed: 0 int64\n",
"carat float64\n",
"cut float64\n",
"color float64\n",
"clarity float64\n",
"x float64\n",
"y float64\n",
"z float64\n",
"dtype: object\n"
]
2024-10-26 15:34:50 +04:00
},
{
"data": {
2024-10-27 17:55:35 +04:00
"image/png": "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
2024-10-26 15:34:50 +04:00
"text/plain": [
2024-10-27 17:55:35 +04:00
"<Figure size 1000x600 with 1 Axes>"
2024-10-26 15:34:50 +04:00
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
2024-10-27 17:55:35 +04:00
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA1sAAAIjCAYAAAD1OgEdAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAACHs0lEQVR4nO3dd3hT5fvH8U/a0hYobVltqRQEUfZGobKHVMSB4ED5CjJFQQUUFAcgqCggQ0AQkaGAA7eC7KUyZYmgCMoSaAGhLbOF9vz+eH5JCS2jpenpeL+uK1dPkicnd5Ke5NzPdFiWZQkAAAAAkKm87A4AAAAAAHIjki0AAAAA8ACSLQAAAADwAJItAAAAAPAAki0AAAAA8ACSLQAAAADwAJItAAAAAPAAki0AAAAA8ACSLQAAAADwAJItAACAbODxxx/XjTfeaHcY2cKKFSvkcDi0YsUK1228P8iJSLYAD5kxY4YcDofr4u/vr1tuuUW9e/dWTEyM3eEBAADAw3zsDgDI7YYOHaoyZcro3Llz+vnnnzVp0iTNnz9fv//+uwoUKGB3eAAA5AgffPCBkpOT7Q4DSBeSLcDDWrVqpTp16kiSunXrpqJFi2r06NH69ttv9cgjj9gcHQAgN7IsS+fOnVP+/PntDiXT5MuXz+4QgHSjGyGQxZo1ayZJ2rNnjyTp+PHjev7551W1alUFBAQoMDBQrVq10tatW1M99ty5cxoyZIhuueUW+fv7q0SJEmrbtq3+/vtvSdLevXvdui5eemnSpIlrX87+8J999pleeuklhYWFqWDBgrr33nt14MCBVM+9bt063XnnnQoKClKBAgXUuHFj/fLLL2m+xiZNmqT5/EOGDElVdtasWapdu7by58+vIkWKqH379mk+/5Ve28WSk5M1duxYVa5cWf7+/goNDdUTTzyhEydOuJW78cYbdffdd6d6nt69e6faZ1qxjxw5MtV7KkkJCQkaPHiwypUrJz8/P0VERGjAgAFKSEhI8726WJMmTVSlSpVUt48aNUoOh0N79+51uz02NlZ9+vRRRESE/Pz8VK5cOb399ttp1vwOGTIkzffu8ccfdyt38OBBdenSRaGhofLz81PlypU1bdo0tzLO/x3nxc/PT7fccouGDx8uy7Lcym7evFmtWrVSYGCgAgIC1Lx5c61du9atzKVdbi++/Pvvv65yy5YtU8OGDVWwYEEFBwfrvvvu0x9//HHV9/XSeK/0HjhjWbVqlZ544gkVLVpUgYGB6tixY5r/Q5e+f3PnzpXD4XAbV7Jz5041a9ZMYWFhrv+Jnj176vjx46li/OKLL1LFHxAQ4PY81/qdkdaYl0OHDunGG29UnTp1dOrUKUlSYmKiBg0apNq1aysoKEgFCxZUw4YNtXz58qu+t8734Urv78UuXLigYcOG6aabbpKfn59uvPFGvfTSS2keHz/++KMaN26sQoUKKTAwULfeeqvmzJnjViazvxfS0qRJk1THuZR6/JAzllGjRmnKlCmu13jrrbdqw4YNqR7/zTffqEqVKvL391eVKlX09ddfp/n86f1OW7hwoerUqaP8+fPr/ffflyQtXrxYDRo0UHBwsAICAlS+fHm99NJLrsde6//Axa9x4sSJKlu2rAoUKKCWLVvqwIEDsixLw4YNU8mSJZU/f37dd999bv/nF8e5aNEi1ahRQ/7+/qpUqZK++uqrK34OmfGez507V5UqVXJ7zxkHBk+jZQvIYs7EqGjRopKkf/75R998840efPBBlSlTRjExMXr//ffVuHFj7dixQ+Hh4ZKkpKQk3X333Vq6dKnat2+vZ599VidPntTixYv1+++/66abbnI9xyOPPKK77rrL7XkHDhyYZjxvvPGGHA6HXnjhBR05ckRjx45VixYttGXLFleN6LJly9SqVSvVrl1bgwcPlpeXl6ZPn65mzZrpp59+0m233ZZqvyVLltTw4cMlSadOndKTTz6Z5nO/+uqreuihh9StWzcdPXpU48ePV6NGjbR582YFBwenekyPHj3UsGFDSdJXX32V6gTliSee0IwZM9S5c2c988wz2rNnjyZMmKDNmzfrl19+yZSa0djYWNdru1hycrLuvfde/fzzz+rRo4cqVqyobdu2acyYMfrrr7/0zTffXPdzO505c0aNGzfWwYMH9cQTT6hUqVJavXq1Bg4cqMOHD2vs2LFpPu7jjz92bfft29ftvpiYGNWrV08Oh0O9e/dW8eLF9eOPP6pr166Kj49Xnz593Mq/9NJLqlixos6ePetK2kNCQtS1a1dJ0vbt29WwYUMFBgZqwIABypcvn95//301adJEK1euVN26dd325+xye7EiRYpIkpYsWaJWrVqpbNmyGjJkiM6ePavx48erfv362rRp0zWdLD3zzDO69dZb3W7r1q1bmmV79+6t4OBgDRkyRDt37tSkSZO0b98+VwKTlgsXLujll19Odfvp06dVsmRJ3XPPPQoMDNTvv/+uiRMn6uDBg/r++++vGvelrvU741JxcXFq1aqV8uXLp/nz5ysgIECSFB8fr6lTp+qRRx5R9+7ddfLkSX344YeKiorS+vXrVaNGjavGVKNGDT333HNut3300UdavHix223dunXTzJkz9cADD+i5557TunXrNHz4cP3xxx9ux/KMGTPUpUsXVa5cWQMHDlRwcLA2b96sBQsW6NFHH031/Nnhe8Fpzpw5OnnypJ544gk5HA6NGDFCbdu21T///ON6nkWLFqldu3aqVKmShg8frv/++0+dO3dWyZIlU+0vPbHv3LlTjzzyiJ544gl1795d5cuX1/bt23X33XerWrVqGjp0qPz8/LR79263yrL0/g/Mnj1biYmJevrpp3X8+HGNGDFCDz30kJo1a6YVK1bohRde0O7duzV+/Hg9//zzqSpsdu3apYcfflg9e/ZUp06dNH36dD344INasGCB7rjjDo+85/PmzdPDDz+sqlWravjw4Tpx4oS6du2qG264Id3PB6SLBcAjpk+fbkmylixZYh09etQ6cOCA9emnn1pFixa18ufPb/3777+WZVnWuXPnrKSkJLfH7tmzx/Lz87OGDh3qum3atGmWJGv06NGpnis5Odn1OEnWyJEjU5WpXLmy1bhxY9f15cuXW5KsG264wYqPj3fd/vnnn1uSrHHjxrn2ffPNN1tRUVGu57Esyzpz5oxVpkwZ64477kj1XLfffrtVpUoV1/WjR49akqzBgwe7btu7d6/l7e1tvfHGG26P3bZtm+Xj45Pq9l27dlmSrJkzZ7puGzx4sHXx19hPP/1kSbJmz57t9tgFCxakur106dJW69atU8Xeq1cv69KvxktjHzBggBUSEmLVrl3b7T39+OOPLS8vL+unn35ye/zkyZMtSdYvv/yS6vku1rhxY6ty5cqpbh85cqQlydqzZ4/rtmHDhlkFCxa0/vrrL7eyL774ouXt7W3t37/f7faXX37ZcjgcbreVLl3a6tSpk+t6165drRIlSljHjh1zK9e+fXsrKCjIOnPmjGVZKf87y5cvd5U5d+6c5eXlZT311FOu29q0aWP5+vpaf//9t+u2Q4cOWYUKFbIaNWrkus15rGzYsOEy74xl1ahRwwoJCbH+++8/121bt261vLy8rI4dO172cRfHO3fu3FT3FSxY0O09cMZSu3ZtKzEx0XX7iBEjLEnWt99+67rt0vfvvffes/z8/KymTZtapUuXvmJMTz31lBUQEJChGK/1O+Piz+ncuXNWkyZNrJCQEGv37t1uj71w4YKVkJDgdtuJEyes0NBQq0uXLld8HZZ17cfSli1bLElWt27d3Mo9//zzliRr2bJllmVZVmxsrFWoUCGrbt261tmzZ93KXvwdZFmZ/72QlsaNG7sd506dOnVy+5yd379Fixa1jh8/7rr922+/tSRZ33//veu2GjVqWCVKlLBiY2Ndty1atMiS5LbP9H6nSbIWLFjgVnbMmDGWJOvo0aOXfY3X+j/gfI3Fixd3i33gwIGWJKt69erW+fPnXbc/8sgjlq+vr3Xu3LlUcX755Zeu2+Li4qwSJUpYNWvWdN2W1vfM9bznVatWtUq
2024-10-26 15:34:50 +04:00
"text/plain": [
2024-10-27 17:55:35 +04:00
"<Figure size 1000x600 with 1 Axes>"
2024-10-26 15:34:50 +04:00
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
2024-10-27 17:55:35 +04:00
"Количество записей в обучающей выборке до аугментации: 32365\n",
"Количество записей в обучающей выборке после oversampling: 32440\n",
"Количество записей в обучающей выборке после undersampling: 32308\n"
2024-10-26 15:34:50 +04:00
]
}
],
"source": [
2024-10-27 17:55:35 +04:00
"from imblearn.over_sampling import RandomOverSampler\n",
"from imblearn.under_sampling import RandomUnderSampler\n",
2024-10-26 15:34:50 +04:00
"\n",
2024-10-27 17:55:35 +04:00
"# Разделение признаков и целевой переменной\n",
"X = df_diamond.drop(columns=['price']) # Признаки\n",
"y = df_diamond['price'] # Целевая переменная (для регрессии)\n",
2024-10-26 15:34:50 +04:00
"\n",
2024-10-27 17:55:35 +04:00
"# Разбиение данных на обучающую, контрольную и тестовую выборки\n",
"X_train, X_temp, y_train, y_temp = train_test_split(X, y, test_size=0.4, random_state=42)\n",
"X_val, X_test, y_val, y_test = train_test_split(X_temp, y_temp, test_size=0.5, random_state=42)\n",
"\n",
"print(f\"Размер обучающей выборки: {len(X_train)}\")\n",
"print(f\"Размер валидационной выборки: {len(X_val)}\")\n",
"print(f\"Размер тестовой выборки: {len(X_test)}\")\n",
2024-10-26 15:34:50 +04:00
"\n",
2024-10-27 17:55:35 +04:00
"# В с е типы к числовым приводим\n",
"X_train = X_train.apply(pd.to_numeric, errors='coerce')\n",
"print(X_train.dtypes)\n",
2024-10-26 15:34:50 +04:00
"\n",
2024-10-27 17:55:35 +04:00
"# Квантилизация целевой переменной для создания категорий\n",
"y_train_cat = pd.qcut(y_train, q=4, labels=False)\n",
2024-10-26 15:34:50 +04:00
"\n",
2024-10-27 17:55:35 +04:00
"# Объединяем исходные данные и \"шумные\" данные для увеличения обучающей выборки\n",
"X_train_combined = np.vstack([X_train, X_train])\n",
"y_train_combined = np.hstack([y_train, y_train]) # Убедитесь, что y_train повторяется для новых данных\n",
2024-10-26 15:34:50 +04:00
"\n",
2024-10-27 17:55:35 +04:00
"# Применение oversampling и undersampling\n",
"ros = RandomOverSampler(random_state=42)\n",
"X_train_ros, y_train_ros = ros.fit_resample(X_train, y_train_cat)\n",
2024-10-26 15:34:50 +04:00
"\n",
2024-10-27 17:55:35 +04:00
"# Проверка распределения после oversampling\n",
"plt.figure(figsize=(10, 6))\n",
"sns.histplot(y_train_ros, bins=30, kde=True, color='green')\n",
"plt.title('Распределение целевого признака после oversampling')\n",
"plt.xlabel('price')\n",
"plt.ylabel('Частота')\n",
"plt.show()\n",
"\n",
"# Применение RandomUnderSampler\n",
"rus = RandomUnderSampler(random_state=42)\n",
"X_train_rus, y_train_rus = rus.fit_resample(X_train, y_train_cat)\n",
2024-10-26 15:34:50 +04:00
"\n",
2024-10-27 17:55:35 +04:00
"# Проверка распределения после undersampling\n",
"plt.figure(figsize=(10, 6))\n",
"sns.histplot(y_train_rus, bins=30, kde=True, color='red')\n",
"plt.title('Распределение целевого признака после undersampling')\n",
"plt.xlabel('price')\n",
"plt.ylabel('Частота')\n",
"plt.show()\n",
"\n",
"# Вывод количества данных до и после аугментации\n",
"print(f\"Количество записей в обучающей выборке до аугментации: {len(y_train)}\")\n",
"print(f\"Количество записей в обучающей выборке после oversampling: {len(y_train_ros)}\")\n",
"print(f\"Количество записей в обучающей выборке после undersampling: {len(y_train_rus)}\")"
2024-10-26 15:34:50 +04:00
]
},
{
2024-10-27 17:55:35 +04:00
"cell_type": "markdown",
"metadata": {},
"source": [
"Н а б о р данных, судя по числам, был относительно сбалансирован, и применение oversampling/undersampling не сильно изменил размер выборок. Использование RandomOverSampler и RandomUnderSampler для регрессионных задач не является оптимальным решением, поскольку эти методы предназначены для классификации."
]
},
{
"cell_type": "markdown",
2024-10-26 15:34:50 +04:00
"metadata": {},
"source": [
2024-10-27 17:55:35 +04:00
"Таким образом, мы проанализировали 3 датасета. Посмотрели какие проблемы с ними могут быть связаны, возможные пути их решения. \n",
"Разбили выборки, далее их сбалансировали, с помощью методов OverSampling и UnderSampling. Методы oversampling и undersampling лучше использовать для задач классификации, где целевая переменная — дискретные классы. Для регрессионных задач эти методы напрямую не применимы. Методы аугментации данных для регрессии, такие как SMOTE для регрессии, могут также помочь в увеличении количества обучающих данных и улучшении качества модели."
2024-10-26 15:34:50 +04:00
]
2024-09-28 14:49:26 +04:00
}
],
"metadata": {
"kernelspec": {
2024-10-26 15:34:50 +04:00
"display_name": "aimvenv",
2024-09-28 14:49:26 +04:00
"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.12.6"
}
},
"nbformat": 4,
"nbformat_minor": 2
}