From a1830c3724796647a1cdf547109b91e6b59fe520 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9D=D0=B8=D0=BA=D0=B8=D1=82=D0=B0=20=D0=9F=D0=BE=D1=82?= =?UTF-8?q?=D0=B0=D0=BF=D0=BE=D0=B2?= Date: Sun, 1 Dec 2024 11:09:12 +0400 Subject: [PATCH] =?UTF-8?q?=D0=97=D0=B0=D0=BA=D0=BE=D0=BD=D1=87=D0=B8?= =?UTF-8?q?=D0=BB=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D1=83=20=D1=81=20Featur?= =?UTF-8?q?eTools?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Произвел нормализацию; Использовал категориальное и One Hot кодирование; Разбил на выборки и аугментировал; Обучил модель и исследовал результаты обучения; --- lab_3/lab3.ipynb | 372 +++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 340 insertions(+), 32 deletions(-) diff --git a/lab_3/lab3.ipynb b/lab_3/lab3.ipynb index 6411747..b3e06d3 100644 --- a/lab_3/lab3.ipynb +++ b/lab_3/lab3.ipynb @@ -9,7 +9,7 @@ }, { "cell_type": "code", - "execution_count": 228, + "execution_count": 248, "metadata": {}, "outputs": [], "source": [ @@ -33,7 +33,7 @@ }, { "cell_type": "code", - "execution_count": 229, + "execution_count": 249, "metadata": {}, "outputs": [], "source": [ @@ -49,7 +49,7 @@ }, { "cell_type": "code", - "execution_count": 230, + "execution_count": 250, "metadata": {}, "outputs": [ { @@ -225,7 +225,7 @@ "BMI 31.89 97.65 " ] }, - "execution_count": 230, + "execution_count": 250, "metadata": {}, "output_type": "execute_result" } @@ -244,7 +244,7 @@ }, { "cell_type": "code", - "execution_count": 231, + "execution_count": 251, "metadata": {}, "outputs": [], "source": [ @@ -266,7 +266,7 @@ }, { "cell_type": "code", - "execution_count": 232, + "execution_count": 252, "metadata": {}, "outputs": [ { @@ -584,7 +584,7 @@ "39 CovidPos False 0.0" ] }, - "execution_count": 232, + "execution_count": 252, "metadata": {}, "output_type": "execute_result" } @@ -602,7 +602,7 @@ }, { "cell_type": "code", - "execution_count": 233, + "execution_count": 253, "metadata": {}, "outputs": [], "source": [ @@ -615,7 +615,7 @@ }, { "cell_type": "code", - "execution_count": 234, + "execution_count": 254, "metadata": {}, "outputs": [], "source": [ @@ -660,7 +660,7 @@ }, { "cell_type": "code", - "execution_count": 235, + "execution_count": 255, "metadata": {}, "outputs": [ { @@ -776,7 +776,7 @@ "5 24.27 31.89 " ] }, - "execution_count": 235, + "execution_count": 255, "metadata": {}, "output_type": "execute_result" } @@ -788,7 +788,7 @@ }, { "cell_type": "code", - "execution_count": 236, + "execution_count": 256, "metadata": {}, "outputs": [], "source": [ @@ -818,7 +818,7 @@ }, { "cell_type": "code", - "execution_count": 237, + "execution_count": 257, "metadata": {}, "outputs": [ { @@ -838,7 +838,7 @@ }, { "cell_type": "code", - "execution_count": 238, + "execution_count": 258, "metadata": {}, "outputs": [], "source": [ @@ -869,7 +869,7 @@ }, { "cell_type": "code", - "execution_count": 239, + "execution_count": 259, "metadata": {}, "outputs": [], "source": [ @@ -886,7 +886,7 @@ }, { "cell_type": "code", - "execution_count": 240, + "execution_count": 260, "metadata": {}, "outputs": [ { @@ -1002,7 +1002,7 @@ "5 24.27 31.89 " ] }, - "execution_count": 240, + "execution_count": 260, "metadata": {}, "output_type": "execute_result" } @@ -1020,7 +1020,7 @@ }, { "cell_type": "code", - "execution_count": 241, + "execution_count": 261, "metadata": {}, "outputs": [ { @@ -1047,7 +1047,7 @@ }, { "cell_type": "code", - "execution_count": 242, + "execution_count": 262, "metadata": {}, "outputs": [], "source": [ @@ -1056,7 +1056,7 @@ }, { "cell_type": "code", - "execution_count": 247, + "execution_count": 263, "metadata": {}, "outputs": [ { @@ -1179,7 +1179,7 @@ "BMINorm 0.625000 1.0 " ] }, - "execution_count": 247, + "execution_count": 263, "metadata": {}, "output_type": "execute_result" } @@ -1219,7 +1219,7 @@ }, { "cell_type": "code", - "execution_count": 221, + "execution_count": 264, "metadata": {}, "outputs": [], "source": [ @@ -1228,7 +1228,7 @@ }, { "cell_type": "code", - "execution_count": 222, + "execution_count": 266, "metadata": {}, "outputs": [ { @@ -1380,7 +1380,7 @@ "# Преобразуем датасет с помощью фремйворка\n", "# https://featuretools.alteryx.com/en/stable/getting_started/afe.html\n", "\n", - "entity_set = ft.EntitySet().add_dataframe(df, \"df\", make_index=True, index=\"id\")\n", + "entity_set = ft.EntitySet().add_dataframe(df_norm, \"df\", make_index=True, index=\"id\")\n", "\n", "feature_matrix, feature_defs = ft.dfs(\n", " entityset=entity_set,\n", @@ -1401,7 +1401,7 @@ }, { "cell_type": "code", - "execution_count": 224, + "execution_count": 267, "metadata": {}, "outputs": [ { @@ -1430,15 +1430,12 @@ "\n", "\n", "\n", - "\n", - "\n", "\n", "\n", "\n", "\n", "\n", "\n", - "\n", "\n", "\n", "\n", @@ -1492,9 +1489,6 @@ "\n", "\n", "\n", - "\n", - "\n", - "\n", "\n", "\n", "\n", @@ -1508,7 +1502,13 @@ "\n", "\n", "\n", - "\n" + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n" ] } ], @@ -1523,6 +1523,314 @@ "print(\"Стало признаков:\", len(features_enc))\n", "print(*features_enc, sep='\\n')" ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Разобьем данные на выборки" + ] + }, + { + "cell_type": "code", + "execution_count": 277, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.model_selection import train_test_split" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Размеры выборок:\n", + "Обучающая выборка: (196817, 98)\n", + "Тестовая выборка: (24602, 98)\n", + "Контрольная выборка: (24603, 98)\n" + ] + } + ], + "source": [ + "prepared_dataset = feature_matrix_enc\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.2, 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": 317, + "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+/Zq3769Dh06ZKuZNm2a5syZo4ULF2r37t1yd3dXRESErl69auIeAQAABZXFMAwjv5uQJIvFotWrV6t9+/a2sZ49eyopKcnhCFaWI0eOqGrVqtq7d6/q1KkjSdqwYYPatGmj3377TQEBAVqwYIFeffVVJSYmqkiRIpKk0aNHa82aNTp69KgkqUuXLkpLS9O6detscz/22GOqVauWFi5cKMMwFBAQoBEjRujll1+WJCUnJ8vPz0/R0dHq2rVrrl5jSkqKvL29lZycLC8vrzvdRbcUNHq9qfMB95uENyPzuwUABVRuf3/f89dUbd26Vb6+vqpUqZIGDhyoCxcu2Jbt2rVLPj4+tkAlSeHh4XJyctLu3bttNY0bN7YFKkmKiIjQsWPHdOnSJVtNeHi43XYjIiK0a9cuSVJ8fLwSExPtary9vVW/fn1bDQAAeLAVyu8GbqVVq1bq0KGDgoODdfz4cf3zn/9U69attWvXLjk7OysxMVG+vr526xQqVEjFixdXYmKiJCkxMVHBwcF2NX5+frZlxYoVU2Jiom3sxpob57hxvexqspOenq709HTb85SUlDt5+QAAoAC5p0PVjafVatSooUceeUTly5fX1q1b1bx583zsLHemTJmiiRMn5ncbAADgb3DPn/670cMPP6ySJUvql19+kST5+/vr7NmzdjXXr1/XxYsX5e/vb6s5c+aMXU3W89vV3Lj8xvWyq8nOmDFjlJycbHucPHnyjl4vAAAoOApUqPrtt9904cIFlS5dWpIUFhampKQk7du3z1azefNmWa1W1a9f31azbds2Xbt2zVazceNGVapUScWKFbPVxMTE2G1r48aNCgsLkyQFBwfL39/friYlJUW7d++21WTHxcVFXl5edg8AAHB/yvPpv8zMTK1Zs0ZHjhyRJFWrVk1PPvmknJ2dcz1Hamqq7aiT9OcF4bGxsSpevLiKFy+uiRMnqmPHjvL399fx48c1cuRIhYSEKCIiQpJUpUoVtWrVSi+88IIWLlyoa9euafDgweratasCAgIkSd27d9fEiRPVp08fjRo1SocOHdLs2bM1c+ZM23ZffPFFNWnSRDNmzFBkZKQ++eQT/fDDD7bbLlgsFg0bNkyvv/66KlSooODgYI0dO1YBAQF2n1YEAAAPrjzdUuGXX35RZGSkfvvtN1WqVEmSdOzYMQUGBmr9+vUqX758rubZunWrmjVr5jAeFRWlBQsWqH379tq/f7+SkpIUEBCgli1bavLkyXYXjF+8eFGDBw/WF198IScnJ3Xs2FFz5syRh4eHrebgwYMaNGiQ9u7dq5IlS2rIkCEaNWqU3TaXL1+u1157TQkJCapQoYKmTZumNm3a2JYbhqHx48fr3XffVVJSkh5//HHNnz9fFStWzPV+45YKQP7hlgoA8iq3v7/zFKratGkjwzC0ZMkSFS9eXJJ04cIFPfvss3JyctL69fyCzw6hCsg/hCoAeZXb3995Ov337bff6vvvv7cFKkkqUaKE3nzzTTVs2DAvUwIAABRoebpQ3cXFRZcvX3YYT01NtbvJJgAAwIMiT6Gqbdu26tevn3bv3i3DMGQYhr7//nsNGDBATz75pNk9AgAA3PPyFKrmzJmj8uXLKywsTK6urnJ1dVXDhg0VEhKi2bNnm90jAADAPS9P11T5+Pho7dq1iouLs30pcZUqVRQSEmJqcwAAAAXFXX1NTYUKFVShQgVJf963CgAA4EGVp9N/8fHx6tatmwYOHKhLly7pySeflIuLiypVqqSDBw+a3SMAAMA9L0+hqn///jpy5IgOHTqkJ554QhkZGVq7dq2qVq2qYcOGmdwiAADAvS9Pp/92796t7du3q1y5cipevLj27t2rRx99VCEhIbbv3AMAAHiQ5OlI1eXLl1W6dGl5e3uraNGi8vHxkfTnBezZ3b8KAADgfpfnC9U3bNggb29vWa1WxcTE6NChQ0pKSjKxNQAAgIIjz6EqKirK9uf+/fvb/myxWO6uIwAAgAIoT6HKarWa3QcAAECBlqdrqj788EOlp6eb3QsAAECBladQ1atXLyUnJ5vdCwAAQIGVp1BlGIbZfQAAABRoeb5Q/bPPPpOXl1e2y55//vk8NwQAAFAQ5TlUTZs2Tc7Ozg7jFouFUAUAAB44eQ5VP/zwg3x9fc3sBQAAoMDK0zVVAAAAsJenUFWuXLlsT/0BAAA8qPJ0+i8+Pt7sPgAAAAq0PB2pGjp0qObMmeMwPnfuXA0bNuxuewIAAChw8hSqVq5cqYYNGzqMN2jQQCtWrLjrpgAAAAqaPIWqCxcuyNvb22Hcy8tL58+fv+umAAAACpo8haqQkBBt2LDBYfyrr77Sww8/fNdNAQAAFDR5ulB9+PDhGjx4sM6dO6cnnnhCkhQTE6MZM2Zo1qxZZvYHAABQIOQpVPXu3Vvp6el64403NHnyZElSUFCQFixYwN3UAQDAAynPd1QfOHCgBg4cqHPnzsnNzU0eHh5m9gUAAFCg5PmO6tevX9emTZu0atUqGYYhSTp16pRSU1NNaw4AAKCgyNORql9//VWtWrXSiRMnlJ6erhYtWsjT01NTp05Venq6Fi5caHafAAAA97Q8Hal68cUXVadOHV26dElubm628aeffloxMTGmNQcAAFBQ5OlI1fbt2/Xdd9+pSJEiduNBQUH6/fffTWkMAACgIMnTkSqr1arMzEyH8d9++02enp533RQAAEBBk6dQ1bJlS7v7UVksFqWmpmr8+PFq06aNWb0BAAAUGHk6/TdjxgxFRESoatWqunr1qrp37664uDiVLFlSy5YtM7tHAACAe16eQlXZsmV14MABffLJJzp48KBSU1PVp08f9ejRw+7CdQAAgAdFnm/+WahQIT377LNm9gIAAFBg5SlUff7557dc/uSTT+apGQAAgIIqT6Gqffv2ds8tFovtruoWiyXbTwYCAADcz/J8S4UbH0WLFtUvv/yS460WAAAA7nd5/u6/G1ksFjOmAQAAKLDuOlQlJCQoLS2Nm34CAIAHWp6uqerQoYMk6cqVK/r+++/VvHlzlSpVytTGAAAACpI8hSpvb29Jkr+/v9q1a6fevXub2hQAAEBBk6dQtXjxYrP7AAAAKNDyFKpSUlJuudzLyytPzQAAABRUeQpVPj4+2X7izzAM7lMFAAAeSHkKVQ8//LDOnj2r0aNHq2HDhmb3BAAAUODkKVQdOXJEb7/9tt544w3t379f06ZNU3BwsNm9AQAAFBh5uk9V4cKFNXz4cMXFxalMmTJ65JFHNGLECCUlJZncHgAAQMFwVzf/LF68uGbNmqX9+/crISFBISEhmjVrlkmtAQAAFBx5Ov1Xu3ZthwvVDcNQenq6RowYoWHDhpnRGwAAQIGRp1DVvn17k9sAAAAo2PIUqsaPH292HwAAAAUaN/8EAAAwATf/BAAAMEGeQpUkrVixQsWLFzezFwAAgAIrz6GqYcOG8vX1NbMXAACAAivPoernn3/WhQsX5O7uLn9/fxUpUsTMvgAAAAqUPN/8s3nz5qpWrZqCg4Pl7u6uGjVqaObMmWb2BgAAUGDk6UhVfHy8DMPQtWvXlJKSolOnTmnPnj0aO3asrl+/rldeecXsPgEAAO5peQpV5cqVs3seGhqqdu3aqWLFipo0aRKhCgAAPHDyfE1Vdrp27apq1aqZOSUAAECBcFehat++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", + "\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": "code", + "execution_count": 325, + "metadata": {}, + "outputs": [], + "source": [ + "from imblearn.over_sampling import RandomOverSampler\n", + "from imblearn.under_sampling import RandomUnderSampler\n", + "\n", + "def oversample(X: DataFrame, Y: Series, sampling_strategy=0.5) -> tuple[DataFrame, Series]:\n", + " sampler = RandomOverSampler(sampling_strategy=sampling_strategy)\n", + " x_over, y_over = sampler.fit_resample(X, Y)\n", + " return x_over, y_over \n", + "\n", + "def undersample(X: DataFrame, Y: Series, sampling_strategy=1) -> tuple[DataFrame, Series]:\n", + " sampler = RandomUnderSampler(sampling_strategy=sampling_strategy)\n", + " x_over, y_over = sampler.fit_resample(X, Y)\n", + " return x_over, y_over " + ] + }, + { + "cell_type": "code", + "execution_count": 327, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Данные до аугментации в обучающей выборке\n", + "HadHeartAttack\n", + "False 186069\n", + "True 10748\n", + "Name: count, dtype: int64\n", + "\n", + "Данные после аугментации в обучающей выборке\n", + "HadHeartAttack\n", + "False 10748\n", + "True 10748\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)\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": 349, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "def show_distribution(df: Series, column_name=\"\") -> None:\n", + " plt.pie(\n", + " df.value_counts(),\n", + " labels=class_counts.index,\n", + " autopct='%1.1f%%',\n", + " colors=['lightblue', 'pink'],\n", + " startangle=45,\n", + " explode=(0, 0.05)\n", + " )\n", + " plt.title(\"Распределение классов\" + (f\"\\n\\\"{column_name}\\\"\" if column_name else \"\"))\n", + " plt.show()\n", + "\n", + "show_distribution(Y_train_samplied, column_name=target_column)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Обучение модели" + ] + }, + { + "cell_type": "code", + "execution_count": 356, + "metadata": {}, + "outputs": [], + "source": [ + "import time\n", + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.ensemble import RandomForestClassifier\n", + "from sklearn.metrics import roc_auc_score, f1_score, confusion_matrix, classification_report\n", + "import seaborn as sns" + ] + }, + { + "cell_type": "code", + "execution_count": 352, + "metadata": {}, + "outputs": [], + "source": [ + "model = RandomForestClassifier()\n", + "\n", + "start_time = time.time()\n", + "\n", + "model.fit(X_train, Y_train)\n", + "\n", + "train_time = time.time() - start_time" + ] + }, + { + "cell_type": "code", + "execution_count": 353, + "metadata": {}, + "outputs": [], + "source": [ + "Y_pred = model.predict(X_test)\n", + "Y_pred_proba = model.predict_proba(X_test)[:, 1]" + ] + }, + { + "cell_type": "code", + "execution_count": 360, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Время обучения модели: 51.06 секунд\n", + "ROC-AUC: 0.87\n", + "F1-Score: 0.23\n", + "Матрица ошибок:\n", + "[[23151 108]\n", + " [ 1155 188]]\n", + "Отчет по классификации:\n", + " precision recall f1-score support\n", + "\n", + " False 0.95 1.00 0.97 23259\n", + " True 0.64 0.14 0.23 1343\n", + "\n", + " accuracy 0.95 24602\n", + " macro avg 0.79 0.57 0.60 24602\n", + "weighted avg 0.94 0.95 0.93 24602\n", + "\n" + ] + }, + { + "data": { + "image/png": "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ex63fPnyjn7nz5/Xd999l6zP7du3NWHCBC1cuFDbtm1TRESEOnTocM9jzpo1SxcuXHBqCw0NVZMmTVSuXDmFhITo119/1fPPP6+EhATNmDHDcf527dqpXbt2jvczZsxQ27ZtlZCQoB9++MFxvIsXL2rNmjXq3r17qq8lOjpa1atX15o1a3To0CH16tVLr776qnbu3Hn/Dx94ALvdrtdee83xZy81Q5R39z9//rwGDx6crM+GDRsUFhamzZs369tvv9WKFSs0bty4ex5zyJAh8vT0dGqbPXu2+vbtq169eungwYP64YcfVKJECUnSrl27nGKePn2643379u3Vs2dPrV27VufPn3ccb/Xq1bp9+7bat2+fpmsBHmcMKWYSq1evlre3t1NbQkKC0/tJkybplVdecfxrtmTJkpo5c6YaNmyo2bNnK3fu3I6+7u7u8vb2VkBAwAPPnTVrVqd+dx8nSVxcnGbNmqVatWpJkhYsWKCyZctq586dqlmzplPfq1ev6v3339fQoUM1atQoR/vkyZNVo0YNffbZZ4628uXLO7729fWVJHl5eUlSstg7deqk+fPnq23btpKkr7/+WkWKFFGjRo1SfS0FCxZ0Sj779++vX375RUuXLk12Hci87v558/PzU9myZTVkyBA9++yzD33MuLg4+fr6Ov78pWaIMnv27E5/Xv/5d4B052d53rx5yp49u8qXL6/33ntPQ4YM0fjx4+Xm5vxv7k2bNmn79u3q2bOnNm3a5Gh///33NXjwYL311luOtqeeekqSnCp7WbJkcboGSapbt65Kly6tr776Su+8844kOX4O7443NdcCPM6ocGUSjRs3VmhoqNNr7ty5Tn3279+v4OBgeXt7O15BQUFKTEzUyZMnDY0va9asjr+gJalMmTLy8/NTWFhYsr7vvfeeGjdurHr16jm1J1W4HtZrr72mdevW6ezZs5LuDHUmDUWmVkJCgsaPH6+KFSsqd+7c8vb21i+//KLTp08/dFx4/Nz987ZixQoVKFBALVu21I4dO5z61a1bVzlz5lThwoXVvn17nTlz5p7HvHHjhnLkyJHusVauXFnZs2d3vK9Tp44iIyOdhvSlOxW2wYMHa8yYMY5/vEh3KsHnzp17pJ+9nj17Oua8XbhwQT///LNTZRlwBVS4MokcOXI4SvxJ/vmXe2RkpF5//XW9+eabyfYvUqSIofGl1vHjxzV37lyFhoYmiz+pcvWwqlatqsqVK2vhwoV69tlndfjwYa1ZsyZNx5gyZYpmzJih6dOnq2LFisqRI4cGDBjgNCcGmd8/f97mzZunFStWaOXKlY4qriQtWbJEZcuWVXh4uN5880317t1bq1evTvGY586dU2BgoOGx38vChQt169Yt9e7dWxMmTHC0P+rPnSR17txZw4YNU0hIiLZv367ixYurfv36j3xc4HFChcuFVKtWTUeOHFGJEiWSvdzd3Q09d3x8vHbv3u14f+zYMUVERKhs2bJO/YYOHaqePXsmSx4lqVKlStqwYcMjxdGzZ08FBwdr/vz5atq0qQoXLpym/bdt26YXX3xR//73v1W5cmU98cQT+v333x8pJjz+3Nzc5ObmlmwYv3DhwipRooTq1aunHj163HMS/YkTJ3Tt2jVVrVo13WPbv3+/oqKiHO9/++03eXt7O/3Zv337tkaMGKEPP/xQ2bJlc9o/Z86cKlas2CP97OXJk0etWrXS/PnzFRwcrG7duj30sYDHFQmXCxk6dKi2b9+ufv36KTQ0VMePH9eqVasck+aNlC1bNvXv3187duzQnj171LVrV9WuXdtp3tMff/yhzZs3a/To0SkeY/jw4dq1a5feeOMNHThwQEePHtXs2bN1+fLlVMfRqVMnnTlzRv/5z38eakijZMmSWr9+vbZv366wsDC9/vrrySb3I/OLiYlReHi4wsPDFRYWpv79+ysyMlItWrRw6hcbG6vo6Gj99ddfWr58uSpUqJDsWLt379arr76qihUrqkaNGukea2xsrHr06KEjR47op59+0pgxY9SvXz+n+VuLFi3Sk08+meJ6ftKdO3g/+ugjzZw5U8ePH9fevXv1ySefpCmOnj17asGCBQoLC1OXLl0e5ZKAxxIJlwupVKmStmzZot9//13169dX1apVNXr0aFOGMbJnz66hQ4eqU6dOevrpp+Xt7a0lS5Y49bl165ZGjBiR4qR7SSpVqpTWrVun/fv3q2bNmqpTp45WrVqlrFlTPzLu6+urNm3ayNvb+56/XO5n5MiRqlatmoKCgtSoUSMFBAQ81HHweFu7dq0KFCigAgUKqFatWvrtt9+0aNEipxswJKlWrVry8vJSlSpV5O3trS+++CLZsQYOHKhChQrpp59+StN8wtRq0qSJSpYsqQYNGqh9+/Z6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x/BUtWrVdOzYsfsOFUVHR2vnzp169dVX79mnUqVK2rBhg9Ow3j+9+uqr6t27t5o3b64KFSro+++/10svvSTpTnJRt25dvfHGG47+J06cSHaM3LlzK3fu3CpTpoyWL1+u7777To0bN071/jly5HC6Vn9//2R93N3dnfqcOXMmWR83NzdHn5IlS+pf//qXQkND1bRp0xSvffz48apfv74aNGiQbOL7vQwbNkwvv/yyihQpogYNGqh169ZO1cpdu3YpZ86cevLJJ1Pcf9u2bXrxxRf173//W9KdeXK///67ypUr54jby8tLGzZsUM+ePZPtX6lSJc2dO1dXr16lygW4OCpcwANky5ZN/fv3144dO7Rnzx517dpVtWvXdiRgo0eP1sKFCzVu3DgdPnxYYWFhWrx4sUaOHCnpTgVs9OjRkqR69eopPDxc4eHhioqKUkxMjK5fvy7pzuTrXbt26Y033tCBAwd09OhRzZ49W5cvX3bEkvRLu2jRopoyZYr69OmjK1euSLrzy3/37t365Zdf9Pvvv2vUqFHatWuX07V89tlnOnz4sE6dOqWvv/5a69evV9WqVVO9f3qLjo5WVFSU9uzZo19//TXFYT/pzo0Lc+bM0eTJk9N0/KTPq2bNmhowYICjYpeYmKgffvhB7777rjp37qwsWbKkuH/JkiW1fv16bd++XWFhYXr99dd14cIFx3ZPT08NHTpU77zzjhYuXKgTJ07ot99+05dffilJ6tixowICAtSqVStt27ZNf/75p7777juFhISk6ToAPP5IuIAHyJ49u4YOHapOnTrp6aeflre3t5YsWeLYHhQUpNWrV2vdunV66qmnVLt2bU2bNk1FixaVJE2dOlVTpkzRzZs3VaJECRUoUEAFChTQ0qVLtXbtWr311luSpFKlSmndunXav3+/atasqTp16mjVqlXKmjXlQvTrr7+uChUqqH///o73rVu3Vvv27VWrVi1duXLFqVolSWvWrFGjRo1UpkwZjRs3Tu+++666d++e6v3T0/Xr1+Xl5aUcOXLoueee00svvaRBgwal2DcuLk7dunVTqVKlHvp848aNU2JiosaOHatr167pjTfeUJcuXfTRRx/dc5+RI0eqWrVqCgoKUqNGjRzJ091GjRqlwYMHa/To0Spbtqzat2+vixcvSrpT6Vu3bp38/f3VokULVaxYUR988ME9EzwAmRcLnwL3ERwcrAEDBjzSyvNJc4dSmkO0cuVKrVy5UsHBwQ99fABAxsccLsBgd9+t90+enp7y9fU1MRoAgBWocAH3kR4VLgAASLgAAAAMxqR5AAAAg5FwAQAAGIyECwAAwGAkXAAAAAYj4QIAADAYCRcAAIDBSLgAAAAMRsIFAABgsP8HK1K4WKz88PEAAAAASUVORK5CYII=", + "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()" + ] } ], "metadata": {