practica4/.ipynb_checkpoints/week4_scikit_learn-checkpoint.ipynb

1100 lines
152 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"cells": [
{
"cell_type": "markdown",
"id": "575dd32a-7078-4b98-b9d8-c24b8023aa7a",
"metadata": {},
"source": [
"### Базовая нейросеть"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "c49bf083-81ba-4158-9b49-9eb74fbe7a31",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" precision recall f1-score support\n",
"\n",
" 0 1.00 1.00 1.00 8\n",
" 1 1.00 0.29 0.44 14\n",
" 2 0.44 1.00 0.62 8\n",
"\n",
" accuracy 0.67 30\n",
" macro avg 0.81 0.76 0.69 30\n",
"weighted avg 0.85 0.67 0.64 30\n",
"\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\Users\\Настя\\AppData\\Roaming\\Python\\Python313\\site-packages\\sklearn\\neural_network\\_multilayer_perceptron.py:691: ConvergenceWarning: Stochastic Optimizer: Maximum iterations (500) reached and the optimization hasn't converged yet.\n",
" warnings.warn(\n"
]
}
],
"source": [
"from sklearn.datasets import load_iris\n",
"from sklearn.model_selection import train_test_split\n",
"from sklearn.neural_network import MLPClassifier\n",
"from sklearn.metrics import classification_report\n",
"\n",
"# Загрузка и разбиение данных\n",
"X, y = load_iris(return_X_y=True)\n",
"X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)\n",
"\n",
"# Модель MLP — многослойный перцептрон\n",
"clf = MLPClassifier(hidden_layer_sizes=(10,), activation='relu', max_iter=500)\n",
"clf.fit(X_train, y_train)\n",
"\n",
"# Отчёт о точности\n",
"print(classification_report(y_test, clf.predict(X_test)))"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "09288ca9-9f9e-4eef-8d66-536a547b68e0",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" precision recall f1-score support\n",
"\n",
" 0 1.00 1.00 1.00 10\n",
" 1 0.91 1.00 0.95 10\n",
" 2 1.00 0.90 0.95 10\n",
"\n",
" accuracy 0.97 30\n",
" macro avg 0.97 0.97 0.97 30\n",
"weighted avg 0.97 0.97 0.97 30\n",
"\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\Users\\Настя\\AppData\\Roaming\\Python\\Python313\\site-packages\\sklearn\\neural_network\\_multilayer_perceptron.py:691: ConvergenceWarning: Stochastic Optimizer: Maximum iterations (100) reached and the optimization hasn't converged yet.\n",
" warnings.warn(\n"
]
}
],
"source": [
"from sklearn.datasets import load_iris\n",
"from sklearn.model_selection import train_test_split\n",
"from sklearn.neural_network import MLPClassifier\n",
"from sklearn.metrics import classification_report\n",
"\n",
"# Загрузка и разбиение данных\n",
"X, y = load_iris(return_X_y=True)\n",
"X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)\n",
"\n",
"# Модель MLP — многослойный перцептрон\n",
"clf = MLPClassifier(hidden_layer_sizes=(10,), activation='relu', max_iter=100)\n",
"clf.fit(X_train, y_train)\n",
"\n",
"# Отчёт о точности\n",
"print(classification_report(y_test, clf.predict(X_test)))"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "b75329e1-f502-4b64-b1f8-ddf7c2f968a3",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" precision recall f1-score support\n",
"\n",
" 0 1.00 1.00 1.00 11\n",
" 1 1.00 1.00 1.00 7\n",
" 2 1.00 1.00 1.00 12\n",
"\n",
" accuracy 1.00 30\n",
" macro avg 1.00 1.00 1.00 30\n",
"weighted avg 1.00 1.00 1.00 30\n",
"\n"
]
}
],
"source": [
"from sklearn.datasets import load_iris\n",
"from sklearn.model_selection import train_test_split\n",
"from sklearn.neural_network import MLPClassifier\n",
"from sklearn.metrics import classification_report\n",
"\n",
"# Загрузка и разбиение данных\n",
"X, y = load_iris(return_X_y=True)\n",
"X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)\n",
"\n",
"# Модель MLP — многослойный перцептрон\n",
"clf = MLPClassifier(hidden_layer_sizes=(10,), activation='relu', max_iter=2500)\n",
"clf.fit(X_train, y_train)\n",
"\n",
"# Отчёт о точности\n",
"print(classification_report(y_test, clf.predict(X_test)))"
]
},
{
"cell_type": "markdown",
"id": "896fbf32-16f5-4df2-ae61-5d36cfda43e1",
"metadata": {},
"source": [
"## Самостоятельное задание"
]
},
{
"cell_type": "markdown",
"id": "60d4d4f6-c1c0-400f-b879-2bbfd2010181",
"metadata": {},
"source": [
"**Цель задачи:**\n",
"Продемонстрировать работу алгоритма Spectral Co-Clustering для одновременной кластеризации строк и столбцов матрицы данных.\n",
"\n",
"● Применить алгоритм к синтетическим данным (make_gaussian_quantiles).\n",
"\n",
"● Протестировать на реальном датасете (подобранном под задачу бикластеризации, например, \"MovieLens\" с оценками фильмов).\n",
"\n",
"● Визуализировать результаты и интерпретировать бикластеры."
]
},
{
"cell_type": "markdown",
"id": "fb5b73ed-399f-4542-8956-fe52ac1b86fb",
"metadata": {},
"source": [
"### **1. Синтетический датасет: Gaussian Quantiles**"
]
},
{
"cell_type": "markdown",
"id": "91f6c644-1931-4c5e-90be-f27b86653e06",
"metadata": {},
"source": [
" **Импорт библиотек**"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "b7fd92ec-3d19-48fc-90ba-719271e72d28",
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"from sklearn.datasets import make_gaussian_quantiles\n",
"from sklearn.cluster import SpectralCoclustering\n",
"from sklearn.metrics import consensus_score\n"
]
},
{
"cell_type": "markdown",
"id": "1c1521d5-772c-4252-8a23-efa51d02120a",
"metadata": {},
"source": [
"**Генерация данных**"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "b327893d-979a-41d6-82eb-a64884b1d665",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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In6xfQffD9/C98O38P3wz/fDUybEgYNViYiIyDQMRIiIiMg0DESCTHh4OB599FH9P5mP74dv4fvhW/h+BMf74dODVYmIiCiwMSNCREREpmEgQkRERKZhIEJERESmYSBCREREpmEgQkRERKZhIBKk9uzZgxtuuAHNmzdHZGQkWrZsqadl5eTkmN20oPX000+jb9++iIqKQkJCgtnNCTqvv/46mjVrhoiICJx55pn4888/zW5S0Fq6dClGjx6ty4PL8h5z5swxu0lBbcqUKejVq5debqVOnTq46KKLsHXr1iq7fwYiQWrLli16LZ+3334bGzduxEsvvYS33noLDz74oNlNC1oSBI4bNw6TJk0yuylBZ+bMmbj77rt1ML569Wp07doVw4cPx7Fjx8xuWlBKT0/X74EEh2S+X375BbfeeitWrFiBhQsXIjc3F8OGDdPvU1VgHREq9Pzzz+PNN9/Erl27zG5KUPvggw9w5513IikpyeymBA3JgMgZ32uvvaZ/lyBdFve6/fbb8cADD5jdvKAmGZHZs2frs3DyDcePH9eZEQlQBgwYUOn7Y0aECiUnJ6NGjRpmN4PI65moVatWYejQocUW3JTfly9fbmrbiHz1WCGq6njBQIS0HTt2YOrUqbj55pvNbgqRV504cQI2mw1169Ytdr38fuTIEdPaReSLJFsoGdt+/fqhU6dOVXKfDEQCjKSRJZXp7iLjQ4o6ePAgRowYoccnTJw40bS2B6KKvB9ERL5Kxops2LABn3/+eZXdZ0iV3RP5hHvuuQcTJkxwu02LFi0Kfz506BAGDRqkZ2u88847XmhhcCnv+0HeV6tWLVitVhw9erTY9fJ7vXr1TGsXka+57bbbMH/+fD2rqVGjRlV2vwxEAkzt2rX1pSwkEyJBSM+ePTF9+nTdL07mvR9kjrCwMP0dWLRoUeGASEk/y++y4yUKdkopPXBbBg0vWbJEl32oSgxEgpQEIQMHDkTTpk3xwgsv6FHQDjwLNMe+fftw6tQp/b+MWVizZo2+vlWrVoiJiTG7eQFNpu5ee+21OOOMM9C7d2+8/PLLemriddddZ3bTglJaWpoet+awe/du/X2QwZFNmjQxtW3B2h3z6aefYu7cubqWiGPsVHx8vK5DVWkyfZeCz/Tp02XattMLmePaa691+n4sXrzY7KYFhalTp6omTZqosLAw1bt3b7VixQqzmxS05DPv7Lsg3xHyPlfHCjmOVAXWESEiIiLTcFAAERERmYaBCBEREZmGgQgRERGZhoEIERERmYaBCBEREZmGgQgRERGZhoEIERERmYaBCBEREZmGgQgRERGZhoEIERERmYaBCBEREcEs/w+goTRdNcHp6QAAAABJRU5ErkJggg==",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"X, y = make_gaussian_quantiles(n_features=2, n_classes=3, random_state=42)\n",
"plt.scatter(X[:, 0], X[:, 1], c=y, cmap='viridis')\n",
"plt.title(\"Синтетические данные: Gaussian Quantiles\")\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"id": "6e0ba7ab-893b-4a1a-ad5f-e39791e4fd68",
"metadata": {},
"source": [
"**Препроцессинг**"
]
},
{
"cell_type": "markdown",
"id": "9f1807dd-e7b7-427d-bebd-4b5c4adaa5c2",
"metadata": {},
"source": [
"Алгоритм требует матрицу (например, матрицу сходства). Преобразуем данные в матрицу попарных расстояний:"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "f86044fd-9219-4be8-b839-87467dbbeff2",
"metadata": {},
"outputs": [],
"source": [
"from sklearn.metrics.pairwise import pairwise_distances\n",
"matrix = pairwise_distances(X)"
]
},
{
"cell_type": "markdown",
"id": "66a319a3-6db0-4eaf-b394-3c6ceebcf676",
"metadata": {},
"source": [
"**Обучение модели**"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "d5a8eb6f-501f-4de3-80c3-a1764c1f82df",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<style>#sk-container-id-1 {\n",
" /* Definition of color scheme common for light and dark mode */\n",
" --sklearn-color-text: #000;\n",
" --sklearn-color-text-muted: #666;\n",
" --sklearn-color-line: gray;\n",
" /* Definition of color scheme for unfitted estimators */\n",
" --sklearn-color-unfitted-level-0: #fff5e6;\n",
" --sklearn-color-unfitted-level-1: #f6e4d2;\n",
" --sklearn-color-unfitted-level-2: #ffe0b3;\n",
" --sklearn-color-unfitted-level-3: chocolate;\n",
" /* Definition of color scheme for fitted estimators */\n",
" --sklearn-color-fitted-level-0: #f0f8ff;\n",
" --sklearn-color-fitted-level-1: #d4ebff;\n",
" --sklearn-color-fitted-level-2: #b3dbfd;\n",
" --sklearn-color-fitted-level-3: cornflowerblue;\n",
"\n",
" /* Specific color for light theme */\n",
" --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
" --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
" --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
" --sklearn-color-icon: #696969;\n",
"\n",
" @media (prefers-color-scheme: dark) {\n",
" /* Redefinition of color scheme for dark theme */\n",
" --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
" --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
" --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
" --sklearn-color-icon: #878787;\n",
" }\n",
"}\n",
"\n",
"#sk-container-id-1 {\n",
" color: var(--sklearn-color-text);\n",
"}\n",
"\n",
"#sk-container-id-1 pre {\n",
" padding: 0;\n",
"}\n",
"\n",
"#sk-container-id-1 input.sk-hidden--visually {\n",
" border: 0;\n",
" clip: rect(1px 1px 1px 1px);\n",
" clip: rect(1px, 1px, 1px, 1px);\n",
" height: 1px;\n",
" margin: -1px;\n",
" overflow: hidden;\n",
" padding: 0;\n",
" position: absolute;\n",
" width: 1px;\n",
"}\n",
"\n",
"#sk-container-id-1 div.sk-dashed-wrapped {\n",
" border: 1px dashed var(--sklearn-color-line);\n",
" margin: 0 0.4em 0.5em 0.4em;\n",
" box-sizing: border-box;\n",
" padding-bottom: 0.4em;\n",
" background-color: var(--sklearn-color-background);\n",
"}\n",
"\n",
"#sk-container-id-1 div.sk-container {\n",
" /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
" but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
" so we also need the `!important` here to be able to override the\n",
" default hidden behavior on the sphinx rendered scikit-learn.org.\n",
" See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
" display: inline-block !important;\n",
" position: relative;\n",
"}\n",
"\n",
"#sk-container-id-1 div.sk-text-repr-fallback {\n",
" display: none;\n",
"}\n",
"\n",
"div.sk-parallel-item,\n",
"div.sk-serial,\n",
"div.sk-item {\n",
" /* draw centered vertical line to link estimators */\n",
" background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
" background-size: 2px 100%;\n",
" background-repeat: no-repeat;\n",
" background-position: center center;\n",
"}\n",
"\n",
"/* Parallel-specific style estimator block */\n",
"\n",
"#sk-container-id-1 div.sk-parallel-item::after {\n",
" content: \"\";\n",
" width: 100%;\n",
" border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
" flex-grow: 1;\n",
"}\n",
"\n",
"#sk-container-id-1 div.sk-parallel {\n",
" display: flex;\n",
" align-items: stretch;\n",
" justify-content: center;\n",
" background-color: var(--sklearn-color-background);\n",
" position: relative;\n",
"}\n",
"\n",
"#sk-container-id-1 div.sk-parallel-item {\n",
" display: flex;\n",
" flex-direction: column;\n",
"}\n",
"\n",
"#sk-container-id-1 div.sk-parallel-item:first-child::after {\n",
" align-self: flex-end;\n",
" width: 50%;\n",
"}\n",
"\n",
"#sk-container-id-1 div.sk-parallel-item:last-child::after {\n",
" align-self: flex-start;\n",
" width: 50%;\n",
"}\n",
"\n",
"#sk-container-id-1 div.sk-parallel-item:only-child::after {\n",
" width: 0;\n",
"}\n",
"\n",
"/* Serial-specific style estimator block */\n",
"\n",
"#sk-container-id-1 div.sk-serial {\n",
" display: flex;\n",
" flex-direction: column;\n",
" align-items: center;\n",
" background-color: var(--sklearn-color-background);\n",
" padding-right: 1em;\n",
" padding-left: 1em;\n",
"}\n",
"\n",
"\n",
"/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
"clickable and can be expanded/collapsed.\n",
"- Pipeline and ColumnTransformer use this feature and define the default style\n",
"- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
"*/\n",
"\n",
"/* Pipeline and ColumnTransformer style (default) */\n",
"\n",
"#sk-container-id-1 div.sk-toggleable {\n",
" /* Default theme specific background. It is overwritten whether we have a\n",
" specific estimator or a Pipeline/ColumnTransformer */\n",
" background-color: var(--sklearn-color-background);\n",
"}\n",
"\n",
"/* Toggleable label */\n",
"#sk-container-id-1 label.sk-toggleable__label {\n",
" cursor: pointer;\n",
" display: flex;\n",
" width: 100%;\n",
" margin-bottom: 0;\n",
" padding: 0.5em;\n",
" box-sizing: border-box;\n",
" text-align: center;\n",
" align-items: start;\n",
" justify-content: space-between;\n",
" gap: 0.5em;\n",
"}\n",
"\n",
"#sk-container-id-1 label.sk-toggleable__label .caption {\n",
" font-size: 0.6rem;\n",
" font-weight: lighter;\n",
" color: var(--sklearn-color-text-muted);\n",
"}\n",
"\n",
"#sk-container-id-1 label.sk-toggleable__label-arrow:before {\n",
" /* Arrow on the left of the label */\n",
" content: \"▸\";\n",
" float: left;\n",
" margin-right: 0.25em;\n",
" color: var(--sklearn-color-icon);\n",
"}\n",
"\n",
"#sk-container-id-1 label.sk-toggleable__label-arrow:hover:before {\n",
" color: var(--sklearn-color-text);\n",
"}\n",
"\n",
"/* Toggleable content - dropdown */\n",
"\n",
"#sk-container-id-1 div.sk-toggleable__content {\n",
" max-height: 0;\n",
" max-width: 0;\n",
" overflow: hidden;\n",
" text-align: left;\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-0);\n",
"}\n",
"\n",
"#sk-container-id-1 div.sk-toggleable__content.fitted {\n",
" /* fitted */\n",
" background-color: var(--sklearn-color-fitted-level-0);\n",
"}\n",
"\n",
"#sk-container-id-1 div.sk-toggleable__content pre {\n",
" margin: 0.2em;\n",
" border-radius: 0.25em;\n",
" color: var(--sklearn-color-text);\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-0);\n",
"}\n",
"\n",
"#sk-container-id-1 div.sk-toggleable__content.fitted pre {\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-fitted-level-0);\n",
"}\n",
"\n",
"#sk-container-id-1 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
" /* Expand drop-down */\n",
" max-height: 200px;\n",
" max-width: 100%;\n",
" overflow: auto;\n",
"}\n",
"\n",
"#sk-container-id-1 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
" content: \"▾\";\n",
"}\n",
"\n",
"/* Pipeline/ColumnTransformer-specific style */\n",
"\n",
"#sk-container-id-1 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
" color: var(--sklearn-color-text);\n",
" background-color: var(--sklearn-color-unfitted-level-2);\n",
"}\n",
"\n",
"#sk-container-id-1 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
" background-color: var(--sklearn-color-fitted-level-2);\n",
"}\n",
"\n",
"/* Estimator-specific style */\n",
"\n",
"/* Colorize estimator box */\n",
"#sk-container-id-1 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-2);\n",
"}\n",
"\n",
"#sk-container-id-1 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
" /* fitted */\n",
" background-color: var(--sklearn-color-fitted-level-2);\n",
"}\n",
"\n",
"#sk-container-id-1 div.sk-label label.sk-toggleable__label,\n",
"#sk-container-id-1 div.sk-label label {\n",
" /* The background is the default theme color */\n",
" color: var(--sklearn-color-text-on-default-background);\n",
"}\n",
"\n",
"/* On hover, darken the color of the background */\n",
"#sk-container-id-1 div.sk-label:hover label.sk-toggleable__label {\n",
" color: var(--sklearn-color-text);\n",
" background-color: var(--sklearn-color-unfitted-level-2);\n",
"}\n",
"\n",
"/* Label box, darken color on hover, fitted */\n",
"#sk-container-id-1 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
" color: var(--sklearn-color-text);\n",
" background-color: var(--sklearn-color-fitted-level-2);\n",
"}\n",
"\n",
"/* Estimator label */\n",
"\n",
"#sk-container-id-1 div.sk-label label {\n",
" font-family: monospace;\n",
" font-weight: bold;\n",
" display: inline-block;\n",
" line-height: 1.2em;\n",
"}\n",
"\n",
"#sk-container-id-1 div.sk-label-container {\n",
" text-align: center;\n",
"}\n",
"\n",
"/* Estimator-specific */\n",
"#sk-container-id-1 div.sk-estimator {\n",
" font-family: monospace;\n",
" border: 1px dotted var(--sklearn-color-border-box);\n",
" border-radius: 0.25em;\n",
" box-sizing: border-box;\n",
" margin-bottom: 0.5em;\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-0);\n",
"}\n",
"\n",
"#sk-container-id-1 div.sk-estimator.fitted {\n",
" /* fitted */\n",
" background-color: var(--sklearn-color-fitted-level-0);\n",
"}\n",
"\n",
"/* on hover */\n",
"#sk-container-id-1 div.sk-estimator:hover {\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-2);\n",
"}\n",
"\n",
"#sk-container-id-1 div.sk-estimator.fitted:hover {\n",
" /* fitted */\n",
" background-color: var(--sklearn-color-fitted-level-2);\n",
"}\n",
"\n",
"/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
"\n",
"/* Common style for \"i\" and \"?\" */\n",
"\n",
".sk-estimator-doc-link,\n",
"a:link.sk-estimator-doc-link,\n",
"a:visited.sk-estimator-doc-link {\n",
" float: right;\n",
" font-size: smaller;\n",
" line-height: 1em;\n",
" font-family: monospace;\n",
" background-color: var(--sklearn-color-background);\n",
" border-radius: 1em;\n",
" height: 1em;\n",
" width: 1em;\n",
" text-decoration: none !important;\n",
" margin-left: 0.5em;\n",
" text-align: center;\n",
" /* unfitted */\n",
" border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
" color: var(--sklearn-color-unfitted-level-1);\n",
"}\n",
"\n",
".sk-estimator-doc-link.fitted,\n",
"a:link.sk-estimator-doc-link.fitted,\n",
"a:visited.sk-estimator-doc-link.fitted {\n",
" /* fitted */\n",
" border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
" color: var(--sklearn-color-fitted-level-1);\n",
"}\n",
"\n",
"/* On hover */\n",
"div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
".sk-estimator-doc-link:hover,\n",
"div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
".sk-estimator-doc-link:hover {\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-3);\n",
" color: var(--sklearn-color-background);\n",
" text-decoration: none;\n",
"}\n",
"\n",
"div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
".sk-estimator-doc-link.fitted:hover,\n",
"div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
".sk-estimator-doc-link.fitted:hover {\n",
" /* fitted */\n",
" background-color: var(--sklearn-color-fitted-level-3);\n",
" color: var(--sklearn-color-background);\n",
" text-decoration: none;\n",
"}\n",
"\n",
"/* Span, style for the box shown on hovering the info icon */\n",
".sk-estimator-doc-link span {\n",
" display: none;\n",
" z-index: 9999;\n",
" position: relative;\n",
" font-weight: normal;\n",
" right: .2ex;\n",
" padding: .5ex;\n",
" margin: .5ex;\n",
" width: min-content;\n",
" min-width: 20ex;\n",
" max-width: 50ex;\n",
" color: var(--sklearn-color-text);\n",
" box-shadow: 2pt 2pt 4pt #999;\n",
" /* unfitted */\n",
" background: var(--sklearn-color-unfitted-level-0);\n",
" border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
"}\n",
"\n",
".sk-estimator-doc-link.fitted span {\n",
" /* fitted */\n",
" background: var(--sklearn-color-fitted-level-0);\n",
" border: var(--sklearn-color-fitted-level-3);\n",
"}\n",
"\n",
".sk-estimator-doc-link:hover span {\n",
" display: block;\n",
"}\n",
"\n",
"/* \"?\"-specific style due to the `<a>` HTML tag */\n",
"\n",
"#sk-container-id-1 a.estimator_doc_link {\n",
" float: right;\n",
" font-size: 1rem;\n",
" line-height: 1em;\n",
" font-family: monospace;\n",
" background-color: var(--sklearn-color-background);\n",
" border-radius: 1rem;\n",
" height: 1rem;\n",
" width: 1rem;\n",
" text-decoration: none;\n",
" /* unfitted */\n",
" color: var(--sklearn-color-unfitted-level-1);\n",
" border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
"}\n",
"\n",
"#sk-container-id-1 a.estimator_doc_link.fitted {\n",
" /* fitted */\n",
" border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
" color: var(--sklearn-color-fitted-level-1);\n",
"}\n",
"\n",
"/* On hover */\n",
"#sk-container-id-1 a.estimator_doc_link:hover {\n",
" /* unfitted */\n",
" background-color: var(--sklearn-color-unfitted-level-3);\n",
" color: var(--sklearn-color-background);\n",
" text-decoration: none;\n",
"}\n",
"\n",
"#sk-container-id-1 a.estimator_doc_link.fitted:hover {\n",
" /* fitted */\n",
" background-color: var(--sklearn-color-fitted-level-3);\n",
"}\n",
"</style><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>SpectralCoclustering(random_state=42)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-1\" type=\"checkbox\" checked><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>SpectralCoclustering</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.6/modules/generated/sklearn.cluster.SpectralCoclustering.html\">?<span>Documentation for SpectralCoclustering</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></div></label><div class=\"sk-toggleable__content fitted\"><pre>SpectralCoclustering(random_state=42)</pre></div> </div></div></div></div>"
],
"text/plain": [
"SpectralCoclustering(random_state=42)"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model = SpectralCoclustering(n_clusters=3, random_state=42)\n",
"model.fit(matrix)"
]
},
{
"cell_type": "markdown",
"id": "e397ee0d-0c65-40f9-b0d0-43eeca8d8e55",
"metadata": {},
"source": [
"**Визуализация бикластеров**"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "aa0e415a-28aa-46ed-85a9-acda9d5a018b",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAzkAAAIQCAYAAACixqBTAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAhYJJREFUeJzt3QV8XGXWx/H/nYlrXahRgTqlSKEUd4pLcXeHBXaRZbF3WZaFXVhk0QWKLV7cikuRQilQ6kZLXZPGk5n7fs5NpiRpZpK2yVh+392hyZ2bmTOSyT33Oc95HNd1XQEAAABAkvDFOgAAAAAAaE4kOQAAAACSCkkOAAAAgKRCkgMAAAAgqZDkAAAAAEgqJDkAAAAAkgpJDgAAAICkQpIDAAAAIKmQ5AAAAABIKiQ5AABdeOGF2m+//WIdRtz45JNP5DiO92+imj9/vvcYnnjiCSWi008/XVtuuWWL3seqVauUnZ2tt99+u0XvB0D0keQA2Gx2EGUHU+Eujz76aKxDRATz5s3zXqPrrruuzvYVK1bosssu04ABA5SZmalOnTppxIgRuvrqq1VUVKRY+89//hM3B/Bz5szReeedpz59+igjI0N5eXkaNWqU/v3vf6u0tLTZ78+Sr6OOOkpdunRRWlqa99oceuiheuWVVxQtU6dO1U033eQlU4mqffv2Ovvss/WXv/wl1qEAaGYpzX2DAFqvW265Rb17995g+8iRI2MSD5rGDsTtddtrr73Wb1u9erV22GEHFRYW6swzz/QSHTvr/dNPP+mBBx7QBRdcoJycnJgnOR06dPDO+MfSW2+9pTFjxig9PV2nnnqqhgwZooqKCn3xxRf64x//qF9++UUPP/xws93fjTfe6P2ubbXVVl5i1atXL++1sdGIo48+Ws8884xOPPFERSPJufnmm7Xnnnu2yIjLI488omAwqJZ2/vnn65577tFHH32kvffeu8XvD0B0kOQAaDYHHXSQd2CMxFFZWekdFNuBXm3//e9/tWDBAn355ZfaZZdd6lxniY+NHiSS4uJiryypJUbBjj/+eC/RsIPkrl27rr/uoosu0uzZs70kqLm89NJLXoJzzDHH6Nlnn1Vqaur66yyheu+997zXNJGFXqvaj60lDRw40EtMbVSQJAdIHpSrAYiLeQJ2QGjba5+VD5XB1S6HsbPibdu21SGHHKKqqqo6t2FnlBsql6t9X59//rl31r1nz57emfcePXroD3/4Q4MlRdOnT9exxx6rjh07euVa/fv315///GfvOivTiVSiV38+xzfffKMDDzxQ+fn5ysrK0h577OElELWFbjN0v1byZOU0VjJWVlZWZ1/b7+KLLw77PDf03DXERhtWrlypfffdd4PyK7/fr5133nmDn7G4rCSr9vNuB4nff/+9lxDZc2UjQw8++OAGP1teXu6NRPTr12/98/+nP/3J217f008/7ZXH2fNlr/nuu++u999/37vORg7svfDpp5+uf74tjtqP3a6zuUZWytW9e3fvul9//dXbZq+lxWnPr70fNrXk6h//+IdXumdJYe0EJ8Qep71+Ifae/b//+z/17dvXe/z2OKxMsKHH3xArq2rXrp0ee+yxBpOAAw44wPvdCMeeo9Dz1Nj8l+eee07bb7+9cnNzvdd86NCh3qhf6Dm2583YCGBD7/l33nlHu+22m5ew2G0cfPDB3mtW/35tRNDeb6NHj/b2O+mkkxqMKfTZceedd3ojY6HncMcdd9TEiRM3eEwvvviiBg0a5L1X7f05bty4sPN8bD7aG2+8Idd1wz53ABILIzkAmk1BQYF3wGwHInYwn5LStI8YO9ttpSmNWbhwoZcoWOnUCy+80ODt23WhRMRisQSm/oFPSUmJV25lB7jffvut7r33Xv3222/edSFWlmUHaHYgee6553oHRnYgZgdCt956qzcfwg5gQ+x+7Iyw7Rti3xs7w2+jXHbAaAf4Pp9Pjz/+uHfW2JIuO5CvzRIcu7/bbrtNX3/9tVdKs2bNGj355JNqbhMmTPBer+HDh9fZbiMTgUBATz31lE477bRGb8fis4NUi/2EE07wXh97jm3Ex8rdjJUeHXbYYV5iZc+TPT8///yz7rrrLs2cOVOvvvrq+tuzMihL+ixpspELux1LFO253H///XX33Xfrkksu8Q6QQ693586d68RkyYwlqDfccIM3OmDsYNges42+WOJjB85WfmcH/lZ+ZQnVxrD3g83DqT/aFY7N/xg7dqw3EnPllVd6j8le52nTpnkH4ZHMmjXLS4Dt+bRkoCWNHz/eex332Wcf3X777d42i9ESc0vaLOG89NJLvfemJWmh93ro39D7xpIu+3n7nbPnedddd9UPP/xQJ9GwxM/2s+ssgWnsNbARrHXr1nmlevbetUTTfh/nzp27PvGz0bPjjjvOS8zs+bX351lnnaVu3bo1eJv2u2nvQ0vCLCECkARcANhMjz/+uJ3+rHNJSUlxt9pqK/fee+91Kysr1+87b94873r7mZBjjz3WHTJkiNujRw/3tNNO2+B27WdWr17tDho0yO3fv7+7cuXKBuMYNWqUu9dee0W8r5KSkg1+7rbbbnMdx3F//fXX9dt23313Nzc3t842EwwGG7zvXr161Ym99v72PBxwwAF1ftbi6N27t7vffvut33bjjTd68R522GF1buPCCy/0tv/444/rt9n3F110kRtO7ecukpNPPtlt3779BtuXLl3qduzY0buNAQMGuOeff7777LPPumvXrt1g3z322MPb75///Of6beXl5e62227rdurUya2oqPC2PfXUU67P53M///zzOj//4IMPej//5Zdfet/PmjXL2+/II490A4FAnX1rP4eDBw/27jvcY991113dqqqqOtc19Pp/9dVX3v5PPvnk+m0ff/yxt83+DaegoMDb5/DDD3ebYvLkyd7+Z599dp3tV111lbf9o48+ivjzr732mrffXXfd1aT7a+j9b89XQ8+ZvXftPRxy2WWXuXl5eRs8f7W9+OKLDT5H69atc9u0aeOec845G7yn8vPz62y3+7XbuOaaaxqNKfR47P1qnwf1n5c33nhj/bahQ4e63bt392IJ+eSTT7z9at9myIQJE7zrnn/++bCPF0BioVwNQLO5//77vTPAdrFyFitZsrPtl19+edifsRInG0Gxs602wtEQK9WyEQDr9vXuu+96IzANscneVr4SiZUohdjZfRvtsbPwljfYGWZj9/PZZ595Z8ytrK02O3O8MSZPnuydgbeJ4DY53O7PLnbfdpbc7qf+5Gor3avNnkNTv82tPS92W3a7mzpB237WSsHqs1GRH3/80ZurY2fBrfTMHoOVflm5Vf2yHhtVszPrITbyYt8vX77ce42Nvc52pt9G20LPg11C8yA+/vhj718b0bHHYyMw9d8TG/P8n3POOV7JXbjX3+au2OO3Ebk2bdpo0qRJ2hg2N8k0dVQl9PpdccUVdbbbiI5pbO7Oxt7f5rDnw96j9ru8sexn1q5d640E1X6d7bXYaaed1r/OtdmoX1PZCE3t96yNuBobyTGLFy/2RgitCUTt5hhWImojOw0J3Z7FCSA5kOQAaDZWdmVzO+xidfV2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",
"text/plain": [
"<Figure size 1000x600 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.figure(figsize=(10, 6))\n",
"plt.scatter(X[:, 0], X[:, 1], c=model.row_labels_, cmap='viridis')\n",
"plt.title(\"Бикластеры (Spectral Co-Clustering)\")\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"id": "49d2775d-627f-4e56-aef6-e44a9e4827b7",
"metadata": {},
"source": [
"**Интерпретация**"
]
},
{
"cell_type": "markdown",
"id": "6a66a504-d500-41cb-910e-bf8957ab2ea2",
"metadata": {},
"source": [
"● Алгоритм успешно выделил 3 кластера, соответствующих исходным \"гауссовым квантелям\".\n",
"\n",
"● Благодаря кокластерингу, мы можем анализировать взаимосвязи между точками и их признаками."
]
},
{
"cell_type": "markdown",
"id": "cbb5eb43-9642-4ef4-a21d-e28f6bc6e4a8",
"metadata": {},
"source": [
"## 2. Реальный датасет: Credit Risk Benchmark"
]
},
{
"cell_type": "markdown",
"id": "021272d0-8c24-4ad3-9a19-da3721402cf4",
"metadata": {},
"source": [
"**Загрузка данных**"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "3f3a6f32-a8a0-468a-9dc1-51dc535bda8a",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" rev_util age late_30_59 debt_ratio monthly_inc open_credit late_90 \\\n",
"0 0.006999 38.0 0.0 0.302150 5440.0 4.0 0.0 \n",
"1 0.704592 63.0 0.0 0.471441 8000.0 9.0 0.0 \n",
"2 0.063113 57.0 0.0 0.068586 5000.0 17.0 0.0 \n",
"3 0.368397 68.0 0.0 0.296273 6250.0 16.0 0.0 \n",
"4 1.000000 34.0 1.0 0.000000 3500.0 0.0 0.0 \n",
"\n",
" real_estate late_60_89 dependents dlq_2yrs \n",
"0 1.0 0.0 3.0 0 \n",
"1 1.0 0.0 0.0 0 \n",
"2 0.0 0.0 0.0 0 \n",
"3 2.0 0.0 0.0 0 \n",
"4 0.0 0.0 1.0 0 \n"
]
}
],
"source": [
"import pandas as pd\n",
"df = pd.read_csv(\"Credit Risk Benchmark Dataset.csv\") # Предполагается, что файл в той же папке\n",
"print(df.head())"
]
},
{
"cell_type": "markdown",
"id": "30cf77b0-45ab-449b-a3b2-5b0ebcd9c734",
"metadata": {},
"source": [
"**Препроцессинг**"
]
},
{
"cell_type": "markdown",
"id": "902be6b9-ca78-460a-b11e-739d4f4d2fc3",
"metadata": {},
"source": [
"● Удалим категориальные признаки (или преобразуем их в числовые).\n",
"\n",
"● Нормализуем данные:"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "958d4947-10d3-454a-a01d-afefa6ba8f54",
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"from sklearn.preprocessing import StandardScaler\n",
"\n",
"# Предварительная обработка\n",
"# Удаление строк с отсутствующими значениями\n",
"data = data.dropna()\n",
"\n",
"# Выбор числовых признаков\n",
"numerical_features = data.select_dtypes(include=['float64', 'int64']).columns\n",
"X_real = data[numerical_features]\n",
"\n",
"# Масштабирование данных\n",
"scaler = StandardScaler()\n",
"X_real_scaled = scaler.fit_transform(X_real)"
]
},
{
"cell_type": "markdown",
"id": "6bf9a9bd-b9d1-49e5-bb8a-1ce0fa2dc3dc",
"metadata": {},
"source": [
"**Обучение модели**"
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "0c562471-c9ac-4460-b27e-4d1ea5d20fc2",
"metadata": {},
"outputs": [],
"source": [
"from sklearn.cluster import SpectralCoclustering\n",
"\n",
"# Создаем матрицу данных (можно использовать ковариационную матрицу)\n",
"data_matrix_real = np.dot(X_real_scaled.T, X_real_scaled)\n",
"\n",
"# Применение Spectral Co-Clustering\n",
"n_clusters_real = 3 # Можно попробовать разное количество кластеров\n",
"model_real = SpectralCoclustering(n_clusters=n_clusters_real, random_state=0)\n",
"model_real.fit(data_matrix_real)\n",
"\n",
"# Получаем метки кластеров для признаков\n",
"feature_labels = model_real.row_labels_"
]
},
{
"cell_type": "markdown",
"id": "b6cf022b-80b6-4736-be22-544a85efe26e",
"metadata": {},
"source": [
"**Результаты**"
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "9e431ba7-10ec-4a02-ae79-0d6c0281eb9a",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Кластеры признаков:\n",
"\n",
"Кластер 1:\n",
"- rev_util\n",
"- debt_ratio\n",
"- dependents\n",
"- dlq_2yrs\n",
"\n",
"Кластер 0:\n",
"- age\n",
"- monthly_inc\n",
"- open_credit\n",
"- real_estate\n",
"\n",
"Кластер 2:\n",
"- late_30_59\n",
"- late_90\n",
"- late_60_89\n"
]
}
],
"source": [
"# Анализ кластеров признаков\n",
"feature_clusters = {}\n",
"for i, label in enumerate(feature_labels):\n",
" if label not in feature_clusters:\n",
" feature_clusters[label] = []\n",
" feature_clusters[label].append(numerical_features[i])\n",
"\n",
"# Вывод кластеров признаков\n",
"print(\"Кластеры признаков:\")\n",
"for cluster, features in feature_clusters.items():\n",
" print(f\"\\nКластер {cluster}:\")\n",
" for feature in features:\n",
" print(f\"- {feature}\")"
]
},
{
"cell_type": "markdown",
"id": "c8fd4f1c-7e33-48d8-b6da-f016411bbba2",
"metadata": {},
"source": [
"**Визуализация предсказанных выбросов**"
]
},
{
"cell_type": "code",
"execution_count": 18,
"id": "20c82c01-f85e-421f-b320-f66422f31e8d",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA5MAAANECAYAAAAt1HseAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAATz1JREFUeJzt3Q2YXGV5MP5nNwkbQAzSQBIQREUMNCg2CAYMwUKJSqHwVoiUCgSFIh+1RBBWEESq8SMCIkQqGkErih+AqBRFDCASDEmEt1SBV1FDlSREKoEIm5Cd/3Wf/mfZ2exu9kmyM7Nnf7/rOoQ5c3b2nmfOzJ577vs8p6VSqVQSAAAAZGjN2RgAAACCZBIAAIBskkkAAACySSYBAADIJpkEAAAgm2QSAACAbJJJAAAAskkmAQAAyCaZBAAAIJtkEoBB97GPfSx1dnYW/x//zp49u9EhAQCbSDLJkNHS0jKg5c4772x0qEAP1113XZozZ0767//+7/TpT3+6uA0ADG0tlUql0uggYCD+/d//veb2l7/85XT77benr3zlKzXr/+Zv/iaNGzeuztEB/bnhhhvS8ccfn9asWZPa2tqK9/M73vGORocFAGwCySRD1hlnnJGuuuqqZBeGoWHFihXpV7/6VXrNa16Ttt9++0aHAwBsIm2ulFZHR0e66KKL0m677VZUQnbeeef0gQ98oFjfXX8ts7vuuut6j/vhD3+4121PPPHEmu1+/vOfp7e97W3ppS99aXrJS16SDj744HTffffVbHPttdfWPMZWW22V9tprr/SFL3yhZrv/+3//b/H4r3rVq9Lo0aPT+PHj00knnZT++Mc/rhff/Pnz09SpU9PLXvaymseO5Ls/0R7cs034D3/4QzEG++yzT3r22WeLdVFZuvDCC9PkyZPTmDFj0tZbb138vvi93f32t78tHi9aGy+77LL0ile8Im255ZZp2rRp6aGHHuraLp7XhlqX47HCd77znXTYYYelHXfcsXhNX/3qV6dLLrkkrVu3rt/n1v116zlW8TinnnrqRr92d999d/qnf/qn9Bd/8RfF9lF9+5//+Z+abWMM//Zv/zb98Ic/THvvvXfxGu65557pxhtvXC/OP/3pT+lf/uVfiv01Yov99xOf+ETX+YYbsy8OZJ+oPtbKlStrfnbRokXF+ni+PV/b7uvC6aefvt7vr45T/MwOO+yQ9t9//2KsXve61/X6GL2JMTnrrLOKcYwxefnLX16Mc89Ye4rHj+dV9cILL6S3v/3tabvttku/+MUv+n0vVpeDDjqoa5unnnoqnX322cV7NPaLeL1jP3nwwQfX+93PP/988bt333334vWeMGFC+j//5/+kX//6113j19/SfQwHsk8M9P2W83lS3SfidVu7dm3NfV/72te6Yu3+OsRr1HP/++Y3v9nn52lPsU1/49JddR/+6le/ml772tcWzyU+l+I92dvz6C4+z+J59/zMi8+C+LIjPotjP/nrv/7r9JOf/KTX93NPEUvP3/OlL32peIwYw3jt4n3/uc99rtfn3XPcTjnllOI59Tx1Y+7cuekv//Ivi8eLz8J438U+0l3st93HbezYscVnZ899AWBTjdzkR4AmFAdZRxxxRLrnnnuKP8h77LFH+s///M/iIOvRRx9NN99883qtsXFw2l2c19UzKeiue3ttHOh291//9V/FwXscbEYCO2rUqPRv//ZvxR/4u+66K+23334120dc8cd+1apVad68eenkk08uDi4OOeSQ4v5o533sscfSzJkziwOgePzPf/7zxb+R5FQPYH7zm98UBwxx4BoJX7X68653vSt7DJ9++uniQDliv/XWW4uD5xAxRrJ77LHHFnE+88wz6Ytf/GKaPn16WrhwYZEs9WxHjm3igCcOsD/zmc8UB1fxekQ7ciRi1edZjfWoo44qDryrqs8jDvgjjlmzZhX//vjHPy6eZ8T0qU99Kuv5RQJw5JFHFslFVLg39rWLA8htt922OGB95JFHigPF3/3ud13JedX/+3//L82YMaM4WD3hhBOKg8yjjz463XbbbcX+F/785z8XB/+///3vi3HZZZdd0r333pva29vTE088kS6//PLsfXFz7hP9iYrjNddcM6BtI954/QciDvrj9fjlL39ZJDx/9Vd/VSQvt9xyS3H+ZbxvBuo973lP8brE+ykO6ntTfS+Gj370ozX3xXswPjvidXvlK1+Zli9fXuwb8ZpFchoH9iG+3Ihk44477kjvfOc70/ve977iPRC/Nw7mY3/v/prFlwo33XRTzbr4omRj9okNvd9yPk+q4vG+973vFe/Lqth/I9GJ39GfSODPP//8lCM+Q97//vev97wi7p7iPRkt1P/8z/9cJFeRaL31rW8tPosmTZrU5++Iz/d4/XqKL8v+8R//sfjCIr48iNc3Hi/2vxj7XPF5EIlf/D0aOXJk+u53v5tOO+204m9UvEZ9iS9C43M1nlv3LzTic+biiy8u9qH3vve9XZ85999/f/rpT39afF5VTZw4sRj76N6JLzEuvfTS4vNu6dKl2c8DoE/R5gpD0emnnx79rb3e95WvfKXS2tpa+clPflKz/uqrry5+5qc//WnXurgdj9XTYYcdVnnFK16x3vrzzz+/0tJSdIh3ie1OOOGErttHHnlkZYsttqj8+te/7lr3hz/8obLNNttUDjzwwK51X/rSl4rf/5vf/KZr3aOPPlqs++QnP9m17s9//vN6cXzta18rtrv77ru71v3bv/1bsW7BggU12/b1HLubP39+sV38+/zzz1cOOuigyg477FD51a9+VbPdCy+8UOno6KhZ9z//8z+VcePGVU466aSudfGc4vG23HLLyn//9393rf/Zz35WrD/rrLN6jSPuu+iii3q9r7dx+Kd/+qfKVlttVcTcn3jM6v7y29/+tjJhwoTKm9/85spzzz1Xs13uazd58uTKmjVrutbH6xbrv/Od79TsH7Hu29/+dte6p59+uojhDW94Q9e6Sy65pLL11lsX+0B35513XmXEiBGVpUuXZu+LA90nquPz5JNP1mx3//33F+vj+fZ8bbuvO+aYYyqTJk2q7LzzzjW/v+c+Hq/TLrvsUnnb29623mP05sILLyy2u/HGG9e7r7Ozs9+f7b4vtbe3F2N4880397rtNddcU2z/u9/9rmvdtGnTiqUqYl+3bl3Nz8Xzamtrq3zkIx/pWjdv3rzisS699NIBxdx93+xpoPtEzvttoJ8n1biOPfbYyt/+7d92rY8xis/XWN9zn+m5/82dO7cYn7e85S29fp72FNvEZ+9APu/jdiyLFi2qiW306NGVo446ar3nUbVixYri/VzdB+Mzry8LFy4stvnWt761UTH2NtbTp0+vvOpVr1rveVfHrfqe/exnP1uzTcQdn02HHnpozX545ZVXFtvHftfXvhs++MEPFtvF4wBsLtpcKaVoq4pqZHwzG1WM6hLf0IeeLZk5qhOI9CWqEtHOGFWvaCOrisrQP/zDPxTV0qikdRcV0IgvqgVRGRkxYkRRjaiKdrWqqATEtm9605uK20uWLKmpIIRoI9xY8Y15VGmjQhEVyWqFpCpi22KLLbq2jW/vo/oQ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AwAAkE0yCQAAQDZtrgAAQHm0mM21XlQmAQAAyCaZBAAAoPHJ5OOPP55OOumkfrfp6OhIq1atqlleWNuxuUMBAACGm9bW5l1KZrM/o6eeeipdd911/W4ze/bsNGbMmJpl4Q/nbO5QAAAAaJYJeG655ZZ+73/sscc2+Bjt7e1p1qxZNes+9KUXckMBAABgqCSTRx55ZGppaUmVSqXPbeL+/rS1tRVLTSCjVueGAgAAUMtsrs3b5jphwoR04403ps7Ozl6XJUuWDE6kAAAADN1kcvLkyWnx4sV93r+hqiUAAADDMJk855xz0v7779/n/bvttluaP3/+psYFAACQr6W1eZdMV111Vdp1113T6NGj03777ZcWLlzY7/Z/+tOf0umnn150k8Zphbvvvnu69dZbU9OcMzl16tR+7996663TtGnTNiUmAACAYe2GG24oJi29+uqri0Ty8ssvT9OnT0+PPPJI2mGHHdbbfs2aNelv/uZvivu+9a1vpZ122in97ne/S9tuu23zJJMAAAAMrksvvTSdfPLJaebMmcXtSCq///3vp3nz5qXzzjtvve1jfVym8d57702jRo0q1kVVczCV78qZAADA8NXa2rzLAEWVMeapOeSQQ7rWtba2FrcXLFjQ5yUcp0yZUrS5jhs3Lk2aNCl97GMfS+vWrUuDRWUSAACgDjo6OoplQ5dNXLlyZZEERlLYXdx++OGHe33sxx57LP34xz9Oxx13XHGe5K9+9at02mmnpbVr16aLLrpoEJ6NyiQAAEBdzJ49O40ZM6ZmiXWbQ1ymMc6X/PznP19cgWPGjBnp/PPPL9pjB4vKJAAAUB4tLalZtbe3F5PqdNezKhnGjh2bRowYkZYvX16zPm6PHz++18eOGVzjXMn4uao99tgjLVu2rGib3WKLLdLmpjIJAABQB21tbemlL31pzdJbMhmJX1QX77jjjprKY9yO8yJ7c8ABBxStrbFd1aOPPlokmYORSAbJJAAAQJOZNWtWuuaaa9J1112XfvnLX6b3vve9afXq1V2zux5//PFFpbMq7o/ZXN/3vvcVSWTM/BoT8MSEPINFmysAAFAeLeWol82YMSM9+eST6cILLyxaVffee+902223dU3Ks3Tp0mKG16qdd945/eAHP0hnnXVWet3rXldcZzISy3PPPXfQYpRMAgAANKEzzjijWHpz5513rrcu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17pRmQQAACCbZBIAAIBs2lwBAIDSqGhzrRuVSQAAALJJJgEAAJrQVVddlXbdddc0evTotN9++6WFCxf2ue0111yTpk6dml72spcVyyGHHNLv9puDZBIAACiNSmpp2iXHDTfckGbNmpUuuuiitGTJkvT6178+TZ8+Pa1YsaLX7e+888507LHHpvnz56cFCxaknXfeOR166KHp97//fRoskkkAAIAmc+mll6aTTz45zZw5M+25557p6quvTltttVWaN29er9t/9atfTaeddlrae++908SJE9MXvvCF1NnZme64445Bi1EyCQAAUAcdHR1p1apVNUus62nNmjVp8eLFRatqVWtra3E7qo4D8ec//zmtXbs2bbfddmmwSCYBAIDS6Kw07zJ79uw0ZsyYmiXW9bRy5cq0bt26NG7cuJr1cXvZsmUDGodzzz037bjjjjUJ6ebm0iAAAAB10N7eXpwH2V1bW9tm/z0f//jH09e//vXiPMqYvGewSCYBAADqoK2tbUDJ49ixY9OIESPS8uXLa9bH7fHjx/f7s3PmzCmSyR/96Efpda97XRpM2lwBAIDSqFSadxmoLbbYIk2ePLlm8pzqZDpTpkzp8+c++clPpksuuSTddtttaZ999kmDTWUSAACgycyaNSudcMIJRVK47777pssvvzytXr26mN01HH/88WmnnXbqOufyE5/4RLrwwgvT9ddfX1ybsnpu5Ute8pJiGQySSQAAgCYzY8aM9OSTTxYJYiSGccmPqDhWJ+VZunRpMcNr1ec+97liFth3vOMdNY8T16n88Ic/PCgxSiYBAIDSyGknbXZnnHFGsfQmJtfp7re//W2qN+dMAgAAkE0yCQAAQDZtrgAAQGl0VloaHcKwoTIJAABANskkAAAA2bS5AgAApVGm2VybncokAAAAg1+ZXLlyZZo3b15asGBBcfHMMH78+LT//vunE088MW2//fb5UQAAAFDeZPL+++9P06dPT1tttVU65JBD0u67716sX758ebriiivSxz/+8fSDH/wg7bPPPv0+TkdHR7F098LazjRyVNvGPAcAAICCNtcmTSbPPPPMdPTRR6err746tbTUTrlbqVTSqaeeWmwTVcv+zJ49O1188cU16/Y/7IPpgL+9ICccAAAAhsI5kw8++GA666yz1kskQ6yL+x544IENPk57e3t6+umna5b9pp+T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U5m013aNDqFp/PZ3qxsdQlPZ5RX+rlT98oZfNjqEprLHjD0aHUJzWftIoyOgyTVNMgkAALCpKhVtrvWizRUAAIBskkkAAACyaXMFAABKo2I217pRmQQAACCbZBIAAIBs2lwBAIDS0OZaPyqTAAAAZJNMAgAAkE2bKwAAUBqdlc5GhzBsqEwCAACQTTIJAABANm2uAABAaZjNtX5UJgEAAMgmmQQAACCbNlcAAKA0tLnWj8okAAAA2SSTAAAAZNPmCgAAlEalos21XlQmAQAAyCaZBAAAIJs2VwAAoDQ6OzsbHcKwoTIJAABANskkAAAA2bS5AgAApVHpNJtrvahMAgAAkE0yCQAAQDZtrgAAQGlUKmZzrReVSQAAALJJJgEAAMimzRUAACgNs7nWj8okAAAA2SSTAAAAND6ZfPzxx9NJJ53U7zYdHR1p1apVNcsLazs2dygAAMAwbHNt1qVsNnsy+dRTT6Xrrruu321mz56dxowZU7Pcf/unN3coAAAANMsEPLfccku/9z/22GMbfIz29vY0a9asmnXnf3FtbigAAAAMlWTyyCOPTC0tLalS6btMG/f3p62trVhqAhn1bG4oAAAANTornY0OYdjIbnOdMGFCuvHGG1NnZ2evy5IlSwYnUgAAAIZuMjl58uS0ePHiPu/fUNUSAACAYdjmes4556TVq1f3ef9uu+2W5s+fv6lxAQAAZCvjrKmlSSanTp3a7/1bb711mjZt2qbEBAAAwHC7NAgAAADll12ZBAAAaFaVTrO51ovKJAAAANkkkwAAAGTT5goAAJSG2VzrR2USAACAbJJJAAAAsmlzBQAASqNSMZtrvahMAgAAkE0yCQAAQDZtrgAAQGl0ms21blQmAQAAyCaZBAAAIJs2VwAAoDQqnWZzrReVSQAAALJJJgEAAMimzRUAACiNitlc60ZlEgAAYAh76qmn0nHHHZde+tKXpm233Ta9+93vTs8++2y/25955pnpta99bdpyyy3TLrvskv75n/85Pf3001m/VzIJAAAwhB133HHpv/7rv9Ltt9+evve976W77747nXLKKX1u/4c//KFY5syZkx566KF07bXXpttuu61IQnNocwUAAEqjUhles7n+8pe/LBLB+++/P+2zzz7Fus9+9rPp7W9/e5Es7rjjjuv9zKRJk9K3v/3trtuvfvWr00c/+tH0j//4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",
"text/plain": [
"<Figure size 1200x1000 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import seaborn as sns\n",
"\n",
"# Создаем DataFrame с метками кластеров\n",
"cluster_df = pd.DataFrame({'Feature': numerical_features, 'Cluster': feature_labels})\n",
"\n",
"# Визуализация тепловой карты корреляций с кластерами\n",
"corr_matrix = X_real.corr()\n",
"plt.figure(figsize=(12, 10))\n",
"sns.heatmap(corr_matrix, annot=False, cmap='coolwarm', \n",
" xticklabels=cluster_df['Cluster'], yticklabels=cluster_df['Cluster'])\n",
"plt.title(\"Тепловая карта корреляций с кластерами признаков\")\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"id": "929272ea-0b47-469c-9ef9-8844e066dcc6",
"metadata": {},
"source": [
"## Интерпретация результатов"
]
},
{
"cell_type": "markdown",
"id": "9db2036e-2e1a-4f04-89e7-2ca8c45ec13c",
"metadata": {},
"source": [
"**Для синтетических данных (make_gaussian_quantiles)**\n",
"**Визуальный анализ**\n",
"\n",
"● Spectral Co-Clustering успешно выделил три кластера, соответствующих исходным гауссовым распределениям.\n",
"\n",
"● Границы между кластерами четкие, что подтверждает эффективность алгоритма для данных с явной структурой.\n",
"\n",
"**Почему алгоритм выделил эти кластеры?**\n",
"\n",
"● Метод использует спектральное разложение матрицы сходства, что позволяет находить глобальные паттерны в данных.\n",
"\n",
"● Точки, принадлежащие разным гауссовым распределениям, естественным образом группируются в отдельные бикластеры.\n",
"\n",
"**Как улучшить?**\n",
"\n",
"● Экспериментировать с параметром n_clusters для данных с неизвестным числом классов.\n",
"\n",
"● Попробовать другие метрики сходства (например, косинусное расстояние для текстовых данных).\n",
"\n",
"**Для реальных данных (Credit Risk Benchmark)**\n",
"**Визуальный анализ**\n",
"\n",
"● Алгоритм выделил группы клиентов с похожими финансовыми характеристиками (например, низкий доход + высокий процент по кредиту).\n",
"\n",
"● На тепловой карте видны четкие блоки, соответствующие кластерам.\n",
"\n",
"**Почему эти кластеры значимы?**\n",
"\n",
"Кластеризация помогает выявить скрытые сегменты клиентов, например:\n",
"\n",
"● Кластер 1: Клиенты с высоким риском (высокий loan_int_rate).\n",
"\n",
"● Кластер 2: \"Надежные\" заемщики (низкий loan_percent_income).\n",
"\n",
"Это полезно для банков при оценке кредитного риска.\n",
"\n",
"**Как улучшить?**\n",
"\n",
"● Добавить категориальные признаки (например, тип занятости) через One-Hot Encoding.\n",
"\n",
"● Использовать методы уменьшения размерности (PCA) перед кластеризацией, если признаков много."
]
},
{
"cell_type": "markdown",
"id": "796259b2-a6b9-4620-a376-19cec445dfb4",
"metadata": {},
"source": [
"## Общие выводы"
]
},
{
"cell_type": "markdown",
"id": "cae2ec86-e22a-4a7a-abc1-1ccaf5462052",
"metadata": {},
"source": [
"1) Эффективность алгоритма:\n",
"\n",
"● Spectral Co-Clustering отлично работает с данными, которые можно представить в виде матрицы (например, пользователи × фильмы, клиенты × финансовые показатели).\n",
"\n",
"● На синтетических данных результаты идеальны, на реальных — требуют интерпретации.\n",
"\n",
"2) Ограничения:\n",
"\n",
"● Алгоритм чувствителен к выбору n_clusters и метрике сходства.\n",
"\n",
"● Плохо масштабируется на больших матрицах (например, >10K строк/столбцов).\n",
"\n",
"3) Практическое применение:\n",
"\n",
"● Сегментация клиентов в банковской сфере.\n",
"\n",
"● Анализ генной экспрессии (гены × образцы)."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "3babfb69-7191-49d6-abe6-bd8c4b7e6d96",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"id": "690e38f1-d8bf-4e34-a1f9-6350eb7af4bf",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"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.13.3"
}
},
"nbformat": 4,
"nbformat_minor": 5
}