From a1124363afd861fcccc68165225c4565d79b349b Mon Sep 17 00:00:00 2001 From: Shvetsov Nikolai Date: Fri, 8 May 2026 01:31:17 +0300 Subject: [PATCH] newnew_complete --- CalibrationAI.ipynb | 122 +++++++++++++++++++++++++++++++++++++++----- 1 file changed, 108 insertions(+), 14 deletions(-) diff --git a/CalibrationAI.ipynb b/CalibrationAI.ipynb index f89f4f8..cda75a7 100644 --- a/CalibrationAI.ipynb +++ b/CalibrationAI.ipynb @@ -20,7 +20,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 1, "id": "279cb38d-792f-4e96-9fdd-d1f7e9e38c26", "metadata": {}, "outputs": [], @@ -38,7 +38,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 2, "id": "8590b5b5-3b27-40ac-9939-ad3a97b63586", "metadata": {}, "outputs": [], @@ -52,7 +52,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 3, "id": "d2ae71d6-2668-40bf-8bb5-c956636afffe", "metadata": {}, "outputs": [], @@ -65,7 +65,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 4, "id": "cdfa8de5-e650-48e7-841c-19eb87c0f6bb", "metadata": {}, "outputs": [], @@ -78,7 +78,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 5, "id": "5bf0bc01-9d83-416c-a3bc-31a4bbd8ec30", "metadata": {}, "outputs": [ @@ -131,9 +131,34 @@ "## Работа с внешним датасетом (OpenML)" ] }, + { + "cell_type": "markdown", + "id": "29ca3b05-f3a0-43b0-bfa6-3bcf98177a3a", + "metadata": {}, + "source": [ + "## Работа с внешним датасетом OpenML\n", + "\n", + "В качестве внешнего набора данных используется датасет OpenML с идентификатором 40691. \n", + "Он применяется для проверки работы модели на данных, которые не были сгенерированы внутри программы.\n", + "\n", + "Цель данного этапа — загрузить внешний датасет, выполнить предобработку данных, обучить модель логистической регрессии и сравнить вероятностные предсказания до и после калибровки." + ] + }, + { + "cell_type": "markdown", + "id": "70df55d6-8846-418d-af3e-06e3589e07f7", + "metadata": {}, + "source": [ + "## Предобработка данных\n", + "\n", + "Так как внешний датасет может содержать не только числовые, но и категориальные признаки, перед обучением модели необходимо привести данные к числовому виду.\n", + "\n", + "Для этого используется `pd.get_dummies()`, который преобразует категориальные признаки в набор числовых столбцов." + ] + }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 6, "id": "0f631ab3-2ee9-42ab-ad33-9cdd39effb08", "metadata": {}, "outputs": [ @@ -184,7 +209,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 7, "id": "5a4f1972-227d-440e-a6af-0eaccec4068c", "metadata": {}, "outputs": [ @@ -204,7 +229,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 8, "id": "d1005e07-6b9f-4016-996f-c7f393422517", "metadata": {}, "outputs": [ @@ -241,9 +266,22 @@ "print(pd.Series(y_binary).value_counts())" ] }, + { + "cell_type": "markdown", + "id": "4ff6cc3d-926b-433a-a36b-4f3f21d26d99", + "metadata": {}, + "source": [ + "## Подготовка целевой переменной\n", + "\n", + "Исходная целевая переменная внешнего датасета содержит несколько классов. \n", + "Для построения калибровочной кривой задача была приведена к бинарной классификации.\n", + "\n", + "В данной работе один класс рассматривается как положительный, а остальные значения объединяются в отрицательный класс." + ] + }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 9, "id": "7337a1b6-c7f7-40e6-a352-9ff28e437bf8", "metadata": {}, "outputs": [ @@ -278,9 +316,21 @@ "print(pd.Series(y_binary).value_counts())" ] }, + { + "cell_type": "markdown", + "id": "4c844eb0-e95d-4636-8f21-4032a61bad9c", + "metadata": {}, + "source": [ + "## Разделение данных на обучающую и тестовую выборки\n", + "\n", + "После подготовки признаков и целевой переменной данные разделяются на обучающую и тестовую выборки.\n", + "\n", + "Обучающая выборка используется для обучения модели, а тестовая — для проверки качества её предсказаний." + ] + }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 10, "id": "1033c8a3-4962-4cef-8520-94cbb98e4e55", "metadata": {}, "outputs": [], @@ -294,9 +344,21 @@ ")" ] }, + { + "cell_type": "markdown", + "id": "87b7a4be-25f1-4726-a92b-ce3e786ff1c7", + "metadata": {}, + "source": [ + "## Обучение модели без калибровки\n", + "\n", + "На подготовленных данных обучается модель `LogisticRegression`.\n", + "\n", + "После обучения получаются вероятностные предсказания с помощью метода `predict_proba()`. Эти вероятности будут использоваться для сравнения с результатами после калибровки." + ] + }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 11, "id": "b3873576-69c8-4d05-933a-f1ee5ecb39d4", "metadata": {}, "outputs": [ @@ -324,9 +386,21 @@ "print(probs[:10])" ] }, + { + "cell_type": "markdown", + "id": "46313a16-a495-4615-9e83-eb5eafae57e3", + "metadata": {}, + "source": [ + "## Калибровка вероятностей\n", + "\n", + "Для калибровки используется `CalibratedClassifierCV` с методом `sigmoid`.\n", + "\n", + "Калибровка нужна для того, чтобы вероятностные предсказания модели лучше соответствовали реальной частоте событий." + ] + }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 12, "id": "e453a306-7524-4d92-aea5-f8d04e99ebf1", "metadata": {}, "outputs": [ @@ -362,7 +436,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 13, "id": "949ce6b5-5f00-4e58-a882-351831923d5c", "metadata": {}, "outputs": [ @@ -408,9 +482,21 @@ "plt.show()" ] }, + { + "cell_type": "markdown", + "id": "61dff203-f0d6-4756-94e4-7eeda7cc6d3e", + "metadata": {}, + "source": [ + "## Построение калибровочной кривой\n", + "\n", + "Калибровочная кривая показывает, насколько предсказанные моделью вероятности соответствуют реальным значениям.\n", + "\n", + "Чем ближе линия модели к диагональной идеальной линии, тем лучше откалиброваны вероятности." + ] + }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 14, "id": "2b772749-d774-4882-9a1a-06f23ed23b1f", "metadata": {}, "outputs": [ @@ -442,6 +528,14 @@ "metadata": {}, "outputs": [], "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f2af889c-126a-49f7-b2e6-0e051ff08e9c", + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": {