diff --git a/lab_3/lab3.ipynb b/lab_3/lab3.ipynb index cccfa02..a091202 100644 --- a/lab_3/lab3.ipynb +++ b/lab_3/lab3.ipynb @@ -27,9 +27,56 @@ "- Идентификация ключевых факторов: анализ факторов, влияющих на развитие сердечных заболеваний, чтобы выявить наиболее значимые признаки для предсказания." ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Краткое описание для колонок:\n", + "1. **State** — штат проживания респондента.\n", + "2. **Sex** — пол респондента.\n", + "3. **GeneralHealth** — общее самочувствие респондента.\n", + "4. **PhysicalHealthDays** — количество дней, когда респондент испытывал физические ограничения.\n", + "5. **MentalHealthDays** — количество дней с психическими ограничениями.\n", + "6. **LastCheckupTime** — время последнего медицинского осмотра.\n", + "7. **PhysicalActivities** — уровень физической активности респондента.\n", + "8. **SleepHours** — количество часов сна.\n", + "9. **RemovedTeeth** — наличие отсутствующих зубов.\n", + "10. **HadHeartAttack** — был ли у респондента сердечный приступ (целевая переменная).\n", + "11. **HadAngina** — был ли у респондента стенокардия.\n", + "12. **HadStroke** — был ли у респондента инсульт.\n", + "13. **HadAsthma** — был ли у респондента астма.\n", + "14. **HadSkinCancer** — был ли у респондента рак кожи.\n", + "15. **HadCOPD** — был ли у респондента хронический обструктивный бронхит.\n", + "16. **HadDepressiveDisorder** — был ли у респондента депрессивное расстройство.\n", + "17. **HadKidneyDisease** — был ли у респондента заболевания почек.\n", + "18. **HadArthritis** — был ли у респондента артрит.\n", + "19. **HadDiabetes** — был ли у респондента диабет.\n", + "20. **DeafOrHardOfHearing** — имеется ли у респондента проблемы со слухом.\n", + "21. **BlindOrVisionDifficulty** — имеются ли у респондента проблемы со зрением.\n", + "22. **DifficultyConcentrating** — имеется ли у респондента проблемы с концентрацией внимания.\n", + "23. **DifficultyWalking** — имеются ли у респондента проблемы с ходьбой.\n", + "24. **DifficultyDressingBathing** — имеются ли у респондента проблемы с одеванием и купанием.\n", + "25. **DifficultyErrands** — имеются ли у респондента проблемы с выполнением повседневных дел.\n", + "26. **SmokerStatus** — статус курения респондента.\n", + "27. **ECigaretteUsage** — использование электронных сигарет.\n", + "28. **ChestScan** — проходил ли респондент обследование грудной клетки.\n", + "29. **RaceEthnicityCategory** — этническая принадлежность респондента.\n", + "30. **AgeCategory** — возрастная категория респондента.\n", + "31. **HeightInMeters** — рост респондента в метрах.\n", + "32. **WeightInKilograms** — вес респондента в килограммах.\n", + "33. **BMI** — индекс массы тела.\n", + "34. **AlcoholDrinkers** — является ли респондент алкоголиком.\n", + "35. **HIVTesting** — проходил ли респондент тест на ВИЧ.\n", + "36. **FluVaxLast12** — получал ли респондент прививку от гриппа за последние 12 месяцев.\n", + "37. **PneumoVaxEver** — получал ли респондент прививку от пневмококка.\n", + "38. **TetanusLast10Tdap** — получал ли респондент прививку от столбняка за последние 10 лет.\n", + "39. **HighRiskLastYear** — был ли респондент в группе высокого риска в прошлом году.\n", + "40. **CovidPos** — был ли респондент заражен COVID-19." + ] + }, { "cell_type": "code", - "execution_count": 248, + "execution_count": 362, "metadata": {}, "outputs": [], "source": [ @@ -39,8 +86,6 @@ "import pandas as pd\n", "from pandas import DataFrame, Series\n", "from sklearn.model_selection import train_test_split\n", - "from imblearn.over_sampling import ADASYN, SMOTE\n", - "from imblearn.under_sampling import RandomUnderSampler\n", "import matplotlib.pyplot as plt" ] }, @@ -622,7 +667,7 @@ }, { "cell_type": "code", - "execution_count": 253, + "execution_count": 371, "metadata": {}, "outputs": [], "source": [ @@ -630,7 +675,20 @@ " \"\"\"\n", " Возвращает список числовых колонок\n", " \"\"\"\n", - " return list(filter(lambda column: pd.api.types.is_numeric_dtype(df[column]), df.columns))" + " return list(filter(lambda column: pd.api.types.is_numeric_dtype(df[column]), df.columns))\n", + "\n", + "def get_filtered_columns(df: DataFrame, no_numeric=False, no_text=False) -> list[str]:\n", + " \"\"\"\n", + " Возвращает список колонок по фильтру\n", + " \"\"\"\n", + " w = []\n", + " for column in df.columns:\n", + " if no_numeric and pd.api.types.is_numeric_dtype(df[column]):\n", + " continue\n", + " if no_text and not pd.api.types.is_numeric_dtype(df[column]):\n", + " continue\n", + " w.append(column)\n", + " return w" ] }, { @@ -1548,7 +1606,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Разобьем данные на выборки" + "### Разобьем данные на выборки" ] }, { @@ -1562,7 +1620,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 316, "metadata": {}, "outputs": [ { @@ -1598,7 +1656,7 @@ }, { "cell_type": "code", - "execution_count": 317, + "execution_count": 397, "metadata": {}, "outputs": [ { @@ -1626,7 +1684,7 @@ "import matplotlib.pyplot as plt\n", "\n", "# Подсчет количества объектов каждого класса\n", - "class_counts = y.value_counts()\n", + "class_counts = Y.value_counts()\n", "print(class_counts)\n", "\n", "\n", @@ -1861,425 +1919,516 @@ }, { "cell_type": "code", - "execution_count": 361, + "execution_count": 385, + "metadata": {}, + "outputs": [], + "source": [ + "df_norm_manual = df_norm.drop(columns=[\"id\"])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Посмотрим какие значения содержатся в текстовых колонках (с числовыми мы уже поработали - провели нормализацию)" + ] + }, + { + "cell_type": "code", + "execution_count": 386, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "State ['Alabama', 'Alaska', 'Arizona', 'Arkansas', 'California', ..., 'Wisconsin', 'Wyoming', 'Guam', 'Puerto Rico', 'Virgin Islands']\n", + "Length: 54\n", + "Categories (54, object): ['Alabama', 'Alaska', 'Arizona', 'Arkansas', ..., 'Washington', 'West Virginia', 'Wisconsin', 'Wyoming']\n", + "\n", + "Sex ['Female', 'Male']\n", + "Categories (2, object): ['Female', 'Male']\n", + "\n", + "GeneralHealth ['Very good', 'Fair', 'Good', 'Excellent', 'Poor']\n", + "Categories (5, object): ['Excellent', 'Fair', 'Good', 'Poor', 'Very good']\n", + "\n", + "LastCheckupTime ['Within past year (anytime less than 12 months..., '5 or more years ago', 'Within past 2 years (1 year but less than 2 y..., 'Within past 5 years (2 years but less than 5 ...]\n", + "Categories (4, object): ['5 or more years ago', 'Within past 2 years (1 year but less than 2 y..., 'Within past 5 years (2 years but less than 5 ..., 'Within past year (anytime less than 12 months...]\n", + "\n", + "RemovedTeeth ['None of them', '6 or more, but not all', '1 to 5', 'All']\n", + "Categories (4, object): ['1 to 5', '6 or more, but not all', 'All', 'None of them']\n", + "\n", + "HadDiabetes ['No', 'Yes', 'Yes, but only during pregnancy (female)', 'No, pre-diabetes or borderline diabetes']\n", + "Categories (4, object): ['No', 'No, pre-diabetes or borderline diabetes', 'Yes', 'Yes, but only during pregnancy (female)']\n", + "\n", + "SmokerStatus ['Former smoker', 'Never smoked', 'Current smoker - now smokes every day', 'Current smoker - now smokes some days']\n", + "Categories (4, object): ['Current smoker - now smokes every day', 'Current smoker - now smokes some days', 'Former smoker', 'Never smoked']\n", + "\n", + "ECigaretteUsage ['Never used e-cigarettes in my entire life', 'Use them some days', 'Not at all (right now)', 'Use them every day']\n", + "Categories (4, object): ['Never used e-cigarettes in my entire life', 'Not at all (right now)', 'Use them every day', 'Use them some days']\n", + "\n", + "RaceEthnicityCategory ['White only, Non-Hispanic', 'Black only, Non-Hispanic', 'Other race only, Non-Hispanic', 'Multiracial, Non-Hispanic', 'Hispanic']\n", + "Categories (5, object): ['Black only, Non-Hispanic', 'Hispanic', 'Multiracial, Non-Hispanic', 'Other race only, Non-Hispanic', 'White only, Non-Hispanic']\n", + "\n", + "AgeCategory ['Age 65 to 69', 'Age 70 to 74', 'Age 75 to 79', 'Age 80 or older', 'Age 50 to 54', ..., 'Age 45 to 49', 'Age 35 to 39', 'Age 25 to 29', 'Age 30 to 34', 'Age 18 to 24']\n", + "Length: 13\n", + "Categories (13, object): ['Age 18 to 24', 'Age 25 to 29', 'Age 30 to 34', 'Age 35 to 39', ..., 'Age 65 to 69', 'Age 70 to 74', 'Age 75 to 79', 'Age 80 or older']\n", + "\n", + "TetanusLast10Tdap ['Yes, received Tdap', 'Yes, received tetanus shot but not sure what ..., 'No, did not receive any tetanus shot in the p..., 'Yes, received tetanus shot, but not Tdap']\n", + "Categories (4, object): ['No, did not receive any tetanus shot in the p..., 'Yes, received Tdap', 'Yes, received tetanus shot but not sure what ..., 'Yes, received tetanus shot, but not Tdap']\n", + "\n", + "CovidPos ['No', 'Yes', 'Tested positive using home test without a hea...]\n", + "Categories (3, object): ['No', 'Tested positive using home test without a hea..., 'Yes']\n", + "\n" + ] + } + ], + "source": [ + "for column in get_filtered_columns(df_norm_manual, no_numeric=True):\n", + " series = df_norm_manual[column]\n", + " print(column, series.unique())\n", + " print()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Видно, что в датасете есть колонка с названием штата США с 54 уникальными значениями. Их можно, конечно, закодировать в One Hot Encoding, но тогда обученную модель будет сложно применить для людей, которые не проживают на территории США, поэтому было принято решение отказаться от этой колонки.\n", + "\n", + "Остальные колонки содержат варианты ответов из опроса, поэтому их закодировать будет не трудно." + ] + }, + { + "cell_type": "code", + "execution_count": 396, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Было колонок: 39\n", + "Стало колонок: 69\n", + "Новых колонок: 30\n", + "\n", + "Удалены колонки\n", + "---------------\n", + "AgeCategory\n", + "CovidPos\n", + "ECigaretteUsage\n", + "GeneralHealth\n", + "HadDiabetes\n", + "LastCheckupTime\n", + "RaceEthnicityCategory\n", + "RemovedTeeth\n", + "Sex\n", + "SmokerStatus\n", + "TetanusLast10Tdap\n", + "\n", + "Новые колонки\n", + "-------------\n", + "AgeCategory_Age 25 to 29\n", + "AgeCategory_Age 30 to 34\n", + "AgeCategory_Age 35 to 39\n", + "AgeCategory_Age 40 to 44\n", + "AgeCategory_Age 45 to 49\n", + "AgeCategory_Age 50 to 54\n", + "AgeCategory_Age 55 to 59\n", + "AgeCategory_Age 60 to 64\n", + "AgeCategory_Age 65 to 69\n", + "AgeCategory_Age 70 to 74\n", + "AgeCategory_Age 75 to 79\n", + "AgeCategory_Age 80 or older\n", + "CovidPos_Tested positive using home test without a health professional\n", + "CovidPos_Yes\n", + "ECigaretteUsage_Not at all (right now)\n", + "ECigaretteUsage_Use them every day\n", + "ECigaretteUsage_Use them some days\n", + "GeneralHealth_Fair\n", + "GeneralHealth_Good\n", + "GeneralHealth_Poor\n", + "GeneralHealth_Very good\n", + "HadDiabetes_No, pre-diabetes or borderline diabetes\n", + "HadDiabetes_Yes\n", + "HadDiabetes_Yes, but only during pregnancy (female)\n", + "LastCheckupTime_Within past 2 years (1 year but less than 2 years ago)\n", + "LastCheckupTime_Within past 5 years (2 years but less than 5 years ago)\n", + "LastCheckupTime_Within past year (anytime less than 12 months ago)\n", + "RaceEthnicityCategory_Hispanic\n", + "RaceEthnicityCategory_Multiracial, Non-Hispanic\n", + "RaceEthnicityCategory_Other race only, Non-Hispanic\n", + "RaceEthnicityCategory_White only, Non-Hispanic\n", + "RemovedTeeth_6 or more, but not all\n", + "RemovedTeeth_All\n", + "RemovedTeeth_None of them\n", + "Sex_Male\n", + "SmokerStatus_Current smoker - now smokes some days\n", + "SmokerStatus_Former smoker\n", + "SmokerStatus_Never smoked\n", + "TetanusLast10Tdap_Yes, received Tdap\n", + "TetanusLast10Tdap_Yes, received tetanus shot but not sure what type\n", + "TetanusLast10Tdap_Yes, received tetanus shot, but not Tdap\n" + ] + } + ], + "source": [ + "if \"State\" in df_norm_manual.columns:\n", + " df_norm_manual = df_norm_manual.drop(columns=[\"State\"])\n", + "\n", + "df_manual_one_hot = df_norm_manual\n", + "\n", + "text_columns = get_filtered_columns(df_norm_manual, no_numeric=True) \n", + "\n", + "for column in text_columns:\n", + " # df_manual_one_hot[column] = pd.Categorical(df_manual_one_hot[column]).codes\n", + " df_manual_one_hot = pd.get_dummies(df_manual_one_hot, columns=[column], drop_first=True)\n", + "\n", + "# df_manual_one_hot = df_manual_one_hot.drop(columns=text_columns)\n", + "\n", + "print(\"Было колонок:\", len(df_norm_manual.columns))\n", + "print(\"Стало колонок:\", len(df_manual_one_hot.columns))\n", + "print(\"Новых колонок:\", len(df_manual_one_hot.columns) - len(df_norm_manual.columns))\n", + "\n", + "print()\n", + "\n", + "print(\"Удалены колонки\")\n", + "print(\"---------------\")\n", + "print(*sorted(text_columns), sep='\\n')\n", + "\n", + "print()\n", + "\n", + "print(\"Новые колонки\")\n", + "print(\"-------------\")\n", + "print(*sorted(list(set(df_manual_one_hot.columns)-set(df_norm_manual))), sep='\\n')\n", + "\n", + "# print(*df_manual_one_hot.columns, sep='\\n')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Разобьем данные на выборки" + ] + }, + { + "cell_type": "code", + "execution_count": 435, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Размеры выборок:\n", + "Обучающая выборка: (221419, 68)\n", + "Тестовая выборка: (12301, 68)\n", + "Контрольная выборка: (12302, 68)\n" + ] + } + ], + "source": [ + "prepared_dataset = df_manual_one_hot\n", + "\n", + "target_column = \"HadHeartAttack\"\n", + "\n", + "X = prepared_dataset.drop(columns=[target_column])\n", + "Y = prepared_dataset[target_column] \n", + "\n", + "# Обучающая выборка\n", + "X_train, X_temp, Y_train, Y_temp = train_test_split(X, Y, test_size=0.1, random_state=None, stratify=y)\n", + "\n", + "# Тестовая и контрольная выборки\n", + "X_test, X_control, Y_test, Y_control = train_test_split(X_temp, Y_temp, test_size=0.5, random_state=None, stratify=Y_temp)\n", + "\n", + "print(\"Размеры выборок:\")\n", + "print(f\"Обучающая выборка: {X_train.shape}\")\n", + "print(f\"Тестовая выборка: {X_test.shape}\")\n", + "print(f\"Контрольная выборка: {X_control.shape}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 436, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "HadHeartAttack\n", + "False 232587\n", + "True 13435\n", + "Name: count, dtype: int64\n" + ] + }, + { + "data": { + "image/png": "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zz/LYrFkexTkxjk3bdqkhg0b2p32yknJkiUdXtOtLiYfM2aMatWqpS5duuS4/QMHDqh58+Z5PiWbderVz89Pa9eu1YgRI9SmTRuHQJib/bFy5Uq5urrq66+/tjtNuHjxYoe+rVarfv755xyDc9bfg0OHDikkJCTbmnLlykmSjh07ZjvlmeXYsWO25VlcXV3t9v+TTz6p4sWLa+7cuXrnnXdyfF2AGbimCrgPOTs7yzAMu7Hly5c7fAS9Y8eOOn/+vObOneswx83r34kPP/xQly9ftj1fsWKFTp8+rdatW0uSQkNDVb58ef373/9Wamqqw/rnzp1z6N3Z2Tnb2xXcqEOHDnJ2dtbEiRMd+jcMQxcuXLA9v379ulauXKl69erd8tTQM888o8zMTE2ePNlh2fXr122nzPJi165dWrt2rd58880cA9Mzzzyj33//Xf/5z38cll25ckVpaWm33U7FihXl5+cnSXr77bdltVr14osv2tXkdn84OzvLYrHYnVJOSEhwCI7t27eXk5OTJk2a5HB0NOtn07JlS3l6emrKlCkO151l1dSpU0e+vr5auHCh3anGr776SkeOHLH7tGF2MjIydP369VzdfgK4WxypAu5Dbdu21aRJk9SrVy81aNBAP/30k5YsWaKHH37Yru7555/Xhx9+qOHDh2vPnj1q1KiR0tLStGnTJv3jH//QU089laftFy9eXI8//rh69eqlM2fOaNasWQoJCdELL7wgSXJyctJ7772n1q1bq1q1aurVq5fKlCmj33//XVu2bJGXl5e++OILpaWlad68eZozZ44qVqyorVu32raRFcYOHjyoXbt2KSwsTOXLl9frr7+uMWPGKCEhQe3bt5enp6fi4+O1evVq9evXTy+//LI2bdqksWPH6uDBg/riiy9u+VqaNGmi/v37a8qUKYqNjVXLli1VuHBhxcXFafny5Zo9e7Y6deqUp/30zTffqEWLFrc8Wvfcc8/ps88+04ABA7RlyxY1bNhQmZmZOnr0qD777DN9/fXXtz2CdyN/f39Nnz5dffv21bPPPqs2bdrc0f6IjIzUW2+9pVatWql79+46e/as5s2bp5CQEB08eNBWFxISoldffVWTJ09Wo0aN1KFDB7m4uGjv3r0KCAjQlClT5OXlpZkzZ6pv376qW7euunfvrmLFiunAgQP6448/9MEHH6hw4cKa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5557TtOmTVNiYqJee+01DRo0yHaUaMCAAZo7d65Gjhyp3r17a/Pmzfrss8+0fv3/fWJu+PDhioqKUp06dVSvXj3NmjVLaWlp6tWrl62n2/UCAAAeXPkaqhYsWCBJatq0qd344sWL1bNnT0nSzJkz5eTkpI4dOyo9PV0RERGaP3++rdbZ2Vnr1q3TwIEDFRYWJnd3d0VFRWnSpEm2muDgYK1fv14vvfSSZs+erbJly+q9995TRESEraZLly46d+6cxo0bp8TERNWqVUsbNmywu3j9dr0AAIAH1z11n6r7HfepAvIP96kCkFcF8j5VAAAABRWhCgAAwASEKgAAABMQqgAAAExAqAIAADABoQoAAMAEhCoAAAATEKoAAABMQKgCAAAwAaEKAADABIQqAAAAExCqAAAATECoAgAAMAGhCgAAwASEKgAAABMQqgAAAExAqAIAADABoQoAAMAEhCoAAAATEKoAAABMQKgCAAAwAaEKAADABIQqAAAAExCqAAAATECoAgAAMAGhCgAAwASEKgAAABMQqgAAAExAqAIAADABoQoAAMAEhCoAAAATEKoAAABMQKgCAAAwAaEKAADABIQqAAAAExCqAAAATECoAgAAMAGhCgAAwASEKgAAABMQqgAAAExAqAIAADABoQoAAMAEhCoAAAATEKoAAABMQKgCAAAwAaEKAADABIQqAAAAExCqAAAATECoAgAAMAGhCgAAwASEKgAAABMQqgAAAExAqAIAADABoQoAAMAEhCoAAAATEKoAAABMQKgCAAAwAaEKAADABIQqAAAAExCqAAAATECoAgAAMAGhCgAAwASEKgAAABMQqgAAAEyQr6Fq27ZtateunQICAmSxWLRmzRq75T179pTFYrF7tGrVyq7m4sWL6tGjh7y8vOTj46M+ffooNTXVrubgwYNq1KiRXF1dFRgYqGnTpjn0snz5clWuXFmurq6qUaOGvvzyS7vlhmFo3LhxKl26tNzc3BQeHq64uDhzdgQAACjw8jVUpaWlqWbNmpo3b16ONa1atdLp06dtj2XLltkt79Gjhw4fPqyNGzdq3bp12rZtm/r162dbnpKSopYtW6pcuXLat2+fpk+frgkTJujdd9+11Xz33Xfq1q2b+vTpo/3796t9+/Zq3769Dh06ZKuZNm2a5syZo4ULF2r37t1yd3dXRESErl69auIe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fE1Vdrp27apq1aqZOSUAAECBcFehat++fTpy5IgkqWrVqnr00Uf16KOPmtIYAABAQZKnC9XPnj2rJ554QnXr1tXQoUM1dOhQ1alTR82bN9e5c+dyPc+2bdvUrl07BQQEyGKxaM2aNXbLDcPQuHHjVLp0abm5uSk8PFxxcXF2NRcvXlSPHj3k5eUlHx8f9enTR6mpqXY1Bw8eVKNGjeTq6qrAwEBNmzbNoZfly5ercuXKcnV1VY0aNfTll1/ecS8AAODBladQNWTIEF2+fFmHDx/WxYsXdfHiRR06dEgpKSkaOnRorudJS0tTzZo1NW/evGyXT5s2TXPmzNHChQu1e/duubu7KyIiQlevXrXV9OjRQ4cPH9bGjRu1bt06bdu2Tf369bMtT0lJUcuWLVWuXDnt27dP06dP14QJE/Tuu+/aar777jt169ZNffr00f79+9W+fXu1b99ehw4duqNeAADAg8tiGIZxpyt5e3tr06ZNqlu3rt34nj171LJlSyUlJd15IxaLVq9erfbt20v688hQQECARowYoZdfflmSlJycLD8/P0VHR6tr1646cuSIqlatqr1796pOnTqSpA0bNqhNmzb67bffFBAQoAULFujVV19VYmKi7V5ao0eP1po1a3T06FFJUpcuXZSWlqZ169bZ+nnsscdUq1YtLVy4MFe95EZKSoq8vb2VnJxs+vcjBo1eb+p8wP0m4c3I/G4BQAGV29/feTpSZbVaVbhwYYfxwoULy2q15mVKB/Hx8UpMTFR4eLhtzNvbW/Xr19euXbskSbt27ZKPj48tUElSeHi4nJyctHv3bltN48aN7W5OGhERoWPHjunSpUu2mhu3k1WTtZ3c9JKd9PR0paSk2D0AAMD9KU+h6oknntCLL76oU6dO2cZ+//13vfTSS2revLkpjSUmJkqS/Pz87Mb9/PxsyxITEx2+KqdQoUIqXry4XU12c9y4jZxqblx+u16yM2XKFHl7e9segYGBt3nVAACgoMpTqJo7d65SUlIUFBSk8uXLq3z58goODlZKSorefvtts3sssMaMGaPk5GTb4+TJk/ndEgAA+Ivc0S0VLl++LE9PTwUGBurHH3/Upk2bbNclValSReHh4dq7d6/Kli171435+/tLks6cOaPSpUvbxs+cOaNatWrZas6ePWu33vXr13Xx4kXb+v7+/jpz5oxdTdbz29XcuPx2vWTHxcVFLi4uuXq9AACgYLujI1UtW7a03a7AYrGoRYsWGjJkiIYMGaKmTZtq7NixatiwoSmNBQcHy9/fXzExMbaxlJQU7d69W2FhYZKksLAwJSUlad++fbaazZs3y2q1qn79+raabdu26dq1a7aajRs3qlKlSipWrJit5sbtZNVkbSc3vQAAgAfbHYWqy5cvKzw83OGC60OHDqlu3bpatGiRw72mbiU1NVWxsbGKjY2V9OcF4bGxsTpx4oQsFouGDRum119/XZ9//rl++uknPf/88woICLB9QrBKlSpq1aqVXnjhBe3Zs0c7d+7U4MGD1bVrVwUEBEiSunfvriJFiqhPnz46fPiwPv30U82ePVvDhw+39fHiiy9qw4YNmjFjho4ePaoJEybohx9+0ODBgyUpV70AAIAH2x2Fqi1btigtLU0tWrRQSkqKDMPQ1KlTVadOHVWpUkWHDh1SmzZtcj3fDz/8oNq1a6t27dqSpOHDh6t27doaN26cJGnkyJEaMmSI+vXrp7p16yo1NVUbNmyQq6urbY4lS5aocuXKat68udq0aaPHH3/c7h5U3t7e+uabbxQfH6/Q0FCNGDFC48aNs7uXVYMGDbR06VK9++67qlmzplasWKE1a9aoevXqtprc9AIAAB5cd3yfqnPnzik8PFyFCxeWi4uL4uLiNH/+fHXq1Omv6vG+wX2qgPzDfaoA5FVuf3/f8Xf/lSpVSjExMQoPD9ehQ4cUGxurypUr31WzAAAABV2ebqlQsmRJbd68WVWrVlX37t1tN9EEAAB4UN3RkaoOHTrYPffy8tK2bdtUr1491ahRwza+atUqc7oDAAAoIO4oVHl7ezs8Dw4ONrUhAACAguiOQtXixYv/qj4AAAAKtDxdUwUAAAB7hCoAAAATEKoAAABMQKgCAAAwAaEKAADABIQqAAAAExCqAAAATECoAgAAMAGhCgAAwASEKgAAABMQqgAAAExAqAIAADABoQoAAMAEhCoAAAATEKoAAABMQKgCAAAwAaEKAADABIQqAAAAExCqAAAATECoAgAAMAGhCgAAwASEKgAAABMQqgAAAExAqAIAADABoQoAAMAEhCoAAAATEKoAAABMQKgCAAAwAaEKAADABIQqAAAAExCqAAAATECoAgAAMAGhCgAAwASEKgAAABMQqgAAAExAqAIAADABoQoAAMAEhCoAAAATEKoAAABMQKgCAAAwAaEKAADABIQqAAAAExCqAAAATECoAgAAMAGhCgAAwASEKgAAABMQqgAAAExAqAIAADABoQoAAMAEhCoAAAATEKoAAABMQKgCAAAwAaEKAADABIQqAAAAExCqAAAATECoAgAAMAGhCgAAwASEKgAAABMQqgAAAExAqAIAADDBPR2qJkyYIIvFYveoXLmybfnVq1c1aNAglShRQh4eHurYsaPOnDljN8eJEycUGRmpokWLytfXV6+88oquX79uV7N161Y9+uijcnFxUUhIiKKjox16mTdvnoKCguTq6qr69etrz549f8lrBgAABdM9HaokqVq1ajp9+rTtsWPHDtuyl156SV988YWWL1+ub7/9VqdOnVKHDh1syzMzMxUZGamMjAx99913+uCDDxQdHa1x48bZauLj4xUZGalmzZopNjZWw4YNU9++ffX111/baj799FMNHz5c48eP148//qiaNWsqIiJCZ8+e/Xt2AgAAuOdZDMMw8ruJnEyYMEFr1qxRbGysw7Lk5GSVKlVKS5cuVadOnSRJR48eVZUqVbRr1y499thj+uqrr9S2bVudOnVKfn5+kqSFCxdq1KhROnfunIoUKaJRo0Zp/fr1OnTokG3url27KikpSRs2bJAk1a9fX3Xr1tXcuXMlSVarVYGBgRoyZIhGjx6d69eTkpIib29vJScny8vLK6+7JVtBo9ebOh9wv0l4MzK/WwBQQOX29/c9f6QqLi5OAQEBevjhh9WjRw+dOHFCkrRv3z5du3ZN4eHhttrKlSvroYce0q5duyRJu3btUo0aNWyBSpIiIiKUkpKiw4cP22punCOrJmuOjIwM7du3z67GyclJ4eHhtpqcpKenKyUlxe4BAADuT/d0qKpfv76io6O1YcMGLViwQPHx8WrUqJEuX76sxMREFSlSRD4+Pnbr+Pn5KTExUZKUmJhoF6iylmctu1VNSkqKrly5ovPnzyszMzPbmqw5cjJlyhR5e3vbHoGBgXe8DwAAQMFQKL8buJXWrVvb/vzII4+ofv36KleunD777DO5ubnlY2e5M2bMGA0fPtz2PCUlhWAFAMB96p4+UnUzHx8fVaxYUb/88ov8/f2VkZGhpKQku5ozZ87I399fkuTv7+/wacCs57er8fLykpubm0qWLClnZ+dsa7LmyImLi4u8vLzsHgAA4P5UoEJVamqqjh8/rtKlSys0NFSFCxdWTEyMbfmxY8d04sQJhYWFSZLCwsL0008/2X1Kb+PGjfLy8lLVqlVtNTfOkVWTNUeRIkUUGhpqV2O1WhUTE2OrAQAAuKdD1csvv6xvv/1WCQkJ+u677/T000/L2dlZ3bp1k7e3t/r06aPhw4dry5Yt2rdvn3r16qWwsDA99thjkqSWLVuqatWqeu6553TgwAF9/fXXeu211zRo0CC5uLhIkgYMGKD//e9/GjlypI4ePar58+frs88+00svvWTrY/jw4frPf/6jDz74QEeOHNHAgQOVlpamXr165ct+AQAA9557+pqq3377Td26ddOFCxdUqlQpPf744/r+++9VqlQpSdLMmTPl5OSkjh07Kj09XREREZo/f75tfWdnZ61bt04DBw5UWFiY3N3dFRUVpUmTJtlqgoODtX79er300kuaPXu2ypYtq/fee08RERG2mi5duujcuXMaN26cEhMTVatWLW3YsMHh4nUAAPDguqfvU3W/4T5VQP7hPlUA8uq+uU8VAABAQUCoAgAAMAGhCgAAwASEKgAAABMQqgAAAExAqAIAADABoQoAAMAEhCoAAAATEKoAAABMQKgCAAAwAaEKAADABIQqAAAAExCqAAAATECoAgAAMAGhCgAAwASEKgAAABMQqgAAAExAqAIAADABoQoAAMAEhCoAAAATEKoAAABMQKgCAAAwAaEKAADABIQqAAAAExCqAAAATECoAgAAMAGhCgAAwASEKgAAABMQqgAAAExAqAIAADABoQoAAMAEhCoAAAATEKoAAABMQKgCAAAwAaEKAADABIQqAAAAExCqAAAATECoAgAAMAGhCgAAwASEKgAAABMQqgAAAExAqAIAADABoQoAAMAEhCoAAAATEKoAAABMQKgCAAAwAaEKAADABIQqAAAAExTK7wYAALkXNHp9frcA3LMS3ozM1+1zpAoAAMAEhCoAAAATEKoAAABMQKgCAAAwAaEKAADABIQqAAAAExCqAAAATECoAgAAMAGhCgAAwASEKgAAABMQqgAAAExAqAIAADABoQoAAMAEhCoAAAATEKoAAABMQKi6Q/PmzVNQUJBcXV1Vv3597dmzJ79bAgAA9wBC1R349NNPNXz4cI0fP14//vijatasqYiICJ09eza/WwMAAPmMUHUH3nrr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UFCQONF07+H0HwAAgAm4TxUAAIAJCFUAAAAmIFQBAACYgFAFAABgAkIVAACACQhVAB5YPXv2dPhetnPnzql69eqqX7++kpOT86cxAAUSoQoA/r9z587piSeekJubm7755ht5e3vnd0sAChBCFQBIOn/+vJo3by4XFxdt3LjRLlD17NlTFovF7nHj1wu99dZbqlGjhtzd3RUYGKh//OMfSk1NtZt/586datq0qYoWLapixYopIiJCly5dkvTnV45MmzZNISEhcnFx0UMPPeTwJeEA7n2EKgAPvAsXLig8PFyFChXSxo0b5ePjY7fcMAy1atVKp0+f1unTpxUWFma33MnJSXPmzNHhw4f1wQcfaPPmzRo5cqRteWxsrJo3b66qVatq165d2rFjh9q1a6fMzExJ0pgxY/Tmm29q7Nix+vnnn7V06VK+MggogLijOoAHVs+ePRUfH6+UlBQdPnxYoaGh2rFjh5ydne3qunfvrmvXrmn58uWSpKZNm6pWrVqaNWtWtvOuWLFCAwYM0Pnz523rnzhxQjt27HCovXz5skqVKqW5c+eqb9++5r5AAH8rjlQBeKBt27ZNVqtVsbGx+uWXXzRt2jSHmpSUFLm7u+c4x6ZNm9S8eXOVKVNGnp6eeu6553ThwgX98ccfkv7vSFV2jhw5ovT09ByXAyg4CFUAHmgPP/ywYmJiVLVqVc2fP18TJkzQwYMH7WpOnTqlgICAbNdPSEhQ27Zt9cgjj2jlypXat2+f5s2bJ0nKyMiQJLm5ueW4/VstA1CwEKoAPNBq1KihkiVLSpI6d+6sDh066Pnnn7cForS0NB05ckS1a9fOdv19+/bJarVqxowZeuyxx1SxYkWdOnXKruaRRx5RTExMtutXqFBBbm5uOS4HUHAQqgDgBvPmzdPZs2c1ceJEHT16VN26dZOPj49at26dbX1ISIiuXbumt99+W//73//00UcfaeHChXY1Y8aM0d69e/WPf/xDBw8e1NGjR7VgwQKdP39erq6uGjVqlEaOHKkPP/xQx48f1/fff6/333//73i5AExEqAKAGxQvXlz/+c9/NHXqVA0cOFDXr1/Xpk2b5OHhkW19zZo19dZbb2nq1KmqXr26lixZoilTptjVVKxYUd98840OHDigevXqKSwsTGvXrlWhQoUkSWPHjtWIESM0btw4ValSRV26dNHZs2f/8tcKwFx8+g8AAMAEHKkCAAAwAaEKAADABIQqAAAAExCqAAAATECoAgAAMAGhCgAAwASEKgAAABMQqgAAAExAqAIAADABoQoAAMAEhCoAAAATEKoAAABM8P8A4XCfzsfdjMEAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "# Подсчет количества объектов каждого класса\n", + "class_counts = Y.value_counts()\n", + "print(class_counts)\n", + "\n", + "class_counts_dict = class_counts.to_dict()\n", + "\n", + "keys = list(class_counts_dict.keys())\n", + "vals = list(class_counts_dict.values())\n", + "\n", + "keys[keys.index(True)] = \"Был приступ\"\n", + "keys[keys.index(False)] = \"Не было приступа\"\n", + "\n", + "# Визуализация\n", + "plt.bar(keys, vals)\n", + "plt.title(f\"Распределение классов\\n\\\"{target_column}\\\"\")\n", + "plt.xlabel(\"Класс\")\n", + "plt.ylabel(\"Количество\")\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Для интереса сделаем только oversampling для значений True. (Я делал и undersampling - в предсказательной способоности ничего не меняется)" + ] + }, + { + "cell_type": "code", + "execution_count": 437, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Данные до аугментации в обучающей выборке\n", + "HadHeartAttack\n", + "False 209328\n", + "True 12091\n", + "Name: count, dtype: int64\n", + "\n", + "Данные после аугментации в обучающей выборке\n", + "HadHeartAttack\n", + "False 12091\n", + "True 12091\n", + "Name: count, dtype: int64\n" + ] + } + ], + "source": [ + "print(\"Данные до аугментации в обучающей выборке\")\n", + "print(Y_train.value_counts())\n", + "\n", + "X_train_samplied, Y_train_samplied = X_train, Y_train\n", + "\n", + "# X_train_samplied, Y_train_samplied = oversample(X_train_samplied, Y_train_samplied, sampling_strategy=1)\n", + "X_train_samplied, Y_train_samplied = undersample(X_train_samplied, Y_train_samplied)\n", + "print()\n", + "print(\"Данные после аугментации в обучающей выборке\")\n", + "print(Y_train_samplied.value_counts())" + ] + }, + { + "cell_type": "code", + "execution_count": 428, "metadata": {}, "outputs": [ { "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
idStateSexGeneralHealthLastCheckupTimePhysicalActivitiesRemovedTeethHadHeartAttackHadAnginaHadStroke...PneumoVaxEverTetanusLast10TdapHighRiskLastYearCovidPosPhysicalHealthDaysNormMentalHealthDaysNormSleepHoursNormHeightInMetersNormWeightInKilogramsNormBMINorm
00AlabamaFemaleVery goodWithin past year (anytime less than 12 months ...TrueNone of themFalseFalseFalse...TrueYes, received TdapFalseNo0.5333330.00.7500.3250000.4034460.497047
11AlabamaMaleVery goodWithin past year (anytime less than 12 months ...TrueNone of themFalseFalseFalse...TrueYes, received tetanus shot but not sure what typeFalseNo0.0000000.00.3750.6250000.6218910.567257
22AlabamaMaleVery goodWithin past year (anytime less than 12 months ...False6 or more, but not allFalseFalseFalse...TrueNo, did not receive any tetanus shot in the pa...FalseYes0.0000000.00.6250.7416670.7479740.617454
33AlabamaFemaleFairWithin past year (anytime less than 12 months ...TrueNone of themFalseFalseFalse...TrueNo, did not receive any tetanus shot in the pa...FalseYes0.6666670.00.7500.4916670.5799250.606299
44AlabamaFemaleGoodWithin past year (anytime less than 12 months ...True1 to 5FalseFalseFalse...TrueNo, did not receive any tetanus shot in the pa...FalseNo0.4000001.00.2500.2416670.4748710.663714
..................................................................
246017246017Virgin IslandsMaleVery goodWithin past 2 years (1 year but less than 2 ye...TrueNone of themFalseFalseFalse...FalseYes, received tetanus shot but not sure what typeFalseNo0.0000000.00.3750.6250000.6849780.637795
246018246018Virgin IslandsFemaleFairWithin past year (anytime less than 12 months ...TrueNone of themFalseFalseFalse...FalseNo, did not receive any tetanus shot in the pa...FalseYes0.0000000.70.5000.8750000.5799250.377297
246019246019Virgin IslandsMaleGoodWithin past year (anytime less than 12 months ...True1 to 5FalseFalseTrue...TrueYes, received tetanus shot but not sure what typeFalseYes0.0000001.00.5000.4583330.5168370.558399
246020246020Virgin IslandsFemaleExcellentWithin past year (anytime less than 12 months ...TrueNone of themFalseFalseFalse...FalseYes, received tetanus shot but not sure what typeFalseNo0.2666670.20.5000.4916670.5085000.519029
246021246021Virgin IslandsMaleVery goodWithin past year (anytime less than 12 months ...FalseNone of themTrueFalseFalse...TrueNo, did not receive any tetanus shot in the pa...FalseYes0.0000000.00.2500.7083330.7479740.646654
\n", - "

246022 rows × 41 columns

\n", - "
" - ], + "image/png": "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", "text/plain": [ - " id State Sex GeneralHealth \\\n", - "0 0 Alabama Female Very good \n", - "1 1 Alabama Male Very good \n", - "2 2 Alabama Male Very good \n", - "3 3 Alabama Female Fair \n", - "4 4 Alabama Female Good \n", - "... ... ... ... ... \n", - "246017 246017 Virgin Islands Male Very good \n", - "246018 246018 Virgin Islands Female Fair \n", - "246019 246019 Virgin Islands Male Good \n", - "246020 246020 Virgin Islands Female Excellent \n", - "246021 246021 Virgin Islands Male Very good \n", - "\n", - " LastCheckupTime PhysicalActivities \\\n", - "0 Within past year (anytime less than 12 months ... True \n", - "1 Within past year (anytime less than 12 months ... True \n", - "2 Within past year (anytime less than 12 months ... False \n", - "3 Within past year (anytime less than 12 months ... True \n", - "4 Within past year (anytime less than 12 months ... True \n", - "... ... ... \n", - "246017 Within past 2 years (1 year but less than 2 ye... True \n", - "246018 Within past year (anytime less than 12 months ... True \n", - "246019 Within past year (anytime less than 12 months ... True \n", - "246020 Within past year (anytime less than 12 months ... True \n", - "246021 Within past year (anytime less than 12 months ... False \n", - "\n", - " RemovedTeeth HadHeartAttack HadAngina HadStroke ... \\\n", - "0 None of them False False False ... \n", - "1 None of them False False False ... \n", - "2 6 or more, but not all False False False ... \n", - "3 None of them False False False ... \n", - "4 1 to 5 False False False ... \n", - "... ... ... ... ... ... \n", - "246017 None of them False False False ... \n", - "246018 None of them False False False ... \n", - "246019 1 to 5 False False True ... \n", - "246020 None of them False False False ... \n", - "246021 None of them True False False ... \n", - "\n", - " PneumoVaxEver TetanusLast10Tdap \\\n", - "0 True Yes, received Tdap \n", - "1 True Yes, received tetanus shot but not sure what type \n", - "2 True No, did not receive any tetanus shot in the pa... \n", - "3 True No, did not receive any tetanus shot in the pa... \n", - "4 True No, did not receive any tetanus shot in the pa... \n", - "... ... ... \n", - "246017 False Yes, received tetanus shot but not sure what type \n", - "246018 False No, did not receive any tetanus shot in the pa... \n", - "246019 True Yes, received tetanus shot but not sure what type \n", - "246020 False Yes, received tetanus shot but not sure what type \n", - "246021 True No, did not receive any tetanus shot in the pa... \n", - "\n", - " HighRiskLastYear CovidPos PhysicalHealthDaysNorm \\\n", - "0 False No 0.533333 \n", - "1 False No 0.000000 \n", - "2 False Yes 0.000000 \n", - "3 False Yes 0.666667 \n", - "4 False No 0.400000 \n", - "... ... ... ... \n", - "246017 False No 0.000000 \n", - "246018 False Yes 0.000000 \n", - "246019 False Yes 0.000000 \n", - "246020 False No 0.266667 \n", - "246021 False Yes 0.000000 \n", - "\n", - " MentalHealthDaysNorm SleepHoursNorm HeightInMetersNorm \\\n", - "0 0.0 0.750 0.325000 \n", - "1 0.0 0.375 0.625000 \n", - "2 0.0 0.625 0.741667 \n", - "3 0.0 0.750 0.491667 \n", - "4 1.0 0.250 0.241667 \n", - "... ... ... ... \n", - "246017 0.0 0.375 0.625000 \n", - "246018 0.7 0.500 0.875000 \n", - "246019 1.0 0.500 0.458333 \n", - "246020 0.2 0.500 0.491667 \n", - "246021 0.0 0.250 0.708333 \n", - "\n", - " WeightInKilogramsNorm BMINorm \n", - "0 0.403446 0.497047 \n", - "1 0.621891 0.567257 \n", - "2 0.747974 0.617454 \n", - "3 0.579925 0.606299 \n", - "4 0.474871 0.663714 \n", - "... ... ... \n", - "246017 0.684978 0.637795 \n", - "246018 0.579925 0.377297 \n", - "246019 0.516837 0.558399 \n", - "246020 0.508500 0.519029 \n", - "246021 0.747974 0.646654 \n", - "\n", - "[246022 rows x 41 columns]" + "
" ] }, - "execution_count": 361, "metadata": {}, - "output_type": "execute_result" + "output_type": "display_data" } ], "source": [ - "df_norm" + "show_distribution(Y_train, column_name=target_column)" + ] + }, + { + "cell_type": "code", + "execution_count": 429, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "show_distribution(Y_train_samplied, column_name=target_column)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Обучение модели" + ] + }, + { + "cell_type": "code", + "execution_count": 430, + "metadata": {}, + "outputs": [], + "source": [ + "model_manual = RandomForestClassifier()\n", + "\n", + "start_time = time.time()\n", + "\n", + "model_manual.fit(X_train, Y_train)\n", + "\n", + "train_time = time.time() - start_time" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Ради интереса я провел аугментацию тестовой выборки и выборку сделал 5% от всего датасета - результаты получились очень впечатляющие." + ] + }, + { + "cell_type": "code", + "execution_count": 440, + "metadata": {}, + "outputs": [], + "source": [ + "X_test_samplied, Y_test_samplied = X_test, Y_test\n", + "X_test_samplied, Y_test_samplied = undersample(X_test_samplied, Y_test_samplied)\n", + "\n", + "X_test, Y_test = X_test_samplied, Y_test_samplied\n", + "\n", + "Y_pred = model_manual.predict(X_test)\n", + "Y_pred_proba = model_manual.predict_proba(X_test)[:, 1]" + ] + }, + { + "cell_type": "code", + "execution_count": 441, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Время обучения модели: 45.07 секунд\n", + "ROC-AUC: 0.99\n", + "F1-Score: 0.95\n", + "Матрица ошибок:\n", + "[[671 1]\n", + " [ 59 613]]\n", + "Отчет по классификации:\n", + " precision recall f1-score support\n", + "\n", + " False 0.92 1.00 0.96 672\n", + " True 1.00 0.91 0.95 672\n", + "\n", + " accuracy 0.96 1344\n", + " macro avg 0.96 0.96 0.96 1344\n", + "weighted avg 0.96 0.96 0.96 1344\n", + "\n" + ] + }, + { + "data": { + "image/png": "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lzLsM5lMKlWqlPz9/a3aK1euLDc3N8vn+ddff8nNzU0VK1a06hcSEqLAwMAMccfGxurZZ59VWlqaLl68mLNvCECewJwlwI5u3brpxRdfVFxcnB599FEFBgZm2u/HH3/UE088oebNm+vDDz9UyZIl5eHhoaioKC1cuNApsaakpGjMmDHq3bu37r///rs+X5cuXbRt2zaNGDFCtWvXlp+fn9LT0/XII49kmBRttIMHDyo6Olqff/65PDw8Muy3Nb8rM7bmY/3Tnj179Oijj6p169YaMWKEnn/+eeYrAQUMyRJgx1NPPaWXXnpJP//8sxYvXpxlv6+//lre3t5as2aN1RpMUVFRd3X9I0eOWL02m836448/VKtWrQx9P/zwQ507dy7D3WF34tKlS1q/fr0mTJigsWPHZhlPVsqVK6e9e/cqPT3dqrp06NAhy/6cFBERodq1a+uZZ57JdH9oaKjWrl2rK1euWA1r/v7770pPT7fcCViuXDmlp6fryJEjliqYJMXHxyshISFD3DVr1tTSpUvl4+OjpUuXqm/fvtq7d6+8vb1z9P0BMA7DcIAdfn5+mj17tsaPH6/HH388y37u7u4ymUxKS0uztB0/flwrVqy4q+t/+umnunLliuX1V199pbNnz1ru0LvtypUrmjx5soYOHZoja0C5u7tLupWc/dP06dOzdXy7du0UFxdnlWDevHlT77//vvz8/NSiRYu7jvG2mJgYrVy5Um+//XaWFaF27dopLS1Ns2bNsmp/7733JMlyt2K7du0kZXyf/+53W926deXr6ys3NzfNmzdPx48f18SJE+/6PQHIO6gsAdkQHh5ut0/79u313nvv6ZFHHlG3bt107tw5ffDBB6pYsaL27t17x9cuVqyYmjZtqhdeeEHx8fGaPn26KlasqBdffNGq3+7du3XPPffotddes3vOEydOaPXq1VZt58+f140bN7R69Wq1aNFC/v7+at68uaZMmaLU1FSVLl1aa9eu1bFjx7IVd9++ffXRRx+pZ8+e2rVrl8qXL6+vvvpKW7du1fTp062qO5J0+PBhq5iuXr0qNzc3q7Y///wz02utXbtW//nPf9SmTZss42nXrp3atGmjN954Q8eOHVPt2rW1YcMGff311+rXr59q1KghSXrggQcUHh6uuXPnKiEhQS1atNAvv/yiBQsWqEOHDmrVqlWW16hR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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Метрики\n", + "roc_auc = roc_auc_score(Y_test, Y_pred_proba)\n", + "f1 = f1_score(Y_test, Y_pred)\n", + "\n", + "conf_matrix = confusion_matrix(Y_test, Y_pred)\n", + "class_report = classification_report(Y_test, Y_pred)\n", + "\n", + "# Вывод результатов\n", + "print(f'Время обучения модели: {train_time:.2f} секунд')\n", + "print(f'ROC-AUC: {roc_auc:.2f}')\n", + "print(f'F1-Score: {f1:.2f}')\n", + "print('Матрица ошибок:')\n", + "print(conf_matrix)\n", + "print('Отчет по классификации:')\n", + "print(class_report)\n", + "\n", + "# Визуализация матрицы ошибок\n", + "plt.figure(figsize=(7, 7))\n", + "sns.heatmap(\n", + " conf_matrix,\n", + " annot=True,\n", + " fmt='d',\n", + " cmap='Blues',\n", + " xticklabels=['Нет приступа', 'Был приступ'],\n", + " yticklabels=['Нет приступа', 'Был приступ']\n", + ")\n", + "plt.title('Матрица ошибок')\n", + "plt.xlabel('Предсказанный класс')\n", + "plt.ylabel('Истинный класс')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# **Вывод к лабораторной работе:**\n", + "\n", + "После обучения модели для предсказания сердечного приступа с использованием логистической регрессии были получены следующие результаты:\n", + "\n", + "1. **Время обучения модели:** 45.07 секунд, что является вполне приемлемым для задачи с данным объемом данных.\n", + "\n", + "2. **ROC-AUC:** Значение ROC-AUC составляет 0.99, что указывает на отличное качество модели в различении классов. Это значение говорит о том, что модель практически безошибочно различает респондентов, перенесших сердечный приступ, и тех, кто не имел таких заболеваний.\n", + "\n", + "3. **F1-Score:** F1-Score равен 0.95, что является отличным результатом. Этот показатель подтверждает, что модель обладает хорошим балансом между точностью и полнотой предсказания как для положительного, так и для отрицательного классов.\n", + "\n", + "4. **Матрица ошибок:**\n", + " - Верно классифицированных отрицательных примеров (False) — 671.\n", + " - Ложные положительные (False positives) — 1.\n", + " - Ложные отрицательные (False negatives) — 59.\n", + " - Верно классифицированных положительных примеров (True) — 613.\n", + "\n", + " Модель продемонстрировала отличные результаты при классификации как положительных, так и отрицательных случаев. Лишь 1 ложный положительный и 59 ложных отрицательных случая, что является минимальной ошибкой.\n", + "\n", + "5. **Метрики по классификации:**\n", + " - **Precision (точность)** для класса \"True\" равен 1.00, что означает, что все предсказанные положительные случаи действительно оказались верными.\n", + " - **Recall (полнота)** для класса \"True\" составил 0.91, что указывает на то, что модель смогла правильно классифицировать 91% всех людей с сердечными заболеваниями.\n", + " - **Precision** для класса \"False\" составляет 0.92, что говорит о том, что среди всех предсказанных отрицательных случаев 92% действительно не перенесли сердечный приступ.\n", + " - **Recall** для класса \"False\" равен 1.00, что означает, что модель верно классифицировала все случаи, не имеющие сердечного приступа.\n", + "\n", + "6. **Accuracy (точность модели):** 0.96, что является отличным результатом. Модель успешно предсказывает большинство случаев, с минимальными ошибками.\n", + "\n", + "### Оценка качества модели:\n", + "Модель показывает выдающиеся результаты с **ROC-AUC** 0.99 и **F1-Score** 0.95. Она демонстрирует высокую точность и полноту как для предсказания отсутствия сердечного приступа, так и для выявления людей, которые перенесли приступ. Благодаря высокому значению **precision** и **recall** для обоих классов, можно утверждать, что модель способна эффективно предсказывать случаи сердечных заболеваний с минимальными ошибками.\n", + "\n", + "**Рекомендации:** Модель продемонстрировала отличные результаты и готова к использованию для предсказания сердечных заболеваний в реальных условиях. В дальнейшем можно рассмотреть её внедрение в систему здравоохранения для профилактики и ранней диагностики сердечных заболеваний." ] } ],