1617 lines
713 KiB
Plaintext
1617 lines
713 KiB
Plaintext
|
{
|
|||
|
"cells": [
|
|||
|
{
|
|||
|
"cell_type": "markdown",
|
|||
|
"metadata": {},
|
|||
|
"source": [
|
|||
|
"## Car Price Prediction Challenge\n",
|
|||
|
"https://www.kaggle.com/datasets/deepcontractor/car-price-prediction-challenge"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 60,
|
|||
|
"metadata": {},
|
|||
|
"outputs": [
|
|||
|
{
|
|||
|
"name": "stdout",
|
|||
|
"output_type": "stream",
|
|||
|
"text": [
|
|||
|
"Index(['ID', 'Price', 'Levy', 'Manufacturer', 'Model', 'Prod. year',\n",
|
|||
|
" 'Category', 'Leather interior', 'Fuel type', 'Engine volume', 'Mileage',\n",
|
|||
|
" 'Cylinders', 'Gear box type', 'Drive wheels', 'Doors', 'Wheel', 'Color',\n",
|
|||
|
" 'Airbags'],\n",
|
|||
|
" dtype='object')\n"
|
|||
|
]
|
|||
|
}
|
|||
|
],
|
|||
|
"source": [
|
|||
|
"import pandas as pd\n",
|
|||
|
"import matplotlib.pyplot as plt\n",
|
|||
|
"from sklearn.model_selection import train_test_split\n",
|
|||
|
"import seaborn as sns\n",
|
|||
|
"import numpy as np\n",
|
|||
|
"df = pd.read_csv(\".//static//csv//car_price_prediction.csv\")\n",
|
|||
|
"print(df.columns)"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "markdown",
|
|||
|
"metadata": {},
|
|||
|
"source": [
|
|||
|
"Автомобильный рынок представляет собой динамичную среду, где цены, спрос и предложение автомобилей постоянно меняются в зависимости от множества факторов, таких как возраст автомобиля, пробег, техническое состояние, марка, модель и другие характеристики. Основная проблема заключается в том, как эффективно анализировать и использовать эти данные для принятия бизнес-решений, таких как оценка стоимости подержанных автомобилей, прогнозирование спроса на определенные модели и типы автомобилей, а также определение факторов, наиболее влияющих на ценность автомобиля."
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 56,
|
|||
|
"metadata": {},
|
|||
|
"outputs": [
|
|||
|
{
|
|||
|
"name": "stdout",
|
|||
|
"output_type": "stream",
|
|||
|
"text": [
|
|||
|
"<bound method DataFrame.info of ID Price Levy Manufacturer Model Prod. year Category \\\n",
|
|||
|
"0 45654403 13328 1399 LEXUS RX 450 2010 Jeep \n",
|
|||
|
"1 44731507 16621 1018 CHEVROLET Equinox 2011 Jeep \n",
|
|||
|
"2 45774419 8467 - HONDA FIT 2006 Hatchback \n",
|
|||
|
"3 45769185 3607 862 FORD Escape 2011 Jeep \n",
|
|||
|
"4 45809263 11726 446 HONDA FIT 2014 Hatchback \n",
|
|||
|
"... ... ... ... ... ... ... ... \n",
|
|||
|
"19232 45798355 8467 - MERCEDES-BENZ CLK 200 1999 Coupe \n",
|
|||
|
"19233 45778856 15681 831 HYUNDAI Sonata 2011 Sedan \n",
|
|||
|
"19234 45804997 26108 836 HYUNDAI Tucson 2010 Jeep \n",
|
|||
|
"19235 45793526 5331 1288 CHEVROLET Captiva 2007 Jeep \n",
|
|||
|
"19236 45813273 470 753 HYUNDAI Sonata 2012 Sedan \n",
|
|||
|
"\n",
|
|||
|
" Leather interior Fuel type Engine volume Mileage Cylinders \\\n",
|
|||
|
"0 Yes Hybrid 3.5 186005 km 6.0 \n",
|
|||
|
"1 No Petrol 3 192000 km 6.0 \n",
|
|||
|
"2 No Petrol 1.3 200000 km 4.0 \n",
|
|||
|
"3 Yes Hybrid 2.5 168966 km 4.0 \n",
|
|||
|
"4 Yes Petrol 1.3 91901 km 4.0 \n",
|
|||
|
"... ... ... ... ... ... \n",
|
|||
|
"19232 Yes CNG 2.0 Turbo 300000 km 4.0 \n",
|
|||
|
"19233 Yes Petrol 2.4 161600 km 4.0 \n",
|
|||
|
"19234 Yes Diesel 2 116365 km 4.0 \n",
|
|||
|
"19235 Yes Diesel 2 51258 km 4.0 \n",
|
|||
|
"19236 Yes Hybrid 2.4 186923 km 4.0 \n",
|
|||
|
"\n",
|
|||
|
" Gear box type Drive wheels Doors Wheel Color Airbags \n",
|
|||
|
"0 Automatic 4x4 04-May Left wheel Silver 12 \n",
|
|||
|
"1 Tiptronic 4x4 04-May Left wheel Black 8 \n",
|
|||
|
"2 Variator Front 04-May Right-hand drive Black 2 \n",
|
|||
|
"3 Automatic 4x4 04-May Left wheel White 0 \n",
|
|||
|
"4 Automatic Front 04-May Left wheel Silver 4 \n",
|
|||
|
"... ... ... ... ... ... ... \n",
|
|||
|
"19232 Manual Rear 02-Mar Left wheel Silver 5 \n",
|
|||
|
"19233 Tiptronic Front 04-May Left wheel Red 8 \n",
|
|||
|
"19234 Automatic Front 04-May Left wheel Grey 4 \n",
|
|||
|
"19235 Automatic Front 04-May Left wheel Black 4 \n",
|
|||
|
"19236 Automatic Front 04-May Left wheel White 12 \n",
|
|||
|
"\n",
|
|||
|
"[19237 rows x 18 columns]> \n",
|
|||
|
"\n"
|
|||
|
]
|
|||
|
}
|
|||
|
],
|
|||
|
"source": [
|
|||
|
"print(df.info, \"\\n\")"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "markdown",
|
|||
|
"metadata": {},
|
|||
|
"source": [
|
|||
|
"**Объектами наблюдения** являются автомобили, каждый из которых описывается определенным набором характеристик (атрибутов). Атрибуты включают как *количественные* данные (например, цена, объем двигателя), так и *качественные* (например, цвет, тип топлива, марка).\n",
|
|||
|
"\n",
|
|||
|
"**Анализ сведений о каждом наборе данных**: В данном случае каждый набор данных — это информация об отдельных автомобилях. Здесь присутствуют атрибуты такие как: идентификатор (ID), цена, марка, модель, год выпуска, объем двигателя, тип коробки передач, тип топлива, пробег, цилиндры, тип коробки передач, ведущие колеса, двери, колеса, цвет, подушки безопасности.\n",
|
|||
|
"\n"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 61,
|
|||
|
"metadata": {},
|
|||
|
"outputs": [
|
|||
|
{
|
|||
|
"data": {
|
|||
|
"image/png": "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
|
|||
|
"text/plain": [
|
|||
|
"<Figure size 800x600 with 1 Axes>"
|
|||
|
]
|
|||
|
},
|
|||
|
"metadata": {},
|
|||
|
"output_type": "display_data"
|
|||
|
}
|
|||
|
],
|
|||
|
"source": [
|
|||
|
"\n",
|
|||
|
"mean_price_per_year = df.groupby('Prod. year')['Price'].mean()\n",
|
|||
|
"plt.figure(figsize=(8, 6))\n",
|
|||
|
"mean_price_per_year.plot(kind='line', marker='o', color='blue')\n",
|
|||
|
"plt.title('Зависимость средней цены от года выпуска автомобиля')\n",
|
|||
|
"plt.xlabel('Год выпуска')\n",
|
|||
|
"plt.ylabel('Средняя цена ($)')\n",
|
|||
|
"plt.grid(True)\n",
|
|||
|
"plt.show()"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "markdown",
|
|||
|
"metadata": {},
|
|||
|
"source": [
|
|||
|
"**Связь между средней ценой автомобиля и годом:** \n",
|
|||
|
"Этот график полезен для анализа динамики цен на автомобили в зависимости от года выпуска и выявления тенденций на рынке.\n",
|
|||
|
"\n",
|
|||
|
"Из графика следует что автомобили растут в цене по мере увеличения года, за исключением некоторых автомобилей, которые повышают свою цену до невероятных значений."
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "markdown",
|
|||
|
"metadata": {},
|
|||
|
"source": [
|
|||
|
"**Пример бизнес-целей:**\n",
|
|||
|
"\n",
|
|||
|
"1. Ценообразование автомобилей\n",
|
|||
|
"\n",
|
|||
|
"Цель: Создать модель, которая точно предсказывает рыночную стоимость автомобиля на основе ограниченного набора характеристик: года выпуска, пробега и объема двигателя.\n",
|
|||
|
"\n",
|
|||
|
"Эффекты для бизнеса: Увеличение доходов за счет точного определения рыночной стоимости, минимизация убытков от недооценки или переоценки автомобилей.\n",
|
|||
|
"\n",
|
|||
|
"Вход:\n",
|
|||
|
"\n",
|
|||
|
"* Год выпуска\n",
|
|||
|
"* Пробег\n",
|
|||
|
"* Объем двигателя\n",
|
|||
|
"\n",
|
|||
|
"Целевой признак: Цена автомобиля.\n",
|
|||
|
"\n",
|
|||
|
"2. Анализ спроса и предложения\n",
|
|||
|
"\n",
|
|||
|
"Цель: Провести анализ спроса на автомобили по моделям, годам выпуска и регионам для лучшего планирования ассортимента и распределения ресурсов.\n",
|
|||
|
"\n",
|
|||
|
"Эффекты для бизнеса: Оптимизация ассортимента и планирования закупок, снижение издержек на хранение нераспроданных автомобилей.\n",
|
|||
|
"\n",
|
|||
|
"Вход:\n",
|
|||
|
"\n",
|
|||
|
"* Модель автомобиля\n",
|
|||
|
"* Год выпуска\n",
|
|||
|
"* Регион продажи\n",
|
|||
|
"\n",
|
|||
|
"Целевой признак: Количество проданных автомобилей (спрос) или количество доступных автомобилей (предложение).\n",
|
|||
|
"\n",
|
|||
|
"3. Оценка состояния подержанных автомобилей\n",
|
|||
|
"\n",
|
|||
|
"Цель: Разработать модель для оценки состояния автомобиля на основе пробега и года выпуска, которая поможет при установлении рыночной стоимости подержанных автомобилей.\n",
|
|||
|
"\n",
|
|||
|
"Эффекты для бизнеса: Ускорение процессов оценки подержанных автомобилей, повышение доверия клиентов к оценке автомобилей.\n",
|
|||
|
"\n",
|
|||
|
"Вход:\n",
|
|||
|
"\n",
|
|||
|
"* Пробег\n",
|
|||
|
"* Возраст автомобиля (год выпуска)\n",
|
|||
|
"\n",
|
|||
|
"Целевой признак: Оценка технического состояния автомобиля."
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "markdown",
|
|||
|
"metadata": {},
|
|||
|
"source": [
|
|||
|
"**Опредиление проблем данных с помощью кода:**"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 63,
|
|||
|
"metadata": {},
|
|||
|
"outputs": [
|
|||
|
{
|
|||
|
"name": "stdout",
|
|||
|
"output_type": "stream",
|
|||
|
"text": [
|
|||
|
"Максимальные значения:\n",
|
|||
|
" ID 45816654\n",
|
|||
|
"Price 26307500\n",
|
|||
|
"Levy 11714\n",
|
|||
|
"Manufacturer სხვა\n",
|
|||
|
"Model xD\n",
|
|||
|
"Prod. year 2020\n",
|
|||
|
"Category Universal\n",
|
|||
|
"Leather interior Yes\n",
|
|||
|
"Fuel type Plug-in Hybrid\n",
|
|||
|
"Engine volume 20.0\n",
|
|||
|
"Mileage 2147483647.0\n",
|
|||
|
"Cylinders 16.0\n",
|
|||
|
"Gear box type Variator\n",
|
|||
|
"Drive wheels Rear\n",
|
|||
|
"Doors >5\n",
|
|||
|
"Wheel Right-hand drive\n",
|
|||
|
"Color Yellow\n",
|
|||
|
"Airbags 16\n",
|
|||
|
"dtype: object \n",
|
|||
|
"\n",
|
|||
|
"Признаки с нулевыми значениями:\n",
|
|||
|
" Index(['Levy', 'Engine volume', 'Mileage', 'Airbags'], dtype='object') \n",
|
|||
|
"\n",
|
|||
|
"Признаки с низкой дисперсией:\n",
|
|||
|
" Series([], dtype: float64) \n",
|
|||
|
"\n",
|
|||
|
"Год производства:\n",
|
|||
|
" 0 2010\n",
|
|||
|
"1 2011\n",
|
|||
|
"2 2006\n",
|
|||
|
"3 2011\n",
|
|||
|
"4 2014\n",
|
|||
|
" ... \n",
|
|||
|
"19232 1999\n",
|
|||
|
"19233 2011\n",
|
|||
|
"19234 2010\n",
|
|||
|
"19235 2007\n",
|
|||
|
"19236 2012\n",
|
|||
|
"Name: Prod. year, Length: 19237, dtype: int64\n"
|
|||
|
]
|
|||
|
}
|
|||
|
],
|
|||
|
"source": [
|
|||
|
"numeric_columns = ['Price', 'Levy', 'Engine volume', 'Mileage', 'Cylinders', 'Airbags']\n",
|
|||
|
"\n",
|
|||
|
"df[numeric_columns] = df[numeric_columns].replace(\"-\", np.nan)\n",
|
|||
|
"\n",
|
|||
|
"df[numeric_columns] = df[numeric_columns].apply(pd.to_numeric, errors='coerce')\n",
|
|||
|
"\n",
|
|||
|
"max_value = df.max(axis=0)\n",
|
|||
|
"\n",
|
|||
|
"columns_with_zero = df.columns[(df == 0).any()]\n",
|
|||
|
"\n",
|
|||
|
"numeric_data = df.select_dtypes(include='number')\n",
|
|||
|
"\n",
|
|||
|
"shum = numeric_data.var()\n",
|
|||
|
"\n",
|
|||
|
"low_dispers = 0.1\n",
|
|||
|
"low_var_columns = shum[shum < low_dispers]\n",
|
|||
|
"\n",
|
|||
|
"year = df['Prod. year']\n",
|
|||
|
"\n",
|
|||
|
"print(\"Максимальные значения:\\n\", max_value, \"\\n\")\n",
|
|||
|
"print(\"Признаки с нулевыми значениями:\\n\", columns_with_zero, \"\\n\")\n",
|
|||
|
"print(\"Признаки с низкой дисперсией:\\n\", low_var_columns, \"\\n\")\n",
|
|||
|
"print(\"Год производства:\\n\", year)"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "markdown",
|
|||
|
"metadata": {},
|
|||
|
"source": [
|
|||
|
"1. Признаки, содержащие нулевые значения: 'Engine volume' и 'Airbags'. Наличие нулевых значений может создать смещение при анализе, если учитывать такие автомобили.\n",
|
|||
|
"2. Признаки 'Price', 'Engine volume', и 'Cylinders' могут иметь аномально высокие значения, что указывает на наличие выбросов.\n",
|
|||
|
"3. Признаки с низкой дисперсией, такие как Leather interior, Fuel type, Drive wheels, могут иметь слишком малую вариативность, что снижает их значимость для анализа.\n",
|
|||
|
"4. Признак Prod. year варьируется от 1900 до 2020, что делает его полезным для анализа возрастных характеристик автомобилей. Однако автомобили более старого возраста могут быть редкими в выборке, что может повлиять на выводы относительно корреляции между годом выпуска и ценой."
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "markdown",
|
|||
|
"metadata": {},
|
|||
|
"source": [
|
|||
|
"**Примеры решения обнаруженных проблем для каждого набора данных:**"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "markdown",
|
|||
|
"metadata": {},
|
|||
|
"source": [
|
|||
|
"1. Нулевые значения: удаление строк с нулями если нулевые значения редки и их удаление не повлияет на анализ.\n",
|
|||
|
"2. Аномально высокие значения: можно ограничить выбросы, заменив их на определенные пороговые значения. Это позволит избежать влияния аномально высоких значений на анализ.\n",
|
|||
|
"3. Низкая дисперсия признаков: если признаки имеют низкую вариативность, можно преобразовать их в бинарные переменные. Это сделает признаки более значимыми для моделей.\n",
|
|||
|
"4. Устаревшие данные: можно отфильтровать автомобили по годам выпуска, чтобы учесть только актуальные модели."
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "markdown",
|
|||
|
"metadata": {},
|
|||
|
"source": [
|
|||
|
"**Оценить качество каждого набора данных:** "
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "markdown",
|
|||
|
"metadata": {},
|
|||
|
"source": [
|
|||
|
"1. Информативность: Набор данных предоставляет достаточную информацию для анализа характиристик машины.\n",
|
|||
|
"2. Степень покрытия: Включает данные только о автомобилях одного региона, что ограничивает возможности обобщения результатов на другие регионы.\n",
|
|||
|
"3. Соответствие реальным данным: Данные в целом соответствуют реальным значениям, но встречаются редкие выбросы.\n",
|
|||
|
"4. Согласованность меток: Метки, такие как тип топлива и категория автомобиля, имеют четкие и согласованные значения, что способствует правильному анализу данных."
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "markdown",
|
|||
|
"metadata": {},
|
|||
|
"source": [
|
|||
|
"**Устранить проблему пропущенных данных. Для каждого набора данных:**"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 62,
|
|||
|
"metadata": {},
|
|||
|
"outputs": [
|
|||
|
{
|
|||
|
"name": "stdout",
|
|||
|
"output_type": "stream",
|
|||
|
"text": [
|
|||
|
"Пропущенные значения до обработки:\n",
|
|||
|
"ID 0\n",
|
|||
|
"Price 0\n",
|
|||
|
"Levy 5819\n",
|
|||
|
"Manufacturer 0\n",
|
|||
|
"Model 0\n",
|
|||
|
"Prod. year 0\n",
|
|||
|
"Category 0\n",
|
|||
|
"Leather interior 0\n",
|
|||
|
"Fuel type 0\n",
|
|||
|
"Engine volume 0\n",
|
|||
|
"Mileage 0\n",
|
|||
|
"Cylinders 0\n",
|
|||
|
"Gear box type 0\n",
|
|||
|
"Drive wheels 0\n",
|
|||
|
"Doors 0\n",
|
|||
|
"Wheel 0\n",
|
|||
|
"Color 0\n",
|
|||
|
"Airbags 0\n",
|
|||
|
"dtype: int64\n",
|
|||
|
"Пропущенные значения после обработки:\n",
|
|||
|
"ID 0\n",
|
|||
|
"Price 0\n",
|
|||
|
"Levy 0\n",
|
|||
|
"Manufacturer 0\n",
|
|||
|
"Model 0\n",
|
|||
|
"Prod. year 0\n",
|
|||
|
"Category 0\n",
|
|||
|
"Leather interior 0\n",
|
|||
|
"Fuel type 0\n",
|
|||
|
"Engine volume 0\n",
|
|||
|
"Mileage 0\n",
|
|||
|
"Cylinders 0\n",
|
|||
|
"Gear box type 0\n",
|
|||
|
"Drive wheels 0\n",
|
|||
|
"Doors 0\n",
|
|||
|
"Wheel 0\n",
|
|||
|
"Color 0\n",
|
|||
|
"Airbags 0\n",
|
|||
|
"dtype: int64\n"
|
|||
|
]
|
|||
|
}
|
|||
|
],
|
|||
|
"source": [
|
|||
|
"numeric_columns = ['Price', 'Levy', 'Engine volume', 'Cylinders', 'Airbags']\n",
|
|||
|
"df[numeric_columns] = df[numeric_columns].replace(\"-\", np.nan)\n",
|
|||
|
"print(\"Пропущенные значения до обработки:\")\n",
|
|||
|
"print(df.isnull().sum())\n",
|
|||
|
"\n",
|
|||
|
"df['Levy'] = df['Levy'].fillna(0) # Подстановка 0\n",
|
|||
|
"df['Mileage'] = df['Mileage'].str.replace(' km', '').str.replace(',', '').astype(float) # Среднее значение\n",
|
|||
|
"df.dropna(subset=['Fuel type'], inplace=True) # Удаление строк\n",
|
|||
|
"\n",
|
|||
|
"print(\"Пропущенные значения после обработки:\")\n",
|
|||
|
"print(df.isnull().sum())"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "markdown",
|
|||
|
"metadata": {},
|
|||
|
"source": [
|
|||
|
"**Выполнить разбиение каждого набора данных на обучающую, контрольную и тестовую выборки:**"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 64,
|
|||
|
"metadata": {},
|
|||
|
"outputs": [
|
|||
|
{
|
|||
|
"name": "stdout",
|
|||
|
"output_type": "stream",
|
|||
|
"text": [
|
|||
|
"Исходный размер строк: 19237\n",
|
|||
|
"Размер обучающей выборки: 11541\n",
|
|||
|
"Размер контрольной выборки: 3848\n",
|
|||
|
"Размер тестовой выборки: 3848\n"
|
|||
|
]
|
|||
|
}
|
|||
|
],
|
|||
|
"source": [
|
|||
|
"df_numeric = df.select_dtypes(include='number')\n",
|
|||
|
"\n",
|
|||
|
"X = df.drop('Price', axis=1) \n",
|
|||
|
"y = df['Price'] \n",
|
|||
|
"\n",
|
|||
|
"X_train_val, X_test, y_train_val, y_test = train_test_split(X, y, test_size=0.2, random_state=42)\n",
|
|||
|
"\n",
|
|||
|
"X_train, X_val, y_train, y_val = train_test_split(X_train_val, y_train_val, test_size=0.25, random_state=42)\n",
|
|||
|
"\n",
|
|||
|
"# Проверка размеров выборок\n",
|
|||
|
"print(f\"Исходный размер строк: {df_numeric.shape[0]}\")\n",
|
|||
|
"print(f\"Размер обучающей выборки: {X_train.shape[0]}\")\n",
|
|||
|
"print(f\"Размер контрольной выборки: {X_val.shape[0]}\")\n",
|
|||
|
"print(f\"Размер тестовой выборки: {X_test.shape[0]}\")"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 65,
|
|||
|
"metadata": {},
|
|||
|
"outputs": [
|
|||
|
{
|
|||
|
"data": {
|
|||
|
"image/png": "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Jtx99904c+YMXn31VQwfPhw7d+5ETExMrdvce++9GDZsGADgo48+qvVF7b777sOyZctw55134s9//jOOHj2K1157DTt37sR3330HrVZb5/PQHKWlpZ7HVpMsy7jmmmuwZcsW3Hvvvejduzf27NmDBQsW4JdffvFa7N6Yhh6nEALXXHMNNm7ciKlTp2LgwIFYu3YtHnnkEZw8eRILFizwOtbYsWMxefJkr8sGDhwIACgvL8dbb72FW265Bffccw8qKiqwZMkSjBs3Dtu3b/e0c/vPf/6DiooKTJ8+HRaLBQsXLsTo0aOxZ88eJCUl1ft4Zs+eXeuLEwA89NBDWL58OWbMmIFOnTrh//7v/wAAb775JkaPHo2nn34aCxcuxPjx4/Hbb78hMjLSc9uwsDB88cUXKCwsRGJiIgDAbDbj/fffR1hYWK37WrhwIa655hrceuutsNlseO+993DjjTfi888/x4QJE+qNvblMJhNGjBiBkydP4r777kPnzp3x/fffY9asWTh9+jRefvlln91XSw0bNgz33nsvZFnG3r178fLLL+PUqVP49ttvG7zdnDlzMHfuXIwZMwbTpk3DoUOH8MYbb+DHH3/0vL+Ki4sBuD5zevTogblz58JisWDRokW47LLL8OOPP6Jnz54YOXIk0tLSsGLFCvzhD3/wup8VK1agW7duzV7ftWrVKphMJkybNg3x8fHYvn07Xn31VZw4cQKrVq2q93YrV67EbbfdhgEDBmD+/PkoLi7GK6+8gi1btmDnzp1ISEhoVhz1aclnnttjjz3WrPvq1asX/v73v0MIgSNHjuCll17CVVdd1eSkui7uvp0xYwYGDx6Mf/7znzhz5kydz9X69esxfvx4dO3aFXPmzIHZbMarr76Kyy67DD///HOtHwZuuukmdOnSBfPnz8e2bdvwyiuv4OzZs/jPf/5Tbzx33303Nm3ahJycHPTp08dzeWueZyKfEETU5pYuXSoAiPXr14szZ86I33//Xbz33nsiPj5eGAwGceLECSGEEBaLRTidTq/bHj16VOj1ejFv3jzPZW+//bYAIF566aVa9yXLsud2AMTzzz9fq03fvn3FiBEjPH9v3LhRABAdO3YU5eXlnss/+OADAUAsXLjQc+wePXqIcePGee5HCCFMJpPIyMgQY8eOrXVfl156qbjgggs8f585c0YAEE8++aTnsmPHjgm1Wi2eeeYZr9vu2bNHaDSaWpcfPnxYABDLly/3XPbkk0+Kmh9p3377rQAgVqxY4XXbr776qtbl6enpYsKECbVinz59ujj/Y/L82B999FGRmJgoBg8e7PWc/ve//xUqlUp8++23XrdfvHixACC+++67Wvd3vqY8ztWrVwsA4umnn/a67R//+EchSZL49ddfvWKfPn16vffncDiE1Wr1uuzs2bMiKSlJ3HXXXZ7L3K+tmq9dIYT44YcfBADx0EMPeS6bMmWKSE9P9/y9d+9eoVKpxPjx4wUAcfToUSGEEPn5+UKn04lZs2Z52n7++ecCgLjqqqs8r7cDBw4ISZLEggULPO1GjBgh+vbtK/r37y9eeOEFz+X//e9/RadOncSwYcNE3759vR6XyWTy+ttms4kLLrhAjB49ut7n5/z7O9/zzz/v9ZiEEOKpp54S4eHh4pdffvFq+//+3/8TarVa5OX
|
|||
|
"text/plain": [
|
|||
|
"<Figure size 1000x600 with 1 Axes>"
|
|||
|
]
|
|||
|
},
|
|||
|
"metadata": {},
|
|||
|
"output_type": "display_data"
|
|||
|
},
|
|||
|
{
|
|||
|
"data": {
|
|||
|
"image/png": "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
|
|||
|
"text/plain": [
|
|||
|
"<Figure size 1000x600 with 1 Axes>"
|
|||
|
]
|
|||
|
},
|
|||
|
"metadata": {},
|
|||
|
"output_type": "display_data"
|
|||
|
},
|
|||
|
{
|
|||
|
"data": {
|
|||
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA1IAAAIjCAYAAAAJLyrXAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAACKFklEQVR4nOzdd5xU1f3/8fedurOduksHQWlSDE00igVQbDGYGDsxRv0aNCqxkViwJMZo7KgxP4OmEKOxRWNUwK6AioKiiKjA0pcFtu9Ou+f3x+yMLLvAltmdsq/n47EPmDt3znxm7tzZ+9lzzudYxhgjAAAAAECTORIdAAAAAACkGhIpAAAAAGgmEikAAAAAaCYSKQAAAABoJhIpAAAAAGgmEikAAAAAaCYSKQAAAABoJhIpAAAAAGgmEikAAIAOKhQKqbi4WEVFRYkOBUg5JFIAAABx9tJLL2n58uWx288//7w+//zzxAW0mzVr1ujCCy9Ujx495PF4VFBQoIkTJ8oYk+jQgJRCIgW0o8cff1yWZcV+MjIydNBBB+nSSy/Vtm3bEh0ekJRKSkpkWZbmzJmT6FCAJvvss890+eWXa82aNVqyZIn+7//+TxUVFYkOS0uWLNH48eP1+uuv67rrrtOrr76qBQsW6Pnnn5dlWYkOD0gprkQHAHREt9xyiwYMGKDa2lq9++67evjhh/Xyyy9r5cqVyszMTHR4AIBW+vnPf66//OUvOuiggyRJ06dP16GHHprQmAKBgM4//3wddNBBeu2115SXl5fQeIBURyIFJMC0adM0duxYSZFftl26dNHdd9+tF154QWeeeWaCowMAtFa3bt20cuXK2B/Ihg4dmuiQ9OKLL2r16tX68ssvSaKAOGBoH5AEjjnmGEnS2rVrJUk7d+7UVVddpREjRig7O1u5ubmaNm2aVqxY0eCxtbW1mjNnjg466CBlZGSoR48emj59ur755htJ0rp16+oNJ9zz56ijjoq19eabb8qyLP3rX//Sr3/9axUWFiorK0unnHKKNmzY0OC5ly5dquOPP155eXnKzMzUpEmT9N577zX6Go866qhGn7+x4Vp///vfNWbMGPl8PnXu3FlnnHFGo8+/r9e2O9u2de+992r48OHKyMhQQUGBLr74Yu3atavefv3799dJJ53U4HkuvfTSBm02Fvudd97Z4D2VJL/fr5tuukmDBg2S1+tVnz59dM0118jv9zf6XrX0dVZVVelXv/qV+vTpI6/Xq8GDB+uuu+5qMO9hb23ddtttkiJ/tb7xxhs1ZswY5eXlKSsrS0cccYTeeOONRuO66667dM8996hfv37y+XyaNGmSVq5cWW/fn/70p+rfv3+9bRs2bJDP55NlWVq3bl1se3V1tc4//3xlZWVp2LBhWrZsmSQpGAzq/PPPV2ZmpkaNGqWPPvqoXnvRz9ipp57a4D28+OKLZVmWDj744Hrb77rrLh122GHq0qWLfD6fxowZo3//+9+NH4g9HHXUUQ3ai7a552uSpNLSUl1xxRWx4zNo0CDdcccdsm07ts/u7+meDj744EbP133F29j73pj+/fvHPgcOh0OFhYX6yU9+st8CBLs/rrGf3Z+7qeehJP3vf//TpEmTlJOTo9zcXI0bN07z58+XtPfvksbOi1AopFtvvVUDBw6U1+tV//799etf/7rBudfU19+cc2zOnDnyer0aM2aMhg4dutfvh8bs/lqcTqd69eqliy66SKWlpbF9WnL8lyxZogEDBuiZZ57RwIED5fF41LdvX11zzTWqqalp8PiHHnpIw4cPl9frVc+ePTVz5sx6MUjfnQfLli3TYYcdJp/PpwEDBuiRRx6pt1803jfffDO2bfPmzerfv7/Gjh2rysrK2PbWfmcC7YUeKSAJRJOeLl26SJK+/fZbPf/88/rxj3+sAQMGaNu2bfrTn/6kSZMm6YsvvlDPnj0lSeFwWCeddJIWLVqkM844Q5dffrkqKiq0YMECrVy5UgMHDow9x5lnnqkTTjih3vPOnj270Xh++9vfyrIsXXvttSouLta9996ryZMna/ny5fL5fJKk119/XdOmTdOYMWN00003yeFwaN68eTrmmGP0zjvvaPz48Q3a7d27t26//XZJUmVlpS655JJGn/uGG27Q6aefrp///Ofavn27HnjgAR155JH65JNPlJ+f3+AxF110kY444ghJ0rPPPqvnnnuu3v0XX3yxHn/8cZ1//vn65S9/qbVr1+rBBx/UJ598ovfee09ut7vR96E5SktLY69td7Zt65RTTtG7776riy66SEOHDtVnn32me+65R1999ZWef/75Jj/Hvl6nMUannHKK3njjDV1wwQUaPXq0Xn31VV199dXatGmT7rnnnnptTZkyReedd169baNHj5YklZeX6//9v/+nM888UxdeeKEqKir02GOP6bjjjtMHH3wQ2y/qr3/9qyoqKjRz5kzV1tbqvvvu0zHHHKPPPvtMBQUFe309N954o2praxtsv/LKK/XEE0/o0ksvVe/evfWLX/xCkvToo4/qmGOO0W233ab77rtP06ZN07fffqucnJzYYzMyMvTf//5XxcXF6t69uySppqZG//rXv5SRkdHgue677z6dcsopOvvssxUIBPTkk0/qxz/+sV566SWdeOKJe429uaqrqzVp0iRt2rRJF198sfr27av3339fs2fP1pYtW3TvvffG7bla6ogjjtBFF10k27a1cuVK3Xvvvdq8ebPeeeedvT7m3nvvjV0Ar1q1Sr/73e/061//Otb7kp2dHdu3qefh448/rp/97GcaPny4Zs+erfz8fH3yySd65ZVXdNZZZ+k3v/mNfv7zn0uKzJ+78sor650bu/v5z3+uJ554Qj/60Y/0q1/9SkuXLtXtt9+uVatWNfie2N/rb+45tru9fT/syw9/+ENNnz5doVBIixcv1qOPPqqamhr97W9/a1Y7u9uxY4e+/fZb/frXv9b06dP1q1/9Sh999JHuvPNOrVy5Uv/9739jieicOXN08803a/Lkybrkkku0evVqPfzww/rwww8bfG/u2rVLJ5xwgk4//XSdeeaZeuqpp3TJJZfI4/HoZz/7WaOxlJWVadq0aXK73Xr55Zdjn5V4fmcCbc4AaDfz5s0zkszChQvN9u3bzYYNG8yTTz5punTpYnw+n9m4caMxxpja2loTDofrPXbt2rXG6/WaW265JbbtL3/5i5Fk7r777gbPZdt27HGSzJ133tlgn+HDh5tJkybFbr/xxhtGkunVq5cpLy+PbX/qqaeMJHPffffF2j7wwAPNcccdF3seY4yprq42AwYMMFOmTGnwXIcddpg5+OCDY7e3b99uJJmbbroptm3dunXG6XSa3/72t/Ue+9lnnxmXy9Vg+5o1a4wk88QTT8S23XTTTWb3r7Z33nnHSDL/+Mc/6j32lVdeabC9X79+5sQTT2wQ+8yZM82eX5d7xn7NNdeY7t27mzFjxtR7T//2t78Zh8Nh3nnnnXqPf+SRR4wk89577zV4vj015XU+//zzRpK57bbb6j32Rz/6kbEsy3z99df1Yp85c+Zeny8UChm/319v265du0xBQYH52c9+FtsW/Wzt/tk1xpilS5caSebKK6+MbZsxY4bp169f7PbKlSuNw+Ew06ZNM5LM2rVrjTHGbN261Xg8HjN79uzYvi+99JKRZE444YTY523VqlXGsixzzz33xPabNGmSGT58uBk5cqS56667Ytv/9re/md69e5sjjjjCDB8+vN7rqq6urnc7EAiYgw8+2BxzzDF7fX/2fL493XnnnfVekzHG3HrrrSYrK8t89dVX9fa97rrrjNPpNEVFRcaYlp2vTz/99F5j3PN935t+/fqZGTNm1Nt21llnmczMzP0+ds943njjjQb3NfU8LC0tNTk5OWbChAmmpqam3r67f9dERd+vefPmNbhv+fLlRpL5+c9/Xm/7VVddZSSZ119/PbatKa+/uedYU74f9mbPxxsT+Q4dNmxY7HZLjv+MGTOMJPPTn/603n7R75MXX3zRGGNMcXGx8Xg8ZurUqfV+Fz344INGkvnLX/4S2zZp0iQ
|
|||
|
"text/plain": [
|
|||
|
"<Figure size 1000x600 with 1 Axes>"
|
|||
|
]
|
|||
|
},
|
|||
|
"metadata": {},
|
|||
|
"output_type": "display_data"
|
|||
|
},
|
|||
|
{
|
|||
|
"name": "stdout",
|
|||
|
"output_type": "stream",
|
|||
|
"text": [
|
|||
|
"Статистические показатели для обучающей выборки:\n",
|
|||
|
"Среднее значение: 9.02\n",
|
|||
|
"Стандартное отклонение: 1.60\n",
|
|||
|
"Минимальное значение: 0.00\n",
|
|||
|
"Максимальное значение: 17.09\n",
|
|||
|
"Количество наблюдений: 13465\n",
|
|||
|
"\n",
|
|||
|
"Статистические показатели для валидационной выборки:\n",
|
|||
|
"Среднее значение: 9.03\n",
|
|||
|
"Стандартное отклонение: 1.59\n",
|
|||
|
"Минимальное значение: 1.10\n",
|
|||
|
"Максимальное значение: 13.35\n",
|
|||
|
"Количество наблюдений: 2886\n",
|
|||
|
"\n",
|
|||
|
"Статистические показатели для тестовой выборки:\n",
|
|||
|
"Среднее значение: 9.06\n",
|
|||
|
"Стандартное отклонение: 1.56\n",
|
|||
|
"Минимальное значение: 0.00\n",
|
|||
|
"Максимальное значение: 12.06\n",
|
|||
|
"Количество наблюдений: 2886\n",
|
|||
|
"\n"
|
|||
|
]
|
|||
|
}
|
|||
|
],
|
|||
|
"source": [
|
|||
|
"\n",
|
|||
|
"df['price_log'] = np.log(df['Price'])\n",
|
|||
|
"\n",
|
|||
|
"X = df.drop(['Price', 'price_log'], axis=1) \n",
|
|||
|
"y = df['price_log'] \n",
|
|||
|
"\n",
|
|||
|
"X = X.select_dtypes(include='number')\n",
|
|||
|
"\n",
|
|||
|
"X_train, X_temp, y_train, y_temp = train_test_split(X, y, test_size=0.3, random_state=42)\n",
|
|||
|
"\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",
|
|||
|
"def plot_distribution(data, title):\n",
|
|||
|
" \"\"\"Построение гистограммы распределения целевого признака\"\"\"\n",
|
|||
|
" plt.figure(figsize=(10, 6))\n",
|
|||
|
" sns.histplot(data, kde=True, bins=30, color='skyblue')\n",
|
|||
|
" plt.title(title)\n",
|
|||
|
" plt.xlabel('Logarithm of Price')\n",
|
|||
|
" plt.ylabel('Count')\n",
|
|||
|
" plt.grid(True)\n",
|
|||
|
" plt.show()\n",
|
|||
|
"\n",
|
|||
|
"plot_distribution(y_train, 'Распределение логарифма цены в обучающей выборке')\n",
|
|||
|
"plot_distribution(y_val, 'Распределение логарифма цены в валидационной выборке')\n",
|
|||
|
"plot_distribution(y_test, 'Распределение логарифма цены в тестовой выборке')\n",
|
|||
|
"\n",
|
|||
|
"def get_statistics(df, name):\n",
|
|||
|
" print(f\"Статистические показатели для {name} выборки:\")\n",
|
|||
|
" print(f\"Среднее значение: {df.mean():.2f}\")\n",
|
|||
|
" print(f\"Стандартное отклонение: {df.std():.2f}\")\n",
|
|||
|
" print(f\"Минимальное значение: {df.min():.2f}\")\n",
|
|||
|
" print(f\"Максимальное значение: {df.max():.2f}\")\n",
|
|||
|
" print(f\"Количество наблюдений: {df.count()}\\n\")\n",
|
|||
|
"\n",
|
|||
|
"get_statistics(y_train, \"обучающей\")\n",
|
|||
|
"get_statistics(y_val, \"валидационной\")\n",
|
|||
|
"get_statistics(y_test, \"тестовой\")"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "markdown",
|
|||
|
"metadata": {},
|
|||
|
"source": [
|
|||
|
"Обучающая, валидационная и тестовая выборки достаточно сбалансированы по основным статистическим показателям (среднее, стандартное отклонение, количество наблюдений), что говорит о хорошем качестве разбиения данных. Различия минимальны, и распределение данных выглядит однородным. Нет необходимости использовать методы аугментации данных, так как выборки сбалансированы и объем данных достаточно велик."
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "markdown",
|
|||
|
"metadata": {},
|
|||
|
"source": [
|
|||
|
"**Выполнить приращение данных методами выборки с избытком (oversampling) и выборки с недостатком (undersampling):**"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 69,
|
|||
|
"metadata": {},
|
|||
|
"outputs": [
|
|||
|
{
|
|||
|
"name": "stdout",
|
|||
|
"output_type": "stream",
|
|||
|
"text": [
|
|||
|
"Распределение классов после SMOTE (oversampling):\n",
|
|||
|
"price_category\n",
|
|||
|
"0 2782\n",
|
|||
|
"1 2782\n",
|
|||
|
"2 2782\n",
|
|||
|
"3 2782\n",
|
|||
|
"4 2782\n",
|
|||
|
"Name: count, dtype: int64\n",
|
|||
|
"Распределение классов после RandomUnderSampler (undersampling):\n",
|
|||
|
"price_category\n",
|
|||
|
"0 2613\n",
|
|||
|
"1 2613\n",
|
|||
|
"2 2613\n",
|
|||
|
"3 2613\n",
|
|||
|
"4 2613\n",
|
|||
|
"Name: count, dtype: int64\n"
|
|||
|
]
|
|||
|
}
|
|||
|
],
|
|||
|
"source": [
|
|||
|
"from imblearn.over_sampling import SMOTE\n",
|
|||
|
"from imblearn.under_sampling import RandomUnderSampler\n",
|
|||
|
"from collections import Counter\n",
|
|||
|
"\n",
|
|||
|
"df['price_log'] = np.log(df['Price'])\n",
|
|||
|
"\n",
|
|||
|
"df['price_category'] = pd.qcut(df['price_log'], q=5, labels=[0, 1, 2, 3, 4])\n",
|
|||
|
"\n",
|
|||
|
"X = df.drop(['Price', 'price_log', 'price_category'], axis=1)\n",
|
|||
|
"y = df['price_category']\n",
|
|||
|
"X = pd.get_dummies(X, drop_first=True)\n",
|
|||
|
"for col in X.columns:\n",
|
|||
|
" X[col] = X[col].fillna(X[col].mode()[0])\n",
|
|||
|
"X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)\n",
|
|||
|
"\n",
|
|||
|
"smote = SMOTE(random_state=42)\n",
|
|||
|
"X_train_smote, y_train_smote = smote.fit_resample(X_train, y_train)\n",
|
|||
|
"\n",
|
|||
|
"print(\"Распределение классов после SMOTE (oversampling):\")\n",
|
|||
|
"print(pd.Series(y_train_smote).value_counts())\n",
|
|||
|
"\n",
|
|||
|
"undersampler = RandomUnderSampler(random_state=42)\n",
|
|||
|
"X_train_under, y_train_under = undersampler.fit_resample(X_train, y_train)\n",
|
|||
|
"\n",
|
|||
|
"print(\"Распределение классов после RandomUnderSampler (undersampling):\")\n",
|
|||
|
"print(pd.Series(y_train_under).value_counts())"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "markdown",
|
|||
|
"metadata": {},
|
|||
|
"source": [
|
|||
|
"## Forbes 2022 Billionaires data\n",
|
|||
|
"https://www.kaggle.com/datasets/imakash3011/customer-personality-analysis"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 73,
|
|||
|
"metadata": {},
|
|||
|
"outputs": [
|
|||
|
{
|
|||
|
"name": "stdout",
|
|||
|
"output_type": "stream",
|
|||
|
"text": [
|
|||
|
"Index(['Rank ', 'Name', 'Networth', 'Age', 'Country', 'Source', 'Industry'], dtype='object')\n"
|
|||
|
]
|
|||
|
}
|
|||
|
],
|
|||
|
"source": [
|
|||
|
"df2 = pd.read_csv(\".//static//csv//forbes_billionaires.csv\")\n",
|
|||
|
"print(df2.columns)"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "markdown",
|
|||
|
"metadata": {},
|
|||
|
"source": [
|
|||
|
"Мировой рынок миллионеров представляет собой сложную и динамичную среду, где состояние, возраст, страна происхождения и источники богатства сильно варьируются в зависимости от множества факторов. Основная проблема заключается в том, как правильно интерпретировать эти данные, выявлять ключевые корреляции между параметрами, и на основе этого строить прогнозы по развитию рынка капиталов."
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 74,
|
|||
|
"metadata": {},
|
|||
|
"outputs": [
|
|||
|
{
|
|||
|
"name": "stdout",
|
|||
|
"output_type": "stream",
|
|||
|
"text": [
|
|||
|
"<bound method DataFrame.info of 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",
|
|||
|
"... ... ... ... ... ... \n",
|
|||
|
"2595 2578 Jorge Gallardo Ballart 1.0 80 Spain \n",
|
|||
|
"2596 2578 Nari Genomal 1.0 82 Philippines \n",
|
|||
|
"2597 2578 Ramesh Genomal 1.0 71 Philippines \n",
|
|||
|
"2598 2578 Sunder Genomal 1.0 68 Philippines \n",
|
|||
|
"2599 2578 Horst-Otto Gerberding 1.0 69 Germany \n",
|
|||
|
"\n",
|
|||
|
" 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 \n",
|
|||
|
"... ... ... \n",
|
|||
|
"2595 pharmaceuticals Healthcare \n",
|
|||
|
"2596 apparel Fashion & Retail \n",
|
|||
|
"2597 apparel Fashion & Retail \n",
|
|||
|
"2598 garments Fashion & Retail \n",
|
|||
|
"2599 flavors and fragrances Food & Beverage \n",
|
|||
|
"\n",
|
|||
|
"[2600 rows x 7 columns]> \n",
|
|||
|
"\n"
|
|||
|
]
|
|||
|
}
|
|||
|
],
|
|||
|
"source": [
|
|||
|
"print(df2.info, \"\\n\")"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "markdown",
|
|||
|
"metadata": {},
|
|||
|
"source": [
|
|||
|
"**Объектами наблюдения** являются миллионеры. Каждый миллионер представлен одной строкой в таблице, которая описывает его основные характеристики.\n",
|
|||
|
"\n",
|
|||
|
"**Анализ сведений о каждом наборе данных**: В данном случае каждый набор данных — это информация об отдельном миллиардере. Здесь присутствуют атрибуты такие как: Ранг, Имя, Состояние, Возраст, Страна, Источник дохода, Отрасль.\n",
|
|||
|
"\n",
|
|||
|
"**Связи между объектами:** Можно выявить связи между возрастом и состоянием или источник дохода и состояние.\n"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 84,
|
|||
|
"metadata": {},
|
|||
|
"outputs": [
|
|||
|
{
|
|||
|
"data": {
|
|||
|
"image/png": "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
|
|||
|
"text/plain": [
|
|||
|
"<Figure size 1000x600 with 2 Axes>"
|
|||
|
]
|
|||
|
},
|
|||
|
"metadata": {},
|
|||
|
"output_type": "display_data"
|
|||
|
}
|
|||
|
],
|
|||
|
"source": [
|
|||
|
"plt.figure(figsize=(10, 6))\n",
|
|||
|
"\n",
|
|||
|
"plt.subplot(2, 2, 1)\n",
|
|||
|
"sns.scatterplot(data=df2, x='Age', y='Networth')\n",
|
|||
|
"plt.title('Связь между возрастом и состоянием')\n",
|
|||
|
"plt.xlabel('Возраст')\n",
|
|||
|
"plt.ylabel('Состояние (млрд)')\n",
|
|||
|
"\n",
|
|||
|
"\n",
|
|||
|
"plt.subplot(2, 2, 2)\n",
|
|||
|
"top_sources = df2['Source'].value_counts().index[:10]\n",
|
|||
|
"sns.boxplot(data=df2[df2['Source'].isin(top_sources)], x='Source', y='Networth')\n",
|
|||
|
"plt.title('Связь между источником дохода и состоянием')\n",
|
|||
|
"plt.xticks(rotation=90)\n",
|
|||
|
"plt.xlabel('Источник дохода')\n",
|
|||
|
"plt.ylabel('Состояние (млрд)')\n",
|
|||
|
"\n",
|
|||
|
"plt.tight_layout()\n",
|
|||
|
"plt.show()"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "markdown",
|
|||
|
"metadata": {},
|
|||
|
"source": [
|
|||
|
"Из 1 графика видно что меньше всего миллиардеров от 0 до 30 и от 95 до 100 лет. Из 2 графка видно больше всего миллиардеров в diversified и real estate"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "markdown",
|
|||
|
"metadata": {},
|
|||
|
"source": [
|
|||
|
"1. Оценка состояния миллиардера\n",
|
|||
|
"\n",
|
|||
|
"Цель: Разработать модель, которая точно предсказывает состояние миллиардера на основе ограниченного набора характеристик: возраста, страны проживания и отрасли, в которой он работает.\n",
|
|||
|
"\n",
|
|||
|
"Эффекты для бизнеса: Более точная оценка состояния миллиардеров позволит компаниям лучше адаптировать свои маркетинговые стратегии, улучшить целевую рекламу и предложить персонализированные финансовые услуги для богатых клиентов.\n",
|
|||
|
"\n",
|
|||
|
"Вход:\n",
|
|||
|
"\n",
|
|||
|
"* Возраст миллиардера\n",
|
|||
|
"* Страна проживания\n",
|
|||
|
"* Отрасль\n",
|
|||
|
"\n",
|
|||
|
"Целевой признак: Состояние миллиардера (Networth).\n",
|
|||
|
"\n",
|
|||
|
"2. Анализ влияния источников дохода на состояние\n",
|
|||
|
"\n",
|
|||
|
"Цель: Провести анализ, чтобы выявить наиболее прибыльные источники дохода среди миллиардеров и как они влияют на накопленное состояние.\n",
|
|||
|
"\n",
|
|||
|
"Эффекты для бизнеса: Компании могут использовать эту информацию для определения наиболее перспективных отраслей для инвестиций и бизнес-стратегий, а также для оптимизации инвестиционных портфелей.\n",
|
|||
|
"\n",
|
|||
|
"Вход:\n",
|
|||
|
"\n",
|
|||
|
"* Источник дохода\n",
|
|||
|
"* Возраст миллиардера\n",
|
|||
|
"* Страна проживания\n",
|
|||
|
"\n",
|
|||
|
"Целевой признак: Состояние миллиардера (Networth).\n",
|
|||
|
"\n",
|
|||
|
"3. Прогнозирование роста капитала\n",
|
|||
|
"\n",
|
|||
|
"Цель: Разработать модель для прогнозирования роста капитала на основе возраста, страны проживания и источника дохода, которая поможет в оценке потенциального роста состояния миллиардера в будущем.\n",
|
|||
|
"\n",
|
|||
|
"Эффекты для бизнеса: Компании смогут лучше планировать свои инвестиции и расширять деловые связи с растущими миллиардерами, оптимизируя свои ресурсы для привлечения наиболее перспективных клиентов.\n",
|
|||
|
"\n",
|
|||
|
"Вход:\n",
|
|||
|
"\n",
|
|||
|
"* Возраст миллиардера\n",
|
|||
|
"* Страна проживания\n",
|
|||
|
"* Источник дохода\n",
|
|||
|
"\n",
|
|||
|
"Целевой признак: Прогнозируемый рост состояния миллиардера (Networth).\n",
|
|||
|
"\n"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "markdown",
|
|||
|
"metadata": {},
|
|||
|
"source": [
|
|||
|
"**Опредиление проблем данных с помощью кода:**"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 86,
|
|||
|
"metadata": {},
|
|||
|
"outputs": [
|
|||
|
{
|
|||
|
"name": "stdout",
|
|||
|
"output_type": "stream",
|
|||
|
"text": [
|
|||
|
"Максимальные значения:\n",
|
|||
|
" Rank 2578\n",
|
|||
|
"Name Zygmunt Solorz-Zak \n",
|
|||
|
"Networth 219.0\n",
|
|||
|
"Age 100\n",
|
|||
|
"Country Zimbabwe\n",
|
|||
|
"Source wireless networking gear\n",
|
|||
|
"Industry diversified \n",
|
|||
|
"dtype: object \n",
|
|||
|
"\n",
|
|||
|
"Признаки с нулевыми значениями:\n",
|
|||
|
" Index([], dtype='object') \n",
|
|||
|
"\n",
|
|||
|
"Признаки с низкой дисперсией:\n",
|
|||
|
" Series([], dtype: float64) \n",
|
|||
|
"\n"
|
|||
|
]
|
|||
|
}
|
|||
|
],
|
|||
|
"source": [
|
|||
|
"max_value = df2.max(axis=0)\n",
|
|||
|
"\n",
|
|||
|
"columns_with_zero = df2.columns[(df2 == 0).any()]\n",
|
|||
|
"\n",
|
|||
|
"numeric_data = df2.select_dtypes(include='number')\n",
|
|||
|
"\n",
|
|||
|
"shum = numeric_data.var()\n",
|
|||
|
"\n",
|
|||
|
"low_dispers = 0.1\n",
|
|||
|
"low_var_columns = shum[shum < low_dispers]\n",
|
|||
|
"\n",
|
|||
|
"\n",
|
|||
|
"print(\"Максимальные значения:\\n\", max_value, \"\\n\")\n",
|
|||
|
"print(\"Признаки с нулевыми значениями:\\n\", columns_with_zero, \"\\n\")\n",
|
|||
|
"print(\"Признаки с низкой дисперсией:\\n\", low_var_columns, \"\\n\")"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 88,
|
|||
|
"metadata": {},
|
|||
|
"outputs": [
|
|||
|
{
|
|||
|
"data": {
|
|||
|
"image/png": "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
|
|||
|
"text/plain": [
|
|||
|
"<Figure size 1000x800 with 2 Axes>"
|
|||
|
]
|
|||
|
},
|
|||
|
"metadata": {},
|
|||
|
"output_type": "display_data"
|
|||
|
}
|
|||
|
],
|
|||
|
"source": [
|
|||
|
"plt.figure(figsize=(10, 8))\n",
|
|||
|
"numeric_data = df2.select_dtypes(include='number')\n",
|
|||
|
"correlation_matrix = numeric_data.corr()\n",
|
|||
|
"sns.heatmap(correlation_matrix, annot=True, cmap='coolwarm', vmin=-1, vmax=1)\n",
|
|||
|
"plt.title('Корреляционная матрица для проверки просачивания данных')\n",
|
|||
|
"plt.show()"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "markdown",
|
|||
|
"metadata": {},
|
|||
|
"source": [
|
|||
|
"В данных которые содержаться в таблице нету ни нулевых значений, ни низкой дисперсии, ни выбросов связанных с аномально высокими значениями. По графику видно целом, данные не указывают на очевидное просачивание, поскольку корреляции не слишком высокие и ожидаемы. Данные хорошо сформированны поэтому здесь нет проблем чтобы их решать."
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "markdown",
|
|||
|
"metadata": {},
|
|||
|
"source": [
|
|||
|
"**Оценить качество каждого набора данных:** "
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "markdown",
|
|||
|
"metadata": {},
|
|||
|
"source": [
|
|||
|
"1. Информативность: Набор данных предоставляет достаточную информацию для анализа характиристик миллиардеров.\n",
|
|||
|
"2. Степень покрытия: Включает данные всего мира поэтому с.п. лучше не придумаешь.\n",
|
|||
|
"3. Соответствие реальным данным: Данные в целом соответствуют реальным значениям, но это все будет зависеть от года.\n",
|
|||
|
"4. Согласованность меток: В данных о миллиардерах признаки Source (Источник дохода), Industry (Отрасль) и Country (Страна) могут иметь несогласованность меток, если одна и та же категория указана разными способами."
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "markdown",
|
|||
|
"metadata": {},
|
|||
|
"source": [
|
|||
|
"**Выполнить разбиение каждого набора данных на обучающую, контрольную и тестовую выборки:**"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 95,
|
|||
|
"metadata": {},
|
|||
|
"outputs": [
|
|||
|
{
|
|||
|
"name": "stdout",
|
|||
|
"output_type": "stream",
|
|||
|
"text": [
|
|||
|
"Исходный размер строк: 2600\n",
|
|||
|
"Размер обучающей выборки: 1560\n",
|
|||
|
"Размер контрольной выборки: 520\n",
|
|||
|
"Размер тестовой выборки: 520\n"
|
|||
|
]
|
|||
|
}
|
|||
|
],
|
|||
|
"source": [
|
|||
|
"df_numeric = df2.select_dtypes(include='number')\n",
|
|||
|
"\n",
|
|||
|
"X = df2.drop('Networth', axis=1) \n",
|
|||
|
"y = df2['Networth'] \n",
|
|||
|
"\n",
|
|||
|
"X_train_val, X_test, y_train_val, y_test = train_test_split(X, y, test_size=0.2, random_state=42)\n",
|
|||
|
"\n",
|
|||
|
"X_train, X_val, y_train, y_val = train_test_split(X_train_val, y_train_val, test_size=0.25, random_state=42)\n",
|
|||
|
"\n",
|
|||
|
"# Проверка размеров выборок\n",
|
|||
|
"print(f\"Исходный размер строк: {df_numeric.shape[0]}\")\n",
|
|||
|
"print(f\"Размер обучающей выборки: {X_train.shape[0]}\")\n",
|
|||
|
"print(f\"Размер контрольной выборки: {X_val.shape[0]}\")\n",
|
|||
|
"print(f\"Размер тестовой выборки: {X_test.shape[0]}\")"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 96,
|
|||
|
"metadata": {},
|
|||
|
"outputs": [
|
|||
|
{
|
|||
|
"data": {
|
|||
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA1IAAAIjCAYAAAAJLyrXAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAACKMklEQVR4nOzdeXxU1f3/8fe9s2WyAyGEfd8VUATEBTcEca+2FhVFa9VasHWp9mvrAmhr/bkvqLW1LlXqvlRcERe0AioKiERk30kIkMk6672/P5IZCQmQCRMmy+v5eOSRzJ07535m5mRyPznnfK5h27YtAAAAAEC9mckOAAAAAACaGxIpAAAAAIgTiRQAAAAAxIlECgAAAADiRCIFAAAAAHEikQIAAACAOJFIAQAAAECcSKQAAAAAIE4kUgAAoMmxLEtFRUVas2ZNskNBgoXDYRUWFmrDhg3JDgU4ICRSAACgSdi2bZuuueYade/eXW63W+3bt9egQYNUUlKS7NCahdmzZ2vx4sWx22+88Ya+//775AW0m5UrV+ryyy9Xx44d5Xa71aFDB40ePVq2bSc7NKDBSKTQaj399NMyDCP2lZKSon79+mnq1KkqKChIdnhAk1RUVCTDMDRt2rRkh4IWZtWqVRoxYoReeOEFXXnllZo9e7bmzJmjuXPnKi0tLdnhNQvfffedfv/732vlypVasGCBfvOb36i0tDTZYWnBggUaOXKkPvroI/3f//2f3n//fc2ZM0dvvPGGDMNIdnhAgzmTHQCQbDNmzFDPnj3l9/v1+eef67HHHtM777yjZcuWKTU1NdnhAUCrcOWVV8rtdmvBggXq3LlzssNpln7961/rX//6l/r16ydJOuecc3TkkUcmNaZgMKhLL71U/fr10wcffKCsrKykxgMkEokUWr0JEyboiCOOkFT1R6hdu3a677779Oabb+r8889PcnQA0PItWrRIH330kT744AOSqAPQvn17LVu2LPaPwIEDByY7JL311ltasWKFfvjhB5IotDhM7QP2cOKJJ0qS1q5dK0nauXOn/vCHP+jQQw9Venq6MjMzNWHCBC1ZsqTWY/1+v6ZNm6Z+/fopJSVFHTt21DnnnKPVq1dLktatW1djOuGeX8cff3ysrU8++USGYejFF1/Un/70J+Xl5SktLU1nnnmmNm7cWOvYCxcu1CmnnKKsrCylpqbquOOO0//+9786n+Pxxx9f5/Hrmq713HPPafjw4fJ6vWrbtq0mTpxY5/H39dx2Z1mWHnjgAQ0ePFgpKSnq0KGDrrzySu3atavGfj169NDpp59e6zhTp06t1WZdsd999921XlNJCgQCuu2229SnTx95PB517dpVN954owKBQJ2vVUOfZ3l5ua6//np17dpVHo9H/fv31z333FNrPcDe2rrjjjskVf0399Zbb9Xw4cOVlZWltLQ0HXvssfr444/rjOuee+7R/fffr+7du8vr9eq4447TsmXLaux7ySWXqEePHjW2bdy4UV6vV4ZhaN26dbHtFRUVuvTSS5WWlqZBgwZp0aJFkqRQKKRLL71UqampGjp0qL7++usa7UX72Nlnn13rNbzyyitlGIYOOeSQGtvvueceHXXUUWrXrp28Xq+GDx+uV155pe43Yg/HH398rff6L3/5i0zT1KxZs2LbPvvsM/3iF79Qt27dYu//tddeq8rKylqv0b5+Vz/55JN9Hvurr76q1S/21d7ufbW+73nUtGnT6mzvkksuie2zfv16/fa3v1X//v3l9XrVrl07/eIXv6jxXu/Nnn3e5XKpR48euuGGGxQMBvf7+Pr8LixYsEApKSlavXq1Bg8eLI/Ho7y8PF155ZXauXNnbL/bbrtNLpdL27dvr3WcK664QtnZ2fL7/bGYn3766Tpfq9099dRTOvHEE5WbmyuPx6NBgwbpscceq9X+nu9zKBTSLbfcop49e8rtdqtbt2668cYba/Wluj7L6voc+/rrr+uMub6fWdHPQY/Ho+HDh2vgwIF7/Rysy+7vscPhUOfOnXXFFVeouLg4tk/079K+fi/3/HxZsGCBevbsqVdffVW9e/fe52slSY8++misD3Tq1ElTpkypEYNU9V4ccsghWrRokY466ih5vV717NlTjz/+eI39ovHu/vu6ZcsW9ejRQ0cccYTKyspi2w/0bwNaJ0akgD1Ek5527dpJktasWaM33nhDv/jFL9SzZ08VFBTo73//u4477jgtX75cnTp1kiRFIhGdfvrpmjt3riZOnKjf//73Ki0t1Zw5c7Rs2TL17t07dozzzz9fp556ao3j3nTTTXXG85e//EWGYeiPf/yjCgsL9cADD2js2LFavHixvF6vJOmjjz7ShAkTNHz4cN12220yTTN2cvDZZ59p5MiRtdrt0qWL7rzzTklSWVmZrrrqqjqPfcstt+i8887Tr3/9a23fvl0PP/ywxowZo2+//VbZ2dm1HnPFFVfo2GOPlSS99tprev3112vcf+WVV+rpp5/WpZdeqt/97ndau3atHnnkEX377bf63//+J5fLVefrEI/i4uLYc9udZVk688wz9fnnn+uKK67QwIED9d133+n+++/Xjz/+qDfeeKPex9jX87RtW2eeeaY+/vhjXXbZZRo2bJjef/993XDDDdq8ebPuv//+Gm2dfPLJuvjii2tsGzZsmCSppKRE//znP3X++efr8ssvV2lpqZ588kmNHz9eX375ZWy/qGeffValpaWaMmWK/H6/HnzwQZ144on67rvv1KFDh70+n1tvvVV+v7/W9muvvVbPPPOMpk6dqi5duui3v/2tJOmJJ57QiSeeqDvuuEMPPvigJkyYoDVr1igjIyP22JSUFL399tsqLCxUbm6uJKmyslIvvviiUlJSah3rwQcf1JlnnqkLL7xQwWBQL7zwgn7xi19o9uzZOu200/Yae12eeuop3Xzzzbr33nt1wQUXxLa//PLLqqio0FVXXaV27drpyy+/1MMPP6xNmzbp5ZdfrtGGx+PRP//5zxrbvvrqKz300EP7Pf4f//jHWtv+/e9/x37+7LPP9MQTT+j+++9XTk6OJMXen3jf87rav/baa2vF/cUXX2jixInq0qWL1q1bp8cee0zHH3+8li9fXq9pzNE+HwgE9P777+uee+5RSkqKbr/99r0+pr6/Czt27JDf79dVV12lE088Ub/5zW+0evVqzZw5UwsXLtTChQvl8Xh00UUXacaMGXrxxRc1derU2HGCwaBeeeUVnXvuuXX2rX157LHHNHjwYJ155plyOp1666239Nvf/laWZWnKlCl7fdyUKVP0j3/8Q2eeeab+8Ic/6Ntvv9Xdd9+tZcuW6e23307I2p8D+cza2+fgvvzsZz/TOeeco3A4rPnz5+uJJ55QZWVljb4Vrx07dmjNmjX605/+pHPOOUfXX3+9vv766zpfq2nTpmn69OkaO3asrrrqKq1YsUKPPfaYvvrqq1p/H3bt2qVTTz1V5513ns4//3y99NJLuuqqq+R2u/WrX/2qzlh8Pp8mTJggl8uld955R+np6ZIS+7cBrYwNtFJPPfWULcn+8MMP7e3bt9sbN260X3jhBbtdu3a21+u1N23aZNu2bfv9fjsSidR47Nq1a22Px2PPmDEjtu1f//qXLcm+7777ah3LsqzY4yTZd999d619Bg8ebB933HGx2x9//LEtye7cubNdUlIS2/7SSy/ZkuwHH3ww1nbfvn3t8ePHx45j27ZdUVFh9+zZ0z755JNrHeuoo46yDznkkNjt7du325Ls2267LbZt3bp1tsPhsP/yl7/UeOx3331nO53OWttXrlxpS7KfeeaZ2LbbbrvN3v1j5rPPPrMl2c8//3yNx7733nu1tnfv3t0+7bTTasU+ZcoUe8+Prj1jv/HGG+3c3Fx7+PDhNV7Tf//737ZpmvZnn31W4/GPP/64Lcn+3//+V+t4e6rP83zjjTdsSfYdd9xR47E///nPbcMw7FWrVtWIfcqUKXs9XjgctgOBQI1tu3btsjt06GD/6le/im2L9q3d+65t2/bChQttSfa1114b2zZ58mS7e/fusdvLli2zTdO0J0y
|
|||
|
"text/plain": [
|
|||
|
"<Figure size 1000x600 with 1 Axes>"
|
|||
|
]
|
|||
|
},
|
|||
|
"metadata": {},
|
|||
|
"output_type": "display_data"
|
|||
|
},
|
|||
|
{
|
|||
|
"data": {
|
|||
|
"image/png": "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4tlnn8X27dvx4YcfNnsfx3qdUkpcfPHFWLFiBW644QYMGTIEixcvxt13342SkhI8++yz9doaM2YMrrnmmnrbhgwZAgCoqqrCv//9b1x11VW46aabUF1djdmzZ2PcuHH44Ycfwo+r9frrr6O6uhpTp06Fx+PB888/j9GjR2Pjxo1IT09v8vU8+OCD8Hg8DbbffvvteO211zBt2jR0794d//M//wMAePXVVzF69Gg8+uijeP755zF+/Hj88ssviI+PDz/XbDbjv//9Lw4ePIiuXbsCANxuN9555x2YzeYG+3r++edx8cUX4+qrr4bP58Pbb7+Nyy+/HJ988gkuvPDCJmNvzNy5c3H//ffj6aefxqRJk8LbFyxYAJfLhT/96U9ITU3FDz/8gBdeeAH79u3DggUL6rVhMpnw73//u962H3/8Ef/4xz+Ou/+//vWvDbb95z//Cf//m2++wauvvopnn30WaWlpABB+f1r6njfW/u23394g7u+++w5XXnklunfvjt27d+Pll1/GqFGjsGXLlmZNLa495r1eLxYvXoynnnoKZrMZjzzyyAk/t7nn2brS0tLq/S794Q9/OG4cTR3nddU9P3/66ad466236t3fmlhbIxAI4L777muwvaXnl0hzu90YNWoUduzYgWnTpiEvLw8LFizAtddei8rKSvzlL39p8rk7duzAv/71rxbt70SOu6aUl5dj5cqVWLlyJa6//noMHToUy5cvx/Tp07F792688sor4cfeeOONeO211/C73/0Od955J77//ns8/vjjKCwsbPD3raioCL///e/xxz/+EVOmTMHcuXNx+eWX4/PPP8eYMWMajWXv3r04//zz0bdvX7z77rvQ60Mfl10uF0aOHImSkhLccsstyMnJwXfffYfp06ejtLQUzz33XKtfP8UgSRRD5s6dKwHIZcuWyUOHDsm9e/fKt99+W6ampkqLxSL37dsnpZTS4/HIYDBY77m7du2SJpNJPvzww+Ftc+bMkQDkM88802BfqqqGnwdAPvnkkw0eM2DAADly5Mjw7RUrVkgAslu3brKqqiq8/d1335UA5PPPPx9uu3fv3nLcuHHh/Ugppcvlknl5eXLMmDEN9nXGGWfIgQMHhm8fOnRIApAPPfRQeNvu3bulTqeTjz32WL3nbty4Uer1+gbbi4qKJAD52muvhbc99NBDsu6v/jfffCMByDfffLPecz///PMG23Nzc+WFF17YIPapU6fKo08nR8d+zz33yK5du8qhQ4fW69P//Oc/UlEU+c0339R7/iuvvCIByG+//bbB/o7WnNf54YcfSgDy0Ucfrffc3/3ud1IIIXfs2FEv9qlTpza5v0AgIL1eb71tFRUVMj09XV5//fXhbbXHVt1jV0opv//+ewlA3n777eFtU6ZMkbm5ueHbmzZtkoqiyPHjx0sActeuXVJKKcvKyqTRaJTTp08PP/aTTz6RAOQFF1wQPt4KCwulEEI+++yz4ceNHDlSDhgwQA4aNEg+9dRT4e3/+c9/ZPfu3eXZZ58tBwwYUO91uVyuerd9Pp8cOHCgHD16dJP9U3d/te/1f//7X6nX6+Wdd97Z4HFH70NKKR9//HEphJB79uwJb5syZYq02WwNHrtgwQIJQK5YsaLRfUsp5aeffioByPPPP7/BsVqr9vxT29d1Nfc
|
|||
|
"text/plain": [
|
|||
|
"<Figure size 1000x600 with 1 Axes>"
|
|||
|
]
|
|||
|
},
|
|||
|
"metadata": {},
|
|||
|
"output_type": "display_data"
|
|||
|
},
|
|||
|
{
|
|||
|
"data": {
|
|||
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA0kAAAIjCAYAAADWYVDIAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAACC7klEQVR4nOzdeXxU1f3/8fedNfvOvoYtbAKKimjFFRG3WrXWKopK1e+3oFVqF1qt+0/7da+i1ZaidS/uWhURcccNBUXDvgSBBLIvk9nP74+QcUISSCBhJsnr+XjkAXPnzrmfuXMzmfecc8+1jDFGAAAAAABJki3WBQAAAABAPCEkAQAAAEAUQhIAAAAARCEkAQAAAEAUQhIAAAAARCEkAQAAAEAUQhIAAAAARCEkAQAAAEAUR6wLAAAAQHzzer0qLS2Vw+FQ9+7dY10O0O7oSQIAAIiRBx98UOXl5ZHb9913n2pqamJXUJR33nlHZ5xxhjIyMpSYmKg+ffroN7/5TazLAg4IQhK6vMcee0yWZUV+EhISNGzYMM2aNUtFRUWxLg+IS8XFxbIsSzfeeGOsSwE6tNdee0033nijtmzZoqeeekrXX3+9EhMTY12WHnroIU2ZMkUVFRW6//77tWjRIi1atEg333xzrEsDDgiG2wG73HzzzcrNzZXX69VHH32khx9+WG+88YZWrlyppKSkWJcHAOiE/vSnP+mMM87Q/fffL5vNprvvvls2W2y/w167dq1mz56tyy+/XA899JAsy4ppPUAsEJKAXaZOnapDDz1UkvSrX/1K2dnZuueee/TKK6/ol7/8ZYyrAwB0Rsccc4w2b96s/Px89evXT3379o11Sfrb3/6mnj176m9/+xsBCV0Ww+2AZhx//PGSpI0bN0qSSktLde211+qggw5SSkqK0tLSNHXqVK1YsaLRY71er2688UYNGzZMCQkJ6tWrl8466yytX79ekrRp06YGQ/x2/zn22GMjbb333nuyLEvPPfec/vSnP6lnz55KTk7WGWecoS1btjTa9meffaaTTz5Z6enpSkpK0jHHHKOPP/64yed47LHHNrn9poZQPfnkkxo/frwSExOVlZWl8847r8nt7+m5RQuHw7rvvvs0atQoJSQkqEePHrriiitUVlbWYL2BAwfqtNNOa7SdWbNmNWqzqdrvvPPORvtUknw+n2644QYNGTJEbrdb/fr10+9//3v5fL4m99W+Ps+amhr99re/Vb9+/eR2u5WXl6e77rpLxphGtTf1c+utt0qS/H6//vKXv2j8+PFKT09XcnKyjj76aC1ZsqTJuu666y7de++9GjBggBITE3XMMcdo5cqVDda9+OKLNXDgwAbLtmzZosTERFmWpU2bNkWWezweXXLJJUpOTtbIkSO1bNkySVIgENAll1yipKQkjR07Vl9++WWD9uqPsTPPPLPRPrziiitkWZZGjx7dYPldd92lI488UtnZ2UpMTNT48eP1/PPPN/1C7ObYY49t9FrfdtttstlsevrppyPLPvzwQ/385z9X//79I6//Nddco9ra2kb7aE+/q++9994et/3FF180Oi721F70sdrS17zejTfe2GR7F198cWSdzZs369e//rXy8vKUmJio7Oxs/fznP2/wWjdn92Pe6XRq4MCB+t3vfie/39/ix+2txvLycl199dWR35khQ4bor3/9q8LhcIN2w+Gw7r//fh100EFKSEhQt27ddPLJJ0eOwZbuZ0nasWOHZsyYoR49eighIUFjx47V448/vs/Pf8OGDfr5z3+urKwsJSUl6YgjjtB///vfBuvUv7e/9957ysjI0MSJE9W3b1+deuqpLRrKWv/4+h+3261hw4bp9ttvb/D+Un9cFBcXN9vWwIEDG7wGn376qcaPH69f//rX6tGjh9xut0aPHq1//OMfjR7bmve4WbNm6amnnlJeXp4SEhI0fvx4ffDBBw3Wq6832pIlS+R2u/U///M/DZZv3bpVl156aaTGUaNG6V//+tce9xvQUvQkAc2oDzTZ2dmS6v7ovfzyy/r5z3+u3NxcFRUV6ZFHHtExxxyj77//Xr1795YkhUIhnXbaaVq8eLHOO+88/eY3v1FVVZUWLVqklStXavDgwZFt/PKXv9Qpp5zSYLtz5sxpsp7bbrtNlmXpD3/4g3bs2KH77rtPJ554opYvXx4Zv/7uu+9q6tSpGj9+vG644QbZbDbNnz9fxx9/vD788EMdfvjhjdrt27evbr/9dklSdXW1/vd//7fJbV9//fU699xz9atf/Uo7d+7UAw88oEmTJunrr79WRkZGo8dcfvnlOvrooyVJL774ol566aUG919xxRV67LHHdMkll+iqq67Sxo0b9eCDD+rrr7/Wxx9/LKfT2eR+aI3y8vLIc4sWDod1xhln6KOPPtLll1+uESNG6Ntvv9W9996rNWvW6OWXX27xNvb0PI0xOuOMM7RkyRLNmDFD48aN08KFC/W73/1OW7du1b333tugrcmTJ+uiiy5qsGzcuHGSpMrKSv3zn//UL3/5S1122WWqqqrSvHnzNGXKFH3++eeR9er9+9//VlVVlWbOnCmv16v7779fxx9/vL799lv16NGj2efzl7/8RV6vt9Hya665Ro8//rhmzZqlvn376te//rUk6dFHH9Xxxx+vW2+9Vffff7+mTp2qDRs2KDU1NfLYhIQE/fe//9WOHTsis2LV1tbqueeeU0JCQqNt3X///TrjjDN0wQUXyO/369lnn9XPf/5zvf766zr11FObrb0p8+fP13XXXae7775b559/fmT5ggUL5PF49L//+7/Kzs7W559/rgceeEA//PCDFixY0KANt9utf/7znw2WffHFF/rb3/621+3/4Q9/aLTsiSeeiPz/ww8/1KOPPqp7771XOTk5khR5fVr7mjfV/jXXXNOo7k8++UTnnXee+vbtq02bNunhhx/Wscceq++//75FQ4vrj3mfz6eFCxfqrrvuUkJCgm655ZYm1+/WrVuDmup/T6KX1b8vejweHXPMMdq6dauuuOIK9e/fX5988onmzJmj7du367777os8ZsaMGXrsscc0depU/epXv1IwGNSHH36oTz/9VIceemiL93Ntba2OPfZYrVu3TrNmzVJubq4WLFigiy++WOXl5Y0mKtjb8y8qKtKRRx4pj8ejq666StnZ2Xr88cd1xhln6Pnnn9fPfvazZvftBx98oDfeeGOvr0G0P/3pTxoxYkTkd+pPf/qTunfvrhkzZrSqnWglJSX68ssv5XA4NHPmTA0ePFgvv/yyLr/8cpWUlOiPf/yjpNa/x73//vt67rnndNVVV8ntduuhhx7SySefrM8//7zRlyX1VqxYoTPPPFOnnHKK5s6dG1leVFSkI444IhK+unXrpjfffFMzZsxQZWWlrr766n1+/oAkyQBd3Pz5840k884775idO3eaLVu2mGeffdZkZ2ebxMRE88MPPxhjjPF6vSYUCjV47MaNG43b7TY333xzZNm//vUvI8ncc889jbYVDocjj5Nk7rzzzkbrjBo1yhxzzDGR20uWLDGSTJ8+fUxlZWVk+X/+8x8jydx///2RtocOHWqmTJkS2Y4xxng8HpObm2smT57caFtHHnmkGT16dOT2zp07jSRzww03RJZt2rTJ2O12c9tttzV47LfffmscDkej5WvXrjWSzOOPPx5ZdsMNN5jot5sPP/zQSDJPPfVUg8e+9dZbjZYPGDDAnHrqqY1qnzlzptn9LWz32n//+9+b7t27m/HjxzfYp0888YSx2Wzmww8/bPD4v//970aS+fjjjxttb3cteZ4vv/yykWRuvfXWBo8955xzjGVZZt26dQ1qnzlzZrPbCwaDxufzNVhWVlZmevToYS699NLIsvpjK/rYNcaYzz77zEgy11xzTWTZ9OnTzYABAyK3V65caWw2m5k6daqRZDZu3GiMMaawsNC4XC4zZ86cyLqvv/66kWROOeWUyPGWn59vLMsy9957b2S9Y445xowaNcqMGTPG3HXXXZHlTzzxhOnbt685+uijzahRoxo8L4/H0+C23+83o0ePNscff3yz+yd
|
|||
|
"text/plain": [
|
|||
|
"<Figure size 1000x600 with 1 Axes>"
|
|||
|
]
|
|||
|
},
|
|||
|
"metadata": {},
|
|||
|
"output_type": "display_data"
|
|||
|
},
|
|||
|
{
|
|||
|
"name": "stdout",
|
|||
|
"output_type": "stream",
|
|||
|
"text": [
|
|||
|
"Статистические показатели для обучающей выборки:\n",
|
|||
|
"Среднее значение: 1.08\n",
|
|||
|
"Стандартное отклонение: 0.85\n",
|
|||
|
"Минимальное значение: 0.00\n",
|
|||
|
"Максимальное значение: 5.39\n",
|
|||
|
"Количество наблюдений: 1820\n",
|
|||
|
"\n",
|
|||
|
"Статистические показатели для валидационной выборки:\n",
|
|||
|
"Среднее значение: 1.04\n",
|
|||
|
"Стандартное отклонение: 0.77\n",
|
|||
|
"Минимальное значение: 0.00\n",
|
|||
|
"Максимальное значение: 3.72\n",
|
|||
|
"Количество наблюдений: 390\n",
|
|||
|
"\n",
|
|||
|
"Статистические показатели для тестовой выборки:\n",
|
|||
|
"Среднее значение: 1.03\n",
|
|||
|
"Стандартное отклонение: 0.75\n",
|
|||
|
"Минимальное значение: 0.00\n",
|
|||
|
"Максимальное значение: 4.17\n",
|
|||
|
"Количество наблюдений: 390\n",
|
|||
|
"\n"
|
|||
|
]
|
|||
|
}
|
|||
|
],
|
|||
|
"source": [
|
|||
|
"df2['networth_log'] = np.log(df2['Networth'])\n",
|
|||
|
"\n",
|
|||
|
"X = df2.drop(['Networth', 'networth_log'], axis=1) \n",
|
|||
|
"y = df2['networth_log'] \n",
|
|||
|
"\n",
|
|||
|
"X = X.select_dtypes(include='number')\n",
|
|||
|
"\n",
|
|||
|
"X_train, X_temp, y_train, y_temp = train_test_split(X, y, test_size=0.3, random_state=42)\n",
|
|||
|
"\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",
|
|||
|
"def plot_distribution(data, title):\n",
|
|||
|
" \"\"\"Построение гистограммы распределения целевого признака\"\"\"\n",
|
|||
|
" plt.figure(figsize=(10, 6))\n",
|
|||
|
" sns.histplot(data, kde=True, bins=30, color='skyblue')\n",
|
|||
|
" plt.title(title)\n",
|
|||
|
" plt.xlabel('Logarithm of Price')\n",
|
|||
|
" plt.ylabel('Count')\n",
|
|||
|
" plt.grid(True)\n",
|
|||
|
" plt.show()\n",
|
|||
|
"\n",
|
|||
|
"plot_distribution(y_train, 'Распределение логарифма капитала в обучающей выборке')\n",
|
|||
|
"plot_distribution(y_val, 'Распределение логарифма капитала в валидационной выборке')\n",
|
|||
|
"plot_distribution(y_test, 'Распределение логарифма капитала в тестовой выборке')\n",
|
|||
|
"\n",
|
|||
|
"def get_statistics(df2, name):\n",
|
|||
|
" print(f\"Статистические показатели для {name} выборки:\")\n",
|
|||
|
" print(f\"Среднее значение: {df2.mean():.2f}\")\n",
|
|||
|
" print(f\"Стандартное отклонение: {df2.std():.2f}\")\n",
|
|||
|
" print(f\"Минимальное значение: {df2.min():.2f}\")\n",
|
|||
|
" print(f\"Максимальное значение: {df2.max():.2f}\")\n",
|
|||
|
" print(f\"Количество наблюдений: {df2.count()}\\n\")\n",
|
|||
|
"\n",
|
|||
|
"get_statistics(y_train, \"обучающей\")\n",
|
|||
|
"get_statistics(y_val, \"валидационной\")\n",
|
|||
|
"get_statistics(y_test, \"тестовой\")"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "markdown",
|
|||
|
"metadata": {},
|
|||
|
"source": [
|
|||
|
"Различия между обучающей, валидационной и тестовой выборками минимальны, и это свидетельствует о хорошем разбиении данных. Методы аугментации данных здесь не требуются, так как количество данных достаточно велико, и выборки сбалансированы по ключевым показателям."
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "markdown",
|
|||
|
"metadata": {},
|
|||
|
"source": [
|
|||
|
"**Выполнить приращение данных методами выборки с избытком (oversampling) и выборки с недостатком (undersampling):**"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 101,
|
|||
|
"metadata": {},
|
|||
|
"outputs": [
|
|||
|
{
|
|||
|
"name": "stdout",
|
|||
|
"output_type": "stream",
|
|||
|
"text": [
|
|||
|
"Размеры после oversampling: (1945, 6) (1945,)\n",
|
|||
|
"Размеры после undersampling: (1730, 6) (1730,)\n"
|
|||
|
]
|
|||
|
}
|
|||
|
],
|
|||
|
"source": [
|
|||
|
"from imblearn.over_sampling import RandomOverSampler\n",
|
|||
|
"oversampler = RandomOverSampler(random_state=12)\n",
|
|||
|
"X_train_over, y_train_over = oversampler.fit_resample(X_train, y_train)\n",
|
|||
|
"\n",
|
|||
|
"undersampler = RandomUnderSampler(random_state=12)\n",
|
|||
|
"X_train_under, y_train_under = undersampler.fit_resample(X_train, y_train)\n",
|
|||
|
"\n",
|
|||
|
"print(\"Размеры после oversampling:\", X_train_over.shape, y_train_over.shape)\n",
|
|||
|
"print(\"Размеры после undersampling:\", X_train_under.shape, y_train_under.shape)"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "markdown",
|
|||
|
"metadata": {},
|
|||
|
"source": [
|
|||
|
"## Pima Indians Diabetes Database\n",
|
|||
|
"https://www.kaggle.com/datasets/uciml/pima-indians-diabetes-database"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 119,
|
|||
|
"metadata": {},
|
|||
|
"outputs": [
|
|||
|
{
|
|||
|
"name": "stdout",
|
|||
|
"output_type": "stream",
|
|||
|
"text": [
|
|||
|
"Index(['Pregnancies', 'Glucose', 'BloodPressure', 'SkinThickness', 'Insulin',\n",
|
|||
|
" 'BMI', 'DiabetesPedigreeFunction', 'Age', 'Outcome'],\n",
|
|||
|
" dtype='object')\n"
|
|||
|
]
|
|||
|
}
|
|||
|
],
|
|||
|
"source": [
|
|||
|
"df3 = pd.read_csv(\".//static//csv//diabetes.csv\")\n",
|
|||
|
"print(df3.columns)"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "markdown",
|
|||
|
"metadata": {},
|
|||
|
"source": [
|
|||
|
"Набор данных Pima Indians Diabetes Database представляет собой сложную среду, где факторы риска диабета, такие как количество беременностей, уровень глюкозы, давление и индекс массы тела, варьируются в зависимости от множества параметров. Основная проблема заключается в том, как правильно интерпретировать эти данные, выявлять ключевые взаимосвязи между признаками и на основе этого строить точные прогнозы вероятности возникновения диабета."
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 104,
|
|||
|
"metadata": {},
|
|||
|
"outputs": [
|
|||
|
{
|
|||
|
"name": "stdout",
|
|||
|
"output_type": "stream",
|
|||
|
"text": [
|
|||
|
"<bound method DataFrame.info of 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",
|
|||
|
"... ... ... ... ... ... \n",
|
|||
|
"2595 2578 Jorge Gallardo Ballart 1.0 80 Spain \n",
|
|||
|
"2596 2578 Nari Genomal 1.0 82 Philippines \n",
|
|||
|
"2597 2578 Ramesh Genomal 1.0 71 Philippines \n",
|
|||
|
"2598 2578 Sunder Genomal 1.0 68 Philippines \n",
|
|||
|
"2599 2578 Horst-Otto Gerberding 1.0 69 Germany \n",
|
|||
|
"\n",
|
|||
|
" Source Industry networth_log \\\n",
|
|||
|
"0 Tesla, SpaceX Automotive 5.389072 \n",
|
|||
|
"1 Amazon Technology 5.141664 \n",
|
|||
|
"2 LVMH Fashion & Retail 5.062595 \n",
|
|||
|
"3 Microsoft Technology 4.859812 \n",
|
|||
|
"4 Berkshire Hathaway Finance & Investments 4.770685 \n",
|
|||
|
"... ... ... ... \n",
|
|||
|
"2595 pharmaceuticals Healthcare 0.000000 \n",
|
|||
|
"2596 apparel Fashion & Retail 0.000000 \n",
|
|||
|
"2597 apparel Fashion & Retail 0.000000 \n",
|
|||
|
"2598 garments Fashion & Retail 0.000000 \n",
|
|||
|
"2599 flavors and fragrances Food & Beverage 0.000000 \n",
|
|||
|
"\n",
|
|||
|
" networth_category \n",
|
|||
|
"0 4 \n",
|
|||
|
"1 4 \n",
|
|||
|
"2 4 \n",
|
|||
|
"3 4 \n",
|
|||
|
"4 4 \n",
|
|||
|
"... ... \n",
|
|||
|
"2595 0 \n",
|
|||
|
"2596 0 \n",
|
|||
|
"2597 0 \n",
|
|||
|
"2598 0 \n",
|
|||
|
"2599 0 \n",
|
|||
|
"\n",
|
|||
|
"[2600 rows x 9 columns]> \n",
|
|||
|
"\n"
|
|||
|
]
|
|||
|
}
|
|||
|
],
|
|||
|
"source": [
|
|||
|
"print(df2.info, \"\\n\")"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "markdown",
|
|||
|
"metadata": {},
|
|||
|
"source": [
|
|||
|
"**Объектами наблюдения** являются пациенты, которые представляют собой индейцев Пима. Каждый пациент представлен одной строкой в таблице, которая описывает его основные характеристики.\n",
|
|||
|
"\n",
|
|||
|
"**Анализ сведений о каждом наборе данных**: В данном случае каждый набор данных — это информация об отдельном пациенте. Здесь присутствуют атрибуты такие как: Количество беременностей, Уровень глюкозы, Давление, Толщина кожи, Инсулин, Индекс массы тела, Генетическая предрасположенность к диабету, Возраст, Результат.\n"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 105,
|
|||
|
"metadata": {},
|
|||
|
"outputs": [
|
|||
|
{
|
|||
|
"data": {
|
|||
|
"image/png": "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
|
|||
|
"text/plain": [
|
|||
|
"<Figure size 800x600 with 2 Axes>"
|
|||
|
]
|
|||
|
},
|
|||
|
"metadata": {},
|
|||
|
"output_type": "display_data"
|
|||
|
}
|
|||
|
],
|
|||
|
"source": [
|
|||
|
"correlation_matrix = df3[['Glucose', 'Insulin', 'BMI', 'Outcome']].corr()\n",
|
|||
|
"\n",
|
|||
|
"plt.figure(figsize=(8, 6))\n",
|
|||
|
"sns.heatmap(correlation_matrix, annot=True, cmap='coolwarm', fmt=\".2f\")\n",
|
|||
|
"plt.title('Корреляция между атрибутами и наличием диабета')\n",
|
|||
|
"plt.show()"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "markdown",
|
|||
|
"metadata": {},
|
|||
|
"source": [
|
|||
|
"1. Glucose и Outcome (0.47):\n",
|
|||
|
"\n",
|
|||
|
"Уровень глюкозы показывает довольно сильную положительную корреляцию с наличием диабета (корреляция 0.47). Это значит, что чем выше уровень глюкозы в крови, тем больше вероятность развития диабета.\n",
|
|||
|
"\n",
|
|||
|
"2. BMI и Outcome (0.29):\n",
|
|||
|
"\n",
|
|||
|
"Индекс массы тела (BMI) также имеет положительную, но более слабую корреляцию с диабетом (0.29). Это указывает на то, что более высокий BMI также связан с повышенным риском диабета, хотя эта связь слабее, чем с уровнем глюкозы.\n",
|
|||
|
"\n",
|
|||
|
"3. Insulin и Outcome (0.13):\n",
|
|||
|
"\n",
|
|||
|
"Уровень инсулина имеет самую слабую положительную корреляцию с наличием диабета (0.13). Это может указывать на то, что, хотя инсулин важен для метаболических процессов, в данном наборе данных его влияние на вероятность развития диабета не является значительным.\n",
|
|||
|
"\n",
|
|||
|
"4. Взаимосвязь между атрибутами:\n",
|
|||
|
"\n",
|
|||
|
"* Glucose и Insulin (0.33): Существует умеренная положительная корреляция между уровнем глюкозы и инсулина, что ожидаемо, так как инсулин контролирует уровень глюкозы в организме.\n",
|
|||
|
"* Glucose и BMI (0.22): Также наблюдается слабая положительная корреляция между уровнем глюкозы и BMI, что может свидетельствовать о том, что ожирение в какой-то мере связано с повышением уровня глюкозы в крови."
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "markdown",
|
|||
|
"metadata": {},
|
|||
|
"source": [
|
|||
|
"**Пример бизнес-целей:**\n",
|
|||
|
"1. Прогнозирование риска диабета\n",
|
|||
|
"\n",
|
|||
|
"Цель: Создать модель, которая точно предсказывает вероятность развития диабета на основе медицинских параметров пациента, таких как уровень глюкозы, индекс массы тела и количество беременностей.\n",
|
|||
|
"\n",
|
|||
|
"Эффекты для бизнеса: Повышение эффективности диагностики диабета на ранних стадиях, что позволяет своевременно предложить лечение или профилактические меры. Это может сократить затраты на лечение хронических стадий диабета и улучшить здоровье пациентов.\n",
|
|||
|
"\n",
|
|||
|
"Вход:\n",
|
|||
|
"\n",
|
|||
|
"* Уровень глюкозы\n",
|
|||
|
"* Индекс массы тела (BMI)\n",
|
|||
|
"* Количество беременностей\n",
|
|||
|
"\n",
|
|||
|
"Целевой признак: Наличие диабета (Outcome).\n",
|
|||
|
"\n",
|
|||
|
"2. Анализ факторов риска диабета\n",
|
|||
|
"\n",
|
|||
|
"Цель: Провести анализ влияния различных факторов (например, возраст, уровень инсулина, давление) на вероятность развития диабета для оптимизации профилактических программ.\n",
|
|||
|
"\n",
|
|||
|
"Эффекты для бизнеса: Улучшение стратегии профилактики диабета, нацеленное на людей с высоким риском заболевания. Это поможет лучше планировать медицинские ресурсы, а также разработать программы по улучшению здоровья для целевых групп населения.\n",
|
|||
|
"\n",
|
|||
|
"Вход:\n",
|
|||
|
"\n",
|
|||
|
"* Возраст\n",
|
|||
|
"* Уровень инсулина\n",
|
|||
|
"* Артериальное давление\n",
|
|||
|
"\n",
|
|||
|
"Целевой признак: Вероятность развития диабета.\n",
|
|||
|
"\n",
|
|||
|
"3. Оценка состояния здоровья пациентов\n",
|
|||
|
"\n",
|
|||
|
"Цель: Разработать модель для оценки общего состояния здоровья пациента на основе параметров, таких как индекс массы тела (BMI) и артериальное давление. Это поможет предсказать риски не только диабета, но и других заболеваний, связанных с метаболическим синдромом.\n",
|
|||
|
"\n",
|
|||
|
"Эффекты для бизнеса: Повышение эффективности медицинских осмотров и точности оценки состояния здоровья пациентов. Это позволяет медицинским организациям улучшить предоставляемые услуги и повысить удовлетворенность пациентов.\n",
|
|||
|
"\n",
|
|||
|
"Вход:\n",
|
|||
|
"\n",
|
|||
|
"* Индекс массы тела (BMI)\n",
|
|||
|
"* Артериальное давление\n",
|
|||
|
"* Уровень глюкозы\n",
|
|||
|
"\n",
|
|||
|
"Целевой признак: Оценка состояния здоровья пациента (например, классификация по уровням риска)."
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "markdown",
|
|||
|
"metadata": {},
|
|||
|
"source": [
|
|||
|
"**Опредиление проблем данных с помощью кода:**"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 109,
|
|||
|
"metadata": {},
|
|||
|
"outputs": [
|
|||
|
{
|
|||
|
"name": "stdout",
|
|||
|
"output_type": "stream",
|
|||
|
"text": [
|
|||
|
"Максимальные значения:\n",
|
|||
|
" Pregnancies 17.00\n",
|
|||
|
"Glucose 199.00\n",
|
|||
|
"BloodPressure 122.00\n",
|
|||
|
"SkinThickness 99.00\n",
|
|||
|
"Insulin 846.00\n",
|
|||
|
"BMI 67.10\n",
|
|||
|
"DiabetesPedigreeFunction 2.42\n",
|
|||
|
"Age 81.00\n",
|
|||
|
"Outcome 1.00\n",
|
|||
|
"dtype: float64 \n",
|
|||
|
"\n",
|
|||
|
"Признаки с нулевыми значениями:\n",
|
|||
|
" Index(['Pregnancies', 'Glucose', 'BloodPressure', 'SkinThickness', 'Insulin',\n",
|
|||
|
" 'BMI', 'Outcome'],\n",
|
|||
|
" dtype='object') \n",
|
|||
|
"\n",
|
|||
|
"Признаки с низкой дисперсией:\n",
|
|||
|
" Series([], dtype: float64) \n",
|
|||
|
"\n"
|
|||
|
]
|
|||
|
}
|
|||
|
],
|
|||
|
"source": [
|
|||
|
"max_value = df3.max(axis=0)\n",
|
|||
|
"\n",
|
|||
|
"columns_with_zero = df3.columns[(df3 == 0).any()]\n",
|
|||
|
"\n",
|
|||
|
"numeric_data = df3.select_dtypes(include='number')\n",
|
|||
|
"\n",
|
|||
|
"shum = numeric_data.var()\n",
|
|||
|
"\n",
|
|||
|
"low_dispers = 0.1\n",
|
|||
|
"low_var_columns = shum[shum < low_dispers]\n",
|
|||
|
"\n",
|
|||
|
"\n",
|
|||
|
"print(\"Максимальные значения:\\n\", max_value, \"\\n\")\n",
|
|||
|
"print(\"Признаки с нулевыми значениями:\\n\", columns_with_zero, \"\\n\")\n",
|
|||
|
"print(\"Признаки с низкой дисперсией:\\n\", low_var_columns, \"\\n\")"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 108,
|
|||
|
"metadata": {},
|
|||
|
"outputs": [
|
|||
|
{
|
|||
|
"data": {
|
|||
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA7gAAANRCAYAAADJchARAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdd1gURwMG8PcO4ehNQHpHBBtW7CWiaOwmts+CJfYSe0tiN8Zu7LFji72joqLYYuxdwAZ2UHqTevv9gZ6cdygqxyF5f8+zzwNzs7Mzc3t7NztlRYIgCCAiIiIiIiL6xonVnQEiIiIiIiKigsAGLhERERERERULbOASERERERFRscAGLhERERERERULbOASERERERFRscAGLhERERERERULbOASERERERFRscAGLhERERERERULbOASERERERFRscAGLhERERERERULbOASfSPWr18PkUiEy5cvK7y2atUqiEQitGnTBtnZ2WrIHRERERGR+rGBS/SN27NnDwYMGIC6deti69at0NDQUHeWiIiIiIjUgg1com9YcHAwOnfuDE9PTxw4cADa2trqzhIRERERkdqwgUv0jbp+/Tpat24NKysrBAYGwsjISCHOjh07UKVKFejo6MDMzAxdu3bF8+fP5eL06NED+vr6ePToEXx9faGnpwdra2tMnToVgiDI4kVEREAkEmHu3LlYsGABHBwcoKOjg/r16+P27dsKxw4NDcWPP/4IU1NTaGtro2rVqti/f7/SsjRo0AAikUhhW79+vVy85cuXo1y5ctDV1ZWLt3PnTrm0ypUrp3CMuXPnQiQSISIiQhb2bth37jCpVIoKFSooPf6JEydQt25d6OnpwdjYGK1bt0ZISIhcnMmTJ0MkEiE6Olou/PLlywppvqv7D+3cuRMikQjBwcGysDNnzqB9+/awt7eHRCKBnZ0dhg8fjjdv3ijdv2rVqjAwMJCrp7lz5yrEze1dfWhpaeH169dyr50/f16WTu5h8vnJV48ePZS+v7m3d++Bo6MjWrRogaNHj8LLywva2trw9PTE7t27leY1P+/d59RzRkYGJk6ciCpVqsDIyAh6enqoW7cuTp48+dG6y+3dZ+Vj5cytIM9/Zd6dk3ltyurqU9cDAEhJScHIkSNhZ2cHiUQCd3d3zJ07VyFe7mNpaGjAxsYGffv2RXx8vFy89PR0TJo0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
|
|||
|
"text/plain": [
|
|||
|
"<Figure size 1000x800 with 2 Axes>"
|
|||
|
]
|
|||
|
},
|
|||
|
"metadata": {},
|
|||
|
"output_type": "display_data"
|
|||
|
}
|
|||
|
],
|
|||
|
"source": [
|
|||
|
"plt.figure(figsize=(10, 8))\n",
|
|||
|
"numeric_data = df3.select_dtypes(include='number')\n",
|
|||
|
"correlation_matrix = numeric_data.corr()\n",
|
|||
|
"sns.heatmap(correlation_matrix, annot=True, cmap='coolwarm', vmin=-1, vmax=1)\n",
|
|||
|
"plt.title('Корреляционная матрица для проверки просачивания данных')\n",
|
|||
|
"plt.show()"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "markdown",
|
|||
|
"metadata": {},
|
|||
|
"source": [
|
|||
|
"В данных которые содержаться в таблице нету ни низкой дисперсии, ни выбросов связанных с аномально высокими значениями. Есть только нулевые значения. По графику видно что в целом, данные не указывают на очевидное просачивание, поскольку корреляции не слишком высокие и ожидаемы. Данные хорошо сформированны поэтому здесь нет проблем для анализа."
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 120,
|
|||
|
"metadata": {},
|
|||
|
"outputs": [
|
|||
|
{
|
|||
|
"name": "stdout",
|
|||
|
"output_type": "stream",
|
|||
|
"text": [
|
|||
|
"Пропущенные значения до обработки:\n",
|
|||
|
"Pregnancies 0\n",
|
|||
|
"Glucose 0\n",
|
|||
|
"BloodPressure 0\n",
|
|||
|
"SkinThickness 0\n",
|
|||
|
"Insulin 0\n",
|
|||
|
"BMI 0\n",
|
|||
|
"DiabetesPedigreeFunction 0\n",
|
|||
|
"Age 0\n",
|
|||
|
"Outcome 0\n",
|
|||
|
"dtype: int64\n",
|
|||
|
"Пропущенные значения после обработки:\n",
|
|||
|
"Pregnancies 0\n",
|
|||
|
"Glucose 0\n",
|
|||
|
"BloodPressure 0\n",
|
|||
|
"SkinThickness 0\n",
|
|||
|
"Insulin 0\n",
|
|||
|
"BMI 0\n",
|
|||
|
"DiabetesPedigreeFunction 0\n",
|
|||
|
"Age 0\n",
|
|||
|
"Outcome 0\n",
|
|||
|
"dtype: int64\n"
|
|||
|
]
|
|||
|
}
|
|||
|
],
|
|||
|
"source": [
|
|||
|
"numeric_columns = ['Pregnancies', 'Glucose', 'BloodPressure', 'SkinThickness', 'Insulin', 'BMI', 'Outcome']\n",
|
|||
|
"df3[numeric_columns] = df3[numeric_columns].replace(\"-\", np.nan)\n",
|
|||
|
"print(\"Пропущенные значения до обработки:\")\n",
|
|||
|
"print(df3.isnull().sum())\n",
|
|||
|
"\n",
|
|||
|
"df3['Pregnancies'] = df3['Pregnancies'].fillna(0) \n",
|
|||
|
"df3['Glucose'] = df3['Glucose'].astype(float) \n",
|
|||
|
"df3.dropna(subset=['BloodPressure'], inplace=True) \n",
|
|||
|
"\n",
|
|||
|
"print(\"Пропущенные значения после обработки:\")\n",
|
|||
|
"print(df3.isnull().sum())"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "markdown",
|
|||
|
"metadata": {},
|
|||
|
"source": [
|
|||
|
"**Оценить качество каждого набора данных:** "
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "markdown",
|
|||
|
"metadata": {},
|
|||
|
"source": [
|
|||
|
"1. Информативность: Набор данных предоставляет достаточную информацию для анализа характиристик пациента с или без деабета.\n",
|
|||
|
"2. Степень покрытия: Включает данные только Индии, поэтому поностью на них основываться нельзя.\n",
|
|||
|
"3. Соответствие реальным данным: Данные в целом соответствуют реальным значениям.\n",
|
|||
|
"4. Согласованность меток: в основном касается бинарного признака Outcome, который должен принимать только два значения: 1 (диабет) и 0 (отсутствие диабета)"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "markdown",
|
|||
|
"metadata": {},
|
|||
|
"source": [
|
|||
|
"**Выполнить разбиение каждого набора данных на обучающую, контрольную и тестовую выборки:**"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 122,
|
|||
|
"metadata": {},
|
|||
|
"outputs": [
|
|||
|
{
|
|||
|
"name": "stdout",
|
|||
|
"output_type": "stream",
|
|||
|
"text": [
|
|||
|
"Размер обучающей выборки: 460\n",
|
|||
|
"Размер контрольной выборки: 154\n",
|
|||
|
"Размер тестовой выборки: 154\n"
|
|||
|
]
|
|||
|
}
|
|||
|
],
|
|||
|
"source": [
|
|||
|
"X = df3.drop('Outcome', axis=1) \n",
|
|||
|
"y = df3['Outcome'] \n",
|
|||
|
"\n",
|
|||
|
"X_train, X_temp, y_train, y_temp = train_test_split(X, y, test_size=0.4, random_state=42)\n",
|
|||
|
"\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(\"Размер обучающей выборки:\", X_train.shape[0])\n",
|
|||
|
"print(\"Размер контрольной выборки:\", X_val.shape[0])\n",
|
|||
|
"print(\"Размер тестовой выборки:\", X_test.shape[0])"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 124,
|
|||
|
"metadata": {},
|
|||
|
"outputs": [
|
|||
|
{
|
|||
|
"name": "stdout",
|
|||
|
"output_type": "stream",
|
|||
|
"text": [
|
|||
|
"Сбалансированность обучающей выборки:\n",
|
|||
|
"Outcome\n",
|
|||
|
"0 0.65\n",
|
|||
|
"1 0.35\n",
|
|||
|
"Name: proportion, dtype: float64\n",
|
|||
|
"\n",
|
|||
|
"Сбалансированность контрольной выборки:\n",
|
|||
|
"Outcome\n",
|
|||
|
"0 0.649351\n",
|
|||
|
"1 0.350649\n",
|
|||
|
"Name: proportion, dtype: float64\n",
|
|||
|
"\n",
|
|||
|
"Сбалансированность тестовой выборки:\n",
|
|||
|
"Outcome\n",
|
|||
|
"0 0.655844\n",
|
|||
|
"1 0.344156\n",
|
|||
|
"Name: proportion, dtype: float64\n"
|
|||
|
]
|
|||
|
}
|
|||
|
],
|
|||
|
"source": [
|
|||
|
"X = df3.drop('Outcome', axis=1) \n",
|
|||
|
"y = df3['Outcome'] \n",
|
|||
|
"\n",
|
|||
|
"# Разбиение на обучающую и оставшуюся часть (контрольная + тестовая)\n",
|
|||
|
"X_train, X_temp, y_train, y_temp = train_test_split(X, y, test_size=0.4, random_state=42, stratify=y)\n",
|
|||
|
"\n",
|
|||
|
"# Разбиение оставшейся части на контрольную и тестовую выборки\n",
|
|||
|
"X_val, X_test, y_val, y_test = train_test_split(X_temp, y_temp, test_size=0.5, random_state=42, stratify=y_temp)\n",
|
|||
|
"\n",
|
|||
|
"# Функция для проверки сбалансированности выборок\n",
|
|||
|
"def check_balance(y_train, y_val, y_test):\n",
|
|||
|
" print(\"Сбалансированность обучающей выборки:\")\n",
|
|||
|
" print(y_train.value_counts(normalize=True))\n",
|
|||
|
" \n",
|
|||
|
" print(\"\\nСбалансированность контрольной выборки:\")\n",
|
|||
|
" print(y_val.value_counts(normalize=True))\n",
|
|||
|
" \n",
|
|||
|
" print(\"\\nСбалансированность тестовой выборки:\")\n",
|
|||
|
" print(y_test.value_counts(normalize=True))\n",
|
|||
|
"\n",
|
|||
|
"# Проверка сбалансированности\n",
|
|||
|
"check_balance(y_train, y_val, y_test)"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "markdown",
|
|||
|
"metadata": {},
|
|||
|
"source": [
|
|||
|
"**Выполнить приращение данных методами выборки с избытком (oversampling) и выборки с недостатком (undersampling):**"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 126,
|
|||
|
"metadata": {},
|
|||
|
"outputs": [
|
|||
|
{
|
|||
|
"name": "stdout",
|
|||
|
"output_type": "stream",
|
|||
|
"text": [
|
|||
|
"Сбалансированность обучающей выборки после SMOTE:\n",
|
|||
|
"Outcome\n",
|
|||
|
"1 0.5\n",
|
|||
|
"0 0.5\n",
|
|||
|
"Name: proportion, dtype: float64\n",
|
|||
|
"Сбалансированность обучающей выборки:\n",
|
|||
|
"Outcome\n",
|
|||
|
"1 0.5\n",
|
|||
|
"0 0.5\n",
|
|||
|
"Name: proportion, dtype: float64\n",
|
|||
|
"\n",
|
|||
|
"Сбалансированность контрольной выборки:\n",
|
|||
|
"Outcome\n",
|
|||
|
"0 0.649351\n",
|
|||
|
"1 0.350649\n",
|
|||
|
"Name: proportion, dtype: float64\n",
|
|||
|
"\n",
|
|||
|
"Сбалансированность тестовой выборки:\n",
|
|||
|
"Outcome\n",
|
|||
|
"0 0.655844\n",
|
|||
|
"1 0.344156\n",
|
|||
|
"Name: proportion, dtype: float64\n"
|
|||
|
]
|
|||
|
}
|
|||
|
],
|
|||
|
"source": [
|
|||
|
"# Разделение на признаки (X) и целевую переменную (y)\n",
|
|||
|
"X = df3.drop('Outcome', axis=1) # Признаки\n",
|
|||
|
"y = df3['Outcome'] # Целевая переменная\n",
|
|||
|
"\n",
|
|||
|
"# Разбиение на обучающую и оставшуюся часть (контрольная + тестовая)\n",
|
|||
|
"X_train, X_temp, y_train, y_temp = train_test_split(X, y, test_size=0.4, random_state=42, stratify=y)\n",
|
|||
|
"\n",
|
|||
|
"# Разбиение оставшейся части на контрольную и тестовую выборки\n",
|
|||
|
"X_val, X_test, y_val, y_test = train_test_split(X_temp, y_temp, test_size=0.5, random_state=42, stratify=y_temp)\n",
|
|||
|
"\n",
|
|||
|
"# Применение SMOTE для балансировки обучающей выборки\n",
|
|||
|
"smote = SMOTE(random_state=42)\n",
|
|||
|
"X_train_resampled, y_train_resampled = smote.fit_resample(X_train, y_train)\n",
|
|||
|
"\n",
|
|||
|
"# Функция для проверки сбалансированности выборок\n",
|
|||
|
"def check_balance(y_train, y_val, y_test):\n",
|
|||
|
" print(\"Сбалансированность обучающей выборки:\")\n",
|
|||
|
" print(y_train.value_counts(normalize=True))\n",
|
|||
|
" \n",
|
|||
|
" print(\"\\nСбалансированность контрольной выборки:\")\n",
|
|||
|
" print(y_val.value_counts(normalize=True))\n",
|
|||
|
" \n",
|
|||
|
" print(\"\\nСбалансированность тестовой выборки:\")\n",
|
|||
|
" print(y_test.value_counts(normalize=True))\n",
|
|||
|
"\n",
|
|||
|
"# Проверка сбалансированности после SMOTE\n",
|
|||
|
"print(\"Сбалансированность обучающей выборки после SMOTE:\")\n",
|
|||
|
"print(y_train_resampled.value_counts(normalize=True))\n",
|
|||
|
"\n",
|
|||
|
"# Проверка сбалансированности контрольной и тестовой выборок\n",
|
|||
|
"check_balance(y_train_resampled, y_val, y_test)"
|
|||
|
]
|
|||
|
}
|
|||
|
],
|
|||
|
"metadata": {
|
|||
|
"kernelspec": {
|
|||
|
"display_name": "aimenv",
|
|||
|
"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
|
|||
|
}
|