{
"cells": [
{
"cell_type": "markdown",
"id": "md1a972a0e",
"metadata": {},
"source": [
"# BitBullet:Lessons: Wholesale Customer Segmentation\n",
"\n",
"Every business serves a mix of customer types — but most treat them identically. A wholesale food distributor serves two fundamentally different customer groups: **Horeca** (hotels, restaurants, cafes) and **retailers** — yet within each group, spending patterns diverge dramatically. Some customers are fresh-produce-heavy; others lean heavily on packaged groceries or dairy.\n",
"\n",
"In this tutorial we apply BitBullet's clustering engine to the **UCI Wholesale Customers dataset** — a real-world record of annual spending across six product categories for 440 wholesale distributor customers. The goal: discover natural spending segments that cut across the known Channel/Region labels and reveal actionable customer archetypes.\n",
"\n",
"**Dataset**: `Wholesale_customers_data.csv` — 440 customers, 8 features. \n",
"**Source**: [UCI ML Repository — Wholesale Customers](https://archive.uci.edu/dataset/292/wholesale+customers) \n",
"**Task**: Discover natural spending clusters with zero pre-labelled ground truth.\n",
"\n",
"---\n",
"\n",
"### What You Will Build\n",
"\n",
"| Step | Component | What BitBullet Handles For You |\n",
"|------|-----------|--------------------------------|\n",
"| 1 | Feature profiling | `generate_feature_stats` — detect numerical vs. categorical automatically |\n",
"| 2 | Zero-config clustering | `auto_cluster` — algorithm selection, K selection, fitting, evaluation |\n",
"| 3 | Column type detection | `detect_column_types`, `select_algorithm` — mixed-data awareness |\n",
"| 4 | Optimal K search | `find_optimal_k` — silhouette scoring across candidate K values |\n",
"| 5 | Manual configuration | `KPrototypesClusterer` — full control over mixed-type clustering |\n",
"| 6 | Evaluation metrics | `evaluate_clustering` — silhouette, Calinski-Harabász, Davies-Bouldin, quality score |\n",
"| 7 | Cluster profiling | `profile_clusters` — suggested labels, key characteristics, feature importance |\n",
"| 8 | Visualisation suite | Scatter, silhouette, FAMD decomposition, comprehensive dashboard |\n",
"| 9 | Segment activation | Attach labels to DataFrame, compute segment means, business interpretation |"
]
},
{
"cell_type": "markdown",
"id": "62e614e9",
"metadata": {},
"source": [
"> **Explore and compare clustering configurations without building the lifecycle yourself.**\n",
"> [BitBullet Platform](https://bitbullet.co.uk/platform/clustering) centralises datasets, managed compute, storage, candidate configurations, and results in one guided environment. Use guided controls or the AI assistant to prepare a draft, inspect cluster quality and profile evidence, compare candidate structures, then export fitted clustering artefacts, preprocessing, metadata, and generated inference code. This lesson gives you direct SDK control over the same work."
]
},
{
"cell_type": "markdown",
"id": "md9642b073",
"metadata": {},
"source": [
"## 1. Environment & Imports"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "cd62df3317",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"bitbullet : vdev\n",
"All imports successful.\n"
]
}
],
"source": [
"import sys\n",
"import os\n",
"import warnings\n",
"\n",
"import pandas as pd\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import matplotlib.ticker as mticker\n",
"import plotly.express as px\n",
"import plotly.graph_objects as go\n",
"from sklearn.metrics import silhouette_samples\n",
"\n",
"warnings.filterwarnings('ignore')\n",
"\n",
"# When running this notebook from bitbullet/lessons in a local clone, prefer the local SDK source.\n",
"sdk_root = os.path.abspath(\"..\")\n",
"if sdk_root not in sys.path:\n",
" sys.path.insert(0, sdk_root)\n",
"\n",
"import bitbullet\n",
"print(f\"bitbullet : v{getattr(bitbullet, '__version__', 'dev')}\")\n",
"\n",
"from bitbullet.cluster import ClusterConfig\n",
"from bitbullet.cluster.core import auto_cluster, detect_column_types, select_algorithm\n",
"from bitbullet.cluster.algorithms.partitional import KPrototypesClusterer, KMeansClusterer\n",
"from bitbullet.cluster.evaluation import evaluate_clustering, profile_clusters, find_optimal_k\n",
"from bitbullet.cluster.visualization import (\n",
" plot_cluster_scatter,\n",
" plot_silhouette,\n",
" plot_cluster_sizes,\n",
" create_dashboard,\n",
" auto_decompose,\n",
" plot_decomposition,\n",
")\n",
"from bitbullet.transform.eda import generate_feature_stats\n",
"\n",
"print(\"All imports successful.\")"
]
},
{
"cell_type": "markdown",
"id": "mdf957b46d",
"metadata": {},
"source": [
"## 2. Load and Prepare the Dataset\n",
"\n",
"Each row is a wholesale customer. Columns record their annual spending in monetary units across six product categories. `Channel` (1 = Horeca, 2 = Retail) and `Region` (1 = Lisbon, 2 = Oporto, 3 = Other) are integer-coded categorical attributes.\n",
"\n",
"We convert `Channel` and `Region` to descriptive strings before clustering. This serves two purposes: (1) `detect_column_types` will correctly identify them as categorical, and (2) cluster profiles and suggested labels will be human-readable without needing a lookup table.\n",
"\n",
"**Dataset:** Wholesale Customers Dataset \n",
"**Source:** [UCI ML Repository — Wholesale Customers](https://archive.uci.edu/dataset/292/wholesale+customers) \n",
"**File:** `Wholesale_customers_data.csv`\n",
"\n",
"> **Before running this cell:** download `Wholesale_customers_data.csv` from the link above and\n",
"> place it in the **same directory as this notebook**. If you store it elsewhere,\n",
"> update `data_path` in the code cell below to match your chosen location."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "cdb6f6eec9",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Dataset loaded — Shape: (440, 8)\n",
"Columns: ['Channel', 'Region', 'Fresh', 'Milk', 'Grocery', 'Frozen', 'Detergents_Paper', 'Delicassen']\n"
]
},
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" Channel | \n",
" Region | \n",
" Fresh | \n",
" Milk | \n",
" Grocery | \n",
" Frozen | \n",
" Detergents_Paper | \n",
" Delicassen | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" 2 | \n",
" 3 | \n",
" 12669 | \n",
" 9656 | \n",
" 7561 | \n",
" 214 | \n",
" 2674 | \n",
" 1338 | \n",
"
\n",
" \n",
" | 1 | \n",
" 2 | \n",
" 3 | \n",
" 7057 | \n",
" 9810 | \n",
" 9568 | \n",
" 1762 | \n",
" 3293 | \n",
" 1776 | \n",
"
\n",
" \n",
" | 2 | \n",
" 2 | \n",
" 3 | \n",
" 6353 | \n",
" 8808 | \n",
" 7684 | \n",
" 2405 | \n",
" 3516 | \n",
" 7844 | \n",
"
\n",
" \n",
" | 3 | \n",
" 1 | \n",
" 3 | \n",
" 13265 | \n",
" 1196 | \n",
" 4221 | \n",
" 6404 | \n",
" 507 | \n",
" 1788 | \n",
"
\n",
" \n",
" | 4 | \n",
" 2 | \n",
" 3 | \n",
" 22615 | \n",
" 5410 | \n",
" 7198 | \n",
" 3915 | \n",
" 1777 | \n",
" 5185 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Channel Region Fresh Milk Grocery Frozen Detergents_Paper Delicassen\n",
"0 2 3 12669 9656 7561 214 2674 1338\n",
"1 2 3 7057 9810 9568 1762 3293 1776\n",
"2 2 3 6353 8808 7684 2405 3516 7844\n",
"3 1 3 13265 1196 4221 6404 507 1788\n",
"4 2 3 22615 5410 7198 3915 1777 5185"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Update this path if you stored the file in a different location.\n",
"data_path = \"Wholesale_customers_data.csv\"\n",
"\n",
"df_raw = pd.read_csv(data_path)\n",
"print(f\"Dataset loaded — Shape: {df_raw.shape}\")\n",
"print(f\"Columns: {list(df_raw.columns)}\")\n",
"display(df_raw.head())"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "cdc1d03f45",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Channel distribution:\n",
"Channel\n",
"Horeca 298\n",
"Retail 142\n",
"\n",
"Region distribution:\n",
"Region\n",
"Other 316\n",
"Lisbon 77\n",
"Oporto 47\n",
"\n"
]
},
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" Channel | \n",
" Region | \n",
" Fresh | \n",
" Milk | \n",
" Grocery | \n",
" Frozen | \n",
" Detergents_Paper | \n",
" Delicassen | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" Retail | \n",
" Other | \n",
" 12669 | \n",
" 9656 | \n",
" 7561 | \n",
" 214 | \n",
" 2674 | \n",
" 1338 | \n",
"
\n",
" \n",
" | 1 | \n",
" Retail | \n",
" Other | \n",
" 7057 | \n",
" 9810 | \n",
" 9568 | \n",
" 1762 | \n",
" 3293 | \n",
" 1776 | \n",
"
\n",
" \n",
" | 2 | \n",
" Retail | \n",
" Other | \n",
" 6353 | \n",
" 8808 | \n",
" 7684 | \n",
" 2405 | \n",
" 3516 | \n",
" 7844 | \n",
"
\n",
" \n",
" | 3 | \n",
" Horeca | \n",
" Other | \n",
" 13265 | \n",
" 1196 | \n",
" 4221 | \n",
" 6404 | \n",
" 507 | \n",
" 1788 | \n",
"
\n",
" \n",
" | 4 | \n",
" Retail | \n",
" Other | \n",
" 22615 | \n",
" 5410 | \n",
" 7198 | \n",
" 3915 | \n",
" 1777 | \n",
" 5185 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Channel Region Fresh Milk Grocery Frozen Detergents_Paper Delicassen\n",
"0 Retail Other 12669 9656 7561 214 2674 1338\n",
"1 Retail Other 7057 9810 9568 1762 3293 1776\n",
"2 Retail Other 6353 8808 7684 2405 3516 7844\n",
"3 Horeca Other 13265 1196 4221 6404 507 1788\n",
"4 Retail Other 22615 5410 7198 3915 1777 5185"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Convert integer-coded categorical columns to descriptive strings\n",
"df = df_raw.copy()\n",
"df['Channel'] = df['Channel'].map({1: 'Horeca', 2: 'Retail'})\n",
"df['Region'] = df['Region'].map({1: 'Lisbon', 2: 'Oporto', 3: 'Other'})\n",
"\n",
"print(\"Channel distribution:\")\n",
"print(df['Channel'].value_counts().to_string())\n",
"print(\"\\nRegion distribution:\")\n",
"print(df['Region'].value_counts().to_string())\n",
"print()\n",
"display(df.head())"
]
},
{
"cell_type": "markdown",
"id": "md18d2503f",
"metadata": {},
"source": [
"## 3. Exploratory Feature Analysis\n",
"\n",
"Wholesale spending data is notoriously right-skewed: a handful of large accounts drive the mean far above the median. `generate_feature_stats` surfaces this immediately — and confirms we have a **mixed-type dataset** with both numerical spend features and categorical channel/region labels."
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "cda26775d1",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Numerical (6): ['Fresh', 'Milk', 'Grocery', 'Frozen', 'Detergents_Paper', 'Delicassen']\n",
"Categorical (2): ['Channel', 'Region']\n",
"----------------------------------------------------------------------\n"
]
},
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" dtype | \n",
" missing_count | \n",
" missing_percent | \n",
" unique_values | \n",
" zero_count | \n",
" negative_count | \n",
" mean | \n",
" std | \n",
" skewness | \n",
" kurtosis | \n",
" mean_percentile | \n",
" min | \n",
" 25% | \n",
" 50% | \n",
" 75% | \n",
" max | \n",
" top | \n",
" freq | \n",
"
\n",
" \n",
" \n",
" \n",
" | Channel | \n",
" object | \n",
" 0 | \n",
" 0.0 | \n",
" 2 | \n",
" 0 | \n",
" 0 | \n",
" - | \n",
" - | \n",
" - | \n",
" - | \n",
" - | \n",
" - | \n",
" - | \n",
" - | \n",
" - | \n",
" - | \n",
" Horeca | \n",
" 298 | \n",
"
\n",
" \n",
" | Region | \n",
" object | \n",
" 0 | \n",
" 0.0 | \n",
" 3 | \n",
" 0 | \n",
" 0 | \n",
" - | \n",
" - | \n",
" - | \n",
" - | \n",
" - | \n",
" - | \n",
" - | \n",
" - | \n",
" - | \n",
" - | \n",
" Other | \n",
" 316 | \n",
"
\n",
" \n",
" | Fresh | \n",
" int64 | \n",
" 0 | \n",
" 0.0 | \n",
" 433 | \n",
" 0 | \n",
" 0 | \n",
" 12000.297727 | \n",
" 12647.328865 | \n",
" 2.561323 | \n",
" 11.536408 | \n",
" 64.090909 | \n",
" 3.0 | \n",
" 3127.75 | \n",
" 8504.0 | \n",
" 16933.75 | \n",
" 112151.0 | \n",
" - | \n",
" - | \n",
"
\n",
" \n",
" | Milk | \n",
" int64 | \n",
" 0 | \n",
" 0.0 | \n",
" 421 | \n",
" 0 | \n",
" 0 | \n",
" 5796.265909 | \n",
" 7380.377175 | \n",
" 4.053755 | \n",
" 24.669398 | \n",
" 66.136364 | \n",
" 55.0 | \n",
" 1533.0 | \n",
" 3627.0 | \n",
" 7190.25 | \n",
" 73498.0 | \n",
" - | \n",
" - | \n",
"
\n",
" \n",
" | Grocery | \n",
" int64 | \n",
" 0 | \n",
" 0.0 | \n",
" 430 | \n",
" 0 | \n",
" 0 | \n",
" 7951.277273 | \n",
" 9503.162829 | \n",
" 3.587429 | \n",
" 20.91467 | \n",
" 66.136364 | \n",
" 3.0 | \n",
" 2153.0 | \n",
" 4755.5 | \n",
" 10655.75 | \n",
" 92780.0 | \n",
" - | \n",
" - | \n",
"
\n",
" \n",
" | Frozen | \n",
" int64 | \n",
" 0 | \n",
" 0.0 | \n",
" 426 | \n",
" 0 | \n",
" 0 | \n",
" 3071.931818 | \n",
" 4854.673333 | \n",
" 5.907986 | \n",
" 54.689281 | \n",
" 71.136364 | \n",
" 25.0 | \n",
" 742.25 | \n",
" 1526.0 | \n",
" 3554.25 | \n",
" 60869.0 | \n",
" - | \n",
" - | \n",
"
\n",
" \n",
" | Detergents_Paper | \n",
" int64 | \n",
" 0 | \n",
" 0.0 | \n",
" 417 | \n",
" 0 | \n",
" 0 | \n",
" 2881.493182 | \n",
" 4767.854448 | \n",
" 3.631851 | \n",
" 19.009464 | \n",
" 68.863636 | \n",
" 3.0 | \n",
" 256.75 | \n",
" 816.5 | \n",
" 3922.0 | \n",
" 40827.0 | \n",
" - | \n",
" - | \n",
"
\n",
" \n",
" | Delicassen | \n",
" int64 | \n",
" 0 | \n",
" 0.0 | \n",
" 403 | \n",
" 0 | \n",
" 0 | \n",
" 1524.870455 | \n",
" 2820.105937 | \n",
" 11.151586 | \n",
" 170.694939 | \n",
" 68.863636 | \n",
" 3.0 | \n",
" 408.25 | \n",
" 965.5 | \n",
" 1820.25 | \n",
" 47943.0 | \n",
" - | \n",
" - | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" dtype missing_count missing_percent unique_values \\\n",
"Channel object 0 0.0 2 \n",
"Region object 0 0.0 3 \n",
"Fresh int64 0 0.0 433 \n",
"Milk int64 0 0.0 421 \n",
"Grocery int64 0 0.0 430 \n",
"Frozen int64 0 0.0 426 \n",
"Detergents_Paper int64 0 0.0 417 \n",
"Delicassen int64 0 0.0 403 \n",
"\n",
" zero_count negative_count mean std \\\n",
"Channel 0 0 - - \n",
"Region 0 0 - - \n",
"Fresh 0 0 12000.297727 12647.328865 \n",
"Milk 0 0 5796.265909 7380.377175 \n",
"Grocery 0 0 7951.277273 9503.162829 \n",
"Frozen 0 0 3071.931818 4854.673333 \n",
"Detergents_Paper 0 0 2881.493182 4767.854448 \n",
"Delicassen 0 0 1524.870455 2820.105937 \n",
"\n",
" skewness kurtosis mean_percentile min 25% \\\n",
"Channel - - - - - \n",
"Region - - - - - \n",
"Fresh 2.561323 11.536408 64.090909 3.0 3127.75 \n",
"Milk 4.053755 24.669398 66.136364 55.0 1533.0 \n",
"Grocery 3.587429 20.91467 66.136364 3.0 2153.0 \n",
"Frozen 5.907986 54.689281 71.136364 25.0 742.25 \n",
"Detergents_Paper 3.631851 19.009464 68.863636 3.0 256.75 \n",
"Delicassen 11.151586 170.694939 68.863636 3.0 408.25 \n",
"\n",
" 50% 75% max top freq \n",
"Channel - - - Horeca 298 \n",
"Region - - - Other 316 \n",
"Fresh 8504.0 16933.75 112151.0 - - \n",
"Milk 3627.0 7190.25 73498.0 - - \n",
"Grocery 4755.5 10655.75 92780.0 - - \n",
"Frozen 1526.0 3554.25 60869.0 - - \n",
"Detergents_Paper 816.5 3922.0 40827.0 - - \n",
"Delicassen 965.5 1820.25 47943.0 - - "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"stats_df, numerical_cols, categorical_cols = generate_feature_stats(df)\n",
"\n",
"print(f\"Numerical ({len(numerical_cols)}): {numerical_cols}\")\n",
"print(f\"Categorical ({len(categorical_cols)}): {categorical_cols}\")\n",
"print(\"-\" * 70)\n",
"display(stats_df)"
]
},
{
"cell_type": "markdown",
"id": "mdf78b7aab",
"metadata": {},
"source": [
"**Key observations from the feature audit:**\n",
"\n",
"- **Mixed feature types** — `Channel` and `Region` are categorical; all spend columns are numerical. This rules out plain K-Means.\n",
"- **Extreme right skew** on all spend columns — `Fresh`, `Frozen`, and `Delicassen` all show skewness > 5. A few very large accounts will distort centroids if left untreated. `auto_cluster` handles normalisation internally.\n",
"- **No missing values** — the dataset is clean.\n",
"- **Small dataset** (440 rows) — K-search range should be kept tight (2–7) to avoid fitting noise as structure."
]
},
{
"cell_type": "markdown",
"id": "md43600e80",
"metadata": {},
"source": [
"## 4. Zero-Config Auto-Clustering"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "cdb61664b1",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Running auto_cluster — detecting column types, selecting algorithm,\n",
"searching for optimal K, fitting, and evaluating automatically.\n",
"\n",
"================================================================================\n",
"AUTO-CLUSTERING PIPELINE\n",
"================================================================================\n",
"\n",
"[1/5] Auto-detecting column types...\n",
" Numerical: ['Fresh', 'Milk', 'Grocery', 'Frozen', 'Detergents_Paper', 'Delicassen']\n",
" Categorical: ['Channel', 'Region']\n",
"\n",
"[2/5] Auto-selecting algorithm...\n",
" Selected: kprototypes\n",
"\n",
"[3/5] Finding optimal K (testing 2-10)...\n",
" Recommended K: 2 (confidence: low)\n",
" - Silhouette score peaks at k=2 (-1.000)\n",
" - Tested k from 2 to 10\n",
" - Multiple k values have similar scores - try domain knowledge\n",
" - Note: Elbow method suggests k=3 instead\n",
"\n",
"[4/5] Clustering with kprototypes (K=2)...\n",
"Fitting kprototypes...\n",
"Calculating gamma using 'huang' method...\n",
"Gamma = 3497.7919\n",
"Calculating categorical weights using 'relevance' method...\n",
"Applying per-feature weights. Gamma range: [1786.6539, 5208.9299]\n",
"Initialization method and algorithm are deterministic. Setting n_init to 1.\n",
"\n",
"Fitting K-Prototypes (n_clusters=2)...\n",
"Init: initializing centroids\n",
"Init: initializing centroids\n",
"Init: initializing clusters\n",
"Init: initializing clusters\n",
"Init: initializing centroids\n",
"Init: initializing centroids\n",
"Init: initializing clusters\n",
"Init: initializing centroids\n",
"Init: initializing clusters\n",
"Init: initializing clusters\n",
"Init: initializing centroids\n",
"Init: initializing centroids\n",
"Init: initializing centroids\n",
"Init: initializing clusters\n",
"Init: initializing centroids\n",
"Init: initializing clusters\n",
"Init: initializing clusters\n",
"Init: initializing centroids\n",
"Init: initializing clusters\n",
"Init: initializing clusters\n",
"Starting iterations...\n",
"Starting iterations...\n",
"Starting iterations...\n",
"Starting iterations...\n",
"Starting iterations...\n",
"Starting iterations...\n",
"Starting iterations...\n",
"Starting iterations...\n",
"Starting iterations...\n",
"Starting iterations...\n",
"Run: 2, iteration: 1/100, moves: 47, ncost: 123614095846.56082\n",
"Run: 1, iteration: 1/100, moves: 16, ncost: 114438252123.06128\n",
"Run: 5, iteration: 1/100, moves: 26, ncost: 123542653483.19649\n",
"Run: 4, iteration: 1/100, moves: 59, ncost: 115221241623.77393\n",
"Run: 2, iteration: 2/100, moves: 27, ncost: 121882603579.68947\n",
"Run: 8, iteration: 1/100, moves: 48, ncost: 114819707216.52832\n",
"Run: 1, iteration: 2/100, moves: 14, ncost: 113892018217.07164\n",
"Run: 10, iteration: 1/100, moves: 80, ncost: 121651564687.64377\n",
"Run: 5, iteration: 2/100, moves: 25, ncost: 121882054671.93109\n",
"Run: 4, iteration: 2/100, moves: 18, ncost: 114571716477.99518\n",
"Run: 2, iteration: 3/100, moves: 28, ncost: 120629337219.31061\n",
"Run: 8, iteration: 2/100, moves: 11, ncost: 114544377192.07077\n",
"Run: 1, iteration: 3/100, moves: 10, ncost: 113559610606.74165\n",
"Run: 10, iteration: 2/100, moves: 53, ncost: 118060689238.85434\n",
"Run: 5, iteration: 3/100, moves: 29, ncost: 120629337219.31061\n",
"Run: 4, iteration: 3/100, moves: 14, ncost: 114124923387.80376\n",
"Run: 2, iteration: 4/100, moves: 17, ncost: 120126662534.90063\n",
"Run: 8, iteration: 3/100, moves: 13, ncost: 114124923387.80376\n",
"Run: 6, iteration: 1/100, moves: 20, ncost: 114247161638.78679\n",
"Run: 7, iteration: 1/100, moves: 28, ncost: 113693698699.33847\n",
"Run: 3, iteration: 1/100, moves: 109, ncost: 120949607760.71414\n",
"Run: 1, iteration: 4/100, moves: 11, ncost: 113248392104.92256\n",
"Run: 9, iteration: 1/100, moves: 31, ncost: 114706574594.15979\n",
"Run: 10, iteration: 3/100, moves: 35, ncost: 115615795947.62486\n",
"Run: 5, iteration: 4/100, moves: 17, ncost: 120126662534.90063\n",
"Run: 4, iteration: 4/100, moves: 9, ncost: 113901908192.20638\n",
"Run: 2, iteration: 5/100, moves: 11, ncost: 119897192593.96259\n",
"Run: 8, iteration: 4/100, moves: 9, ncost: 113901908192.20638\n",
"Run: 1, iteration: 5/100, moves: 2, ncost: 113223071281.33212\n",
"Run: 10, iteration: 4/100, moves: 24, ncost: 114716161244.52449\n",
"Run: 5, iteration: 5/100, moves: 11, ncost: 119897192593.96259\n",
"Run: 4, iteration: 5/100, moves: 5, ncost: 113824498016.4025\n",
"Run: 2, iteration: 6/100, moves: 7, ncost: 119776842897.16995\n",
"Run: 8, iteration: 5/100, moves: 5, ncost: 113824498016.4025\n",
"Run: 6, iteration: 2/100, moves: 10, ncost: 113891937069.4903\n",
"Run: 7, iteration: 2/100, moves: 10, ncost: 113234847977.8884\n",
"Run: 3, iteration: 2/100, moves: 23, ncost: 120207166856.01108\n",
"Run: 1, iteration: 6/100, moves: 1, ncost: 113218428133.06653\n",
"Run: 9, iteration: 2/100, moves: 15, ncost: 114307974813.4363\n",
"Run: 5, iteration: 6/100, moves: 7, ncost: 119776842897.16995\n",
"Run: 10, iteration: 5/100, moves: 13, ncost: 114272665863.77339\n",
"Run: 4, iteration: 6/100, moves: 7, ncost: 113569936611.23627\n",
"Run: 2, iteration: 7/100, moves: 3, ncost: 119732693953.55994\n",
"Run: 8, iteration: 6/100, moves: 7, ncost: 113569936611.23627\n",
"Run: 1, iteration: 7/100, moves: 0, ncost: 113218428133.06653\n",
"Run: 5, iteration: 7/100, moves: 3, ncost: 119732693953.55994\n",
"Run: 10, iteration: 6/100, moves: 12, ncost: 113920390656.67844\n",
"Run: 2, iteration: 8/100, moves: 6, ncost: 119626208811.00294\n",
"Run: 4, iteration: 7/100, moves: 6, ncost: 113248392104.92256\n",
"Run: 6, iteration: 3/100, moves: 4, ncost: 113824498016.4025\n",
"Run: 8, iteration: 7/100, moves: 6, ncost: 113248392104.92256\n",
"Run: 7, iteration: 3/100, moves: 2, ncost: 113218428133.06653\n",
"Run: 3, iteration: 3/100, moves: 13, ncost: 119938498955.17961\n",
"Run: 5, iteration: 8/100, moves: 6, ncost: 119626208811.00294\n",
"Run: 10, iteration: 7/100, moves: 6, ncost: 113824498016.4025\n",
"Run: 9, iteration: 3/100, moves: 13, ncost: 113920390656.67844\n",
"Run: 4, iteration: 8/100, moves: 2, ncost: 113223071281.33212\n",
"Run: 2, iteration: 9/100, moves: 5, ncost: 119556236333.16246\n",
"Run: 6, iteration: 4/100, moves: 7, ncost: 113569936611.23627\n",
"Run: 8, iteration: 8/100, moves: 2, ncost: 113223071281.33212\n",
"Run: 5, iteration: 9/100, moves: 5, ncost: 119556236333.16246\n",
"Run: 2, iteration: 10/100, moves: 0, ncost: 119556236333.16246\n",
"Run: 4, iteration: 9/100, moves: 1, ncost: 113218428133.06653\n",
"Run: 10, iteration: 8/100, moves: 7, ncost: 113569936611.23627\n",
"Run: 8, iteration: 9/100, moves: 1, ncost: 113218428133.06653\n",
"Run: 6, iteration: 5/100, moves: 6, ncost: 113248392104.92256\n",
"Run: 7, iteration: 4/100, moves: 0, ncost: 113218428133.06653\n",
"Run: 3, iteration: 4/100, moves: 7, ncost: 119804439348.86752\n",
"Run: 5, iteration: 10/100, moves: 0, ncost: 119556236333.16246\n",
"Run: 4, iteration: 10/100, moves: 0, ncost: 113218428133.06653\n",
"Run: 10, iteration: 9/100, moves: 6, ncost: 113248392104.92256\n",
"Run: 9, iteration: 4/100, moves: 6, ncost: 113824498016.4025\n",
"Run: 8, iteration: 10/100, moves: 0, ncost: 113218428133.06653\n",
"Run: 6, iteration: 6/100, moves: 2, ncost: 113223071281.33212\n",
"Run: 10, iteration: 10/100, moves: 2, ncost: 113223071281.33212\n",
"Run: 9, iteration: 5/100, moves: 7, ncost: 113569936611.23627\n",
"Run: 6, iteration: 7/100, moves: 1, ncost: 113218428133.06653\n",
"Run: 3, iteration: 5/100, moves: 5, ncost: 119732693953.55994\n",
"Run: 10, iteration: 11/100, moves: 1, ncost: 113218428133.06653\n",
"Run: 6, iteration: 8/100, moves: 0, ncost: 113218428133.06653\n",
"Run: 9, iteration: 6/100, moves: 6, ncost: 113248392104.92256\n",
"Run: 3, iteration: 6/100, moves: 6, ncost: 119626208811.00294\n",
"Run: 10, iteration: 12/100, moves: 0, ncost: 113218428133.06653\n",
"Run: 9, iteration: 7/100, moves: 2, ncost: 113223071281.33212\n",
"Run: 3, iteration: 7/100, moves: 5, ncost: 119556236333.16246\n",
"Run: 9, iteration: 8/100, moves: 1, ncost: 113218428133.06653\n",
"Run: 3, iteration: 8/100, moves: 0, ncost: 119556236333.16246\n",
"Run: 9, iteration: 9/100, moves: 0, ncost: 113218428133.06653\n",
"Best run was number 1\n",
"Clustering complete. Final cost: 113218428133.07\n",
"Fitted kprototypes. Found 2 clusters.\n",
" Clustering complete!\n",
"\n",
"[5/5] Evaluating clustering quality...\n",
" Quality: 7.2/10 (Good)\n",
" Silhouette: 0.512\n",
"\n",
" Top Insights:\n",
" - Clustering quality is Good (7.2/10)\n",
" - Cluster 0 is weakly defined (avg silhouette: 0.13)\n",
" - Cluster 1 is very large (375 samples, 85.2% of data)\n",
"\n",
"================================================================================\n",
"AUTO-CLUSTERING COMPLETE\n",
"================================================================================\n"
]
}
],
"source": [
"print(\"Running auto_cluster — detecting column types, selecting algorithm,\")\n",
"print(\"searching for optimal K, fitting, and evaluating automatically.\\n\")\n",
"\n",
"result = auto_cluster(df, verbose=True)"
]
},
{
"cell_type": "markdown",
"id": "mdbd95bc34",
"metadata": {},
"source": [
"## 5. Inspecting the Auto-Cluster Result"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "cd3e358bda",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"════════════════════════════════════════════════════════════\n",
" AUTO-CLUSTER RESULT SUMMARY\n",
"════════════════════════════════════════════════════════════\n",
" Algorithm selected : kprototypes\n",
" K selected : 2\n",
" Samples clustered : 440\n",
"\n",
" Cluster sizes:\n",
" Cluster 0 → 65 customers (14.8%)\n",
" Cluster 1 → 375 customers (85.2%)\n",
"\n",
" Silhouette score : 0.5115\n",
" Quality score : 7.18 / 10 (Good)\n",
"\n",
" Configuration applied:\n",
" algorithm : kprototypes\n",
" n_clusters : 2\n",
" numerical_columns : ['Fresh', 'Milk', 'Grocery', 'Frozen', 'Detergents_Paper', 'Delicassen']\n",
" categorical_columns : ['Channel', 'Region']\n",
" auto_gamma : True\n",
" auto_weights : True\n"
]
}
],
"source": [
"auto_labels = result.labels\n",
"auto_eval = result.evaluation\n",
"auto_config = result.config_used\n",
"auto_clusterer = result.clusterer\n",
"\n",
"print(\"\\u2550\" * 60)\n",
"print(\" AUTO-CLUSTER RESULT SUMMARY\")\n",
"print(\"\\u2550\" * 60)\n",
"print(f\" Algorithm selected : {auto_config.get('algorithm', 'N/A')}\")\n",
"print(f\" K selected : {auto_config.get('n_clusters', 'N/A')}\")\n",
"print(f\" Samples clustered : {len(auto_labels):,}\")\n",
"print()\n",
"print(\" Cluster sizes:\")\n",
"unique, counts = np.unique(auto_labels, return_counts=True)\n",
"for cid, cnt in zip(unique, counts):\n",
" print(f\" Cluster {cid} \\u2192 {cnt:,} customers ({cnt / len(auto_labels):.1%})\")\n",
"print()\n",
"print(f\" Silhouette score : {auto_eval.metrics.silhouette:.4f}\")\n",
"print(f\" Quality score : {auto_eval.metrics.overall_quality:.2f} / 10 ({auto_eval.metrics.quality_label})\")\n",
"print()\n",
"print(\" Configuration applied:\")\n",
"for k, v in auto_config.items():\n",
" print(f\" {str(k):30s}: {v}\")"
]
},
{
"cell_type": "markdown",
"id": "mdbe741ccb",
"metadata": {},
"source": [
"## 6. Manual Configuration"
]
},
{
"cell_type": "markdown",
"id": "md0106f06d",
"metadata": {},
"source": [
"### 6.1 Column Type Detection"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "cdb1ed0b52",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Numerical columns (6): ['Fresh', 'Milk', 'Grocery', 'Frozen', 'Detergents_Paper', 'Delicassen']\n",
"Categorical columns (2): ['Channel', 'Region']\n",
"\n",
"Recommended algorithm: KPROTOTYPES\n",
"\n",
"K-Prototypes selected because the dataset contains both numerical and\n",
"categorical columns. It combines Euclidean distance for spend features\n",
"with simple matching distance for Channel and Region.\n"
]
}
],
"source": [
"numerical_cols, categorical_cols = detect_column_types(df)\n",
"algorithm = select_algorithm(numerical_cols, categorical_cols)\n",
"\n",
"print(f\"Numerical columns ({len(numerical_cols)}): {numerical_cols}\")\n",
"print(f\"Categorical columns ({len(categorical_cols)}): {categorical_cols}\")\n",
"print()\n",
"print(f\"Recommended algorithm: {algorithm.upper()}\")\n",
"print()\n",
"if algorithm == \"kprototypes\":\n",
" print(\"K-Prototypes selected because the dataset contains both numerical and\")\n",
" print(\"categorical columns. It combines Euclidean distance for spend features\")\n",
" print(\"with simple matching distance for Channel and Region.\")"
]
},
{
"cell_type": "markdown",
"id": "mdd777696a",
"metadata": {},
"source": [
"### 6.2 Finding a Useful Number of Clusters\n",
"\n",
"A plain silhouette search can over-prefer **K = 2** when one or more influential features have cardinality two. That is mathematically valid, but it is not always the most useful segmentation answer.\n",
"\n",
"For each point $i$, silhouette is:\n",
"\n",
"$$\n",
"s(i) = \\frac{b(i) - a(i)}{\\max(a(i), b(i))}\n",
"$$\n",
"\n",
"where $a(i)$ is the mean distance from point $i$ to points in its own cluster, and $b(i)$ is the mean distance to the nearest other cluster. If a meaningful feature has cardinality two, it can create a strong binary partition in the distance geometry. When other features line up with that split, **K = 2** can maximise the average gap between clusters. As K increases, the nearest alternative cluster may become a neighbouring sub-segment inside the same binary side, so $b(i)$ shrinks and the global silhouette score can fall.\n",
"\n",
"For business segmentation we often want the next stable refinement, not just the coarsest separation. So we use `find_optimal_k` to calculate the silhouette curve, then select an interior post-2 local peak where:\n",
"\n",
"$$\n",
"S(k) > S(k - 1) \\quad \\text{and} \\quad S(k) \\ge S(k + 1)\n",
"$$\n",
"\n",
"That means silhouette improved despite adding another cluster, then stopped improving. If the best score is at the edge of the tested range, extend the range before treating it as a peak. If no post-2 local peak exists, we keep the global silhouette recommendation and note that the richer split is weak."
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "cd4682dbe9",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Searching for silhouette scores in range [2, 7]...\n",
"\n",
"Global silhouette maximum : K = 2\n",
"Confidence : Low\n",
"Tutorial selection : K = 6\n",
"Reasoning : Selected K=6: strongest post-2 local silhouette peak (0.3903).\n",
"\n"
]
},
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" K | \n",
" Silhouette Score | \n",
" Delta vs Previous K | \n",
" Post-2 Local Peak | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" 2 | \n",
" 0.5115 | \n",
" | \n",
" | \n",
"
\n",
" \n",
" | 1 | \n",
" 3 | \n",
" 0.4784 | \n",
" -0.0332 | \n",
" | \n",
"
\n",
" \n",
" | 2 | \n",
" 4 | \n",
" 0.3901 | \n",
" -0.0882 | \n",
" | \n",
"
\n",
" \n",
" | 3 | \n",
" 5 | \n",
" 0.3833 | \n",
" -0.0068 | \n",
" | \n",
"
\n",
" \n",
" | 4 | \n",
" 6 | \n",
" 0.3903 | \n",
" 0.007 | \n",
" Yes | \n",
"
\n",
" \n",
" | 5 | \n",
" 7 | \n",
" 0.3297 | \n",
" -0.0606 | \n",
" | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" K Silhouette Score Delta vs Previous K Post-2 Local Peak\n",
"0 2 0.5115 \n",
"1 3 0.4784 -0.0332 \n",
"2 4 0.3901 -0.0882 \n",
"3 5 0.3833 -0.0068 \n",
"4 6 0.3903 0.007 Yes\n",
"5 7 0.3297 -0.0606 "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"def clusterer_factory(k):\n",
" config = ClusterConfig(\n",
" name=\"k_search\",\n",
" algorithm_type=\"partitional\",\n",
" method=\"kmeans\",\n",
" n_clusters=k,\n",
" numerical_columns=numerical_cols,\n",
" )\n",
" return KMeansClusterer(config)\n",
"\n",
"print(\"Searching for silhouette scores in range [2, 7]...\\n\")\n",
"\n",
"k_result = find_optimal_k(\n",
" data=df[numerical_cols],\n",
" clusterer_factory=clusterer_factory,\n",
" k_range=range(2, 8),\n",
" method=\"silhouette\",\n",
")\n",
"\n",
"scores_by_k = {int(k): float(score) for k, score in sorted(k_result.scores.items())}\n",
"ks = list(scores_by_k.keys())\n",
"score_values = [scores_by_k[k] for k in ks]\n",
"\n",
"local_peak_ks = []\n",
"score_rows = []\n",
"for idx, k in enumerate(ks):\n",
" score = score_values[idx]\n",
" previous_score = score_values[idx - 1] if idx > 0 else np.nan\n",
" next_score = score_values[idx + 1] if idx < len(score_values) - 1 else np.nan\n",
" delta = score - previous_score if idx > 0 else np.nan\n",
"\n",
" is_post_2_peak = (\n",
" idx > 0\n",
" and idx < len(score_values) - 1\n",
" and delta > 0\n",
" and score >= next_score\n",
" )\n",
" if is_post_2_peak:\n",
" local_peak_ks.append(k)\n",
"\n",
" score_rows.append({\n",
" \"K\": k,\n",
" \"Silhouette Score\": round(score, 4),\n",
" \"Delta vs Previous K\": \"\" if np.isnan(delta) else round(delta, 4),\n",
" \"Post-2 Local Peak\": \"Yes\" if is_post_2_peak else \"\",\n",
" })\n",
"\n",
"if local_peak_ks:\n",
" optimal_k = max(local_peak_ks, key=lambda k: scores_by_k[k])\n",
" selection_reason = (\n",
" f\"Selected K={optimal_k}: strongest post-2 local silhouette peak \"\n",
" f\"({scores_by_k[optimal_k]:.4f}).\"\n",
" )\n",
"else:\n",
" optimal_k = int(k_result.recommended_k)\n",
" selection_reason = (\n",
" f\"No post-2 local silhouette peak was found, so we keep the global \"\n",
" f\"silhouette recommendation K={optimal_k}.\"\n",
" )\n",
"\n",
"print(f\"Global silhouette maximum : K = {k_result.recommended_k}\")\n",
"print(f\"Confidence : {str(k_result.confidence).title()}\")\n",
"print(f\"Tutorial selection : K = {optimal_k}\")\n",
"print(f\"Reasoning : {selection_reason}\")\n",
"print()\n",
"display(pd.DataFrame(score_rows))"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "cd0a9ca367",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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qIiIiIiIni5MEhIREVmJuNdfR0aHDoh7/XW5QykRhULA4lFOaBVoY9p3J1nE6OVapKSLMkZGRERERPT0YJKQiIiILJ7aRsDKiU54xufhksf/u23Emyu1yNZz7l4iIiIioifFJCERERFVCk72Cnw23Rk13B42X05fMWDWujQYucgXEREREdETYZKQiIiIKg0vVyU+m+4MVwfBtG//WT3e25IBSWKikIiIiIiotJgktFAO9rYYN7QXBvVqBwd726JPICIishK1q6nw6RRnaB5OUYjNv2Tj091Z8gVFRERERFTJMUlooTRqGzRrWA8NnvGHWm1T9AlERERWpGkdGywf7wTFww6FWBaViR2/ZssXFBERERFRJcYkIREREVVKLzbWYMFwR7N98zam49B5vUwRERERERFVXkwSWiijUURyShpS0zJgNIpyh0NERGSRBrW3xeTedqZtowhM+1SLP/7JkTEqIiIiIqLKh0lCC5WaloGQiHVYujYK2rQMucMhIiKyWFP62OPV9hrTdpYeGPeRFtfvGGWMioiIiIioclHJHQARERFVjKqhobgXG4uqfn5yh1KmBEFA2FBH3E2VcPCP3KHGyekS3liWiu2hrnB34WeiRERERERFYauZiIjISmiCgqBs0gSaoCC5QylzKqWAZeOc0LjWw88/b94VMXZFKtKzOW0HEREREVFRmCQkIiKip4KdRsCnU5wR4KU07bsUa8TU1WnQGyQZIyMiIiIisnxMEhIREdFTo6qTAutnOMPDRTDti76Ug3kb0yFJTBQSERERERWESUIiIiIrkbRoEbKmTUPSokVyh1KufNyVWDfNBQ62DxOF3/2mw9JvM2WMioiIiIjIsjFJSEREZCX0f/0F8dw56P/6S+5Qyt2zfiqsnOQEm4cjj7FuTxY2HciSLygiIiIiIgsme5Jw1apVCAgIgK2tLZo1a4ajR48WWDY6Ohpt27aFm5sb7OzsEBgYiGXLlpmV2bBhAwRByPOVnZ1d6vsSERFR5dMmSI3Fo53M9r2/LQO7T+lkioiIiIiIyHKpii5SfrZt24bp06dj1apVaNu2LdasWYMePXrgzz//hJ+fX57yDg4OmDx5Mho2bAgHBwdER0dj/PjxcHBwwLhx40zlnJ2dERMTY3aura1tqe8rBxcnB0SGjsXdpLtwdnKQOxwiIqJKqddzGiSkiIjcngEAkCTgrfVpcHMS0DJQLXN0RERERESWQ9aehB9++CFGjx6NMWPGICgoCMuXL4evry9Wr16db/kmTZpgyJAhqF+/PmrWrIlhw4ahW7dueXoBCoIAb29vs68nua8clEoFqrg6wcXJAUql7B0+iYiIKq03utphVJeHHxbmGICJK9MQc9MgY1RERERERJZFtuyTXq/H6dOn0bVrV7P9Xbt2xbFjx4p1jbNnz+LYsWPo0KGD2f709HT4+/vDx8cHvXr1wtmzZ8v0vkRERFS5/OcVB/R6TmPaTsuSMHq5FreTjDJGRURERERkOWQbbnz37l0YjUZ4eXmZ7ffy8kJ8fHyh5/r4+CAxMREGgwFhYWEYM2aM6VhgYCA2bNiA4OBgaLVarFixAm3btsUff/yBunXrlvq+Op0OOt3DOYy0Wi0AQBRFiKJY7MddXHp9Dv64fBVarRZtnV1ga6sp+iSqEKIoQpKkcql3Kh3WieVhnVgm6ZHv1lg3i0bY467WiON/5fYgTEgRMXp5Kr6e4wxXB3k+N62I14o11jURERERlZyscxICuUODHyVJUp59jzt69CjS09Nx/PhxhISEoE6dOhgyZAgAoFWrVmjVqpWpbNu2bdG0aVN8/PHH+Oijj0p934iICCxYsCDP/sTExDyLopSF1LQMfLZ5NwDAx9sdVVwcy/weVDqiKCI1NRWSJEGh4FBwS8A6sTysE8uUo9ebvickJMgcjTzmDwSmfKbE/+Jz/+ZfjRMxdlkyPhxlhMam4uOpiNdKWlpauVyXiIiIiJ4usiUJ3d3doVQq8/TeS0hIyNPL73EBAQEAgODgYNy5cwdhYWGmJOHjFAoFWrRogStXrjzRfUNDQzFz5kzTtlarha+vLzw8PODs7FxovKVho37YoHd3d4NbFZcyvweVjiiKEAQBHh4eTH5YCNaJ5WGdWKbbajV0AGzUanh6esodjmw+nyli8GItbifl9rC7ECtg8Xd2WDHBEUpF4R9UlrWKeK08ungbEREREVFBZEsSqtVqNGvWDPv370f//v1N+/fv34++ffsW+zqSJJkNA87v+Llz5xAcHPxE99VoNNBo8g75VSgU5dKoFx65pkIon3tQ6QmCUG51T6XDOrE8rBPL49S/P8T69eFUr55V14t3VQU+n+GMwZGpSEnPHYR94FwOwrdkIWyYQ5EjGspaeb9WrLmuiYiIiKj4ZB1uPHPmTAwfPhzNmzdH69atsXbtWsTGxmLChAkAcnvv3bp1C5s2bQIArFy5En5+fggMDAQAREdHY+nSpZgyZYrpmgsWLECrVq1Qt25daLVafPTRRzh37hxWrlxZ7PsSERE9jZz690dWQgKcrLgX4QO1vFVYO8UZr3+QiuzcUdjYcjgbXlUUmNjLXt7giIiIiIhkIOtHy4MGDcLy5cuxcOFCNG7cGEeOHMHu3bvh7+8PAIiLi0NsbKypvCiKCA0NRePGjdG8eXN8/PHHiIyMxMKFC01lUlJSMG7cOAQFBaFr1664desWjhw5gueee67Y9yUiIqKnX+PaNlg+zgmPjjBevjMT30SX/VzDVHrJyckYPnw4XFxc4OLiguHDhyMlJaXQcyRJQlhYGKpXrw47Ozt07NgRly5dMisTHx+P4cOHw9vbGw4ODmjatCm++eabcnwkRERERJZNkCRJKroYPU6r1cLFxQWpqanlMifhvZQ0/Of9NQCAyNCxcKvKOQkthSiKSEhIgKenp9UP4TIajcjJyZE7DIiiiKSkJLi5uVl9nVgKS6sTGxsbKJVKucOQHd+/8rf9SDbe3pRu2lYqgFWTndGpobrc710RdVLebZby1qNHD9y8eRNr164FAIwbNw41a9bEDz/8UOA5ixcvxvvvv48NGzagXr16CA8Px5EjRxATEwMnJycAQJcuXZCamopPPvkE7u7u2Lx5M+bPn4/ff/8dTZo0KVZslf13S2UrIzMbH6zZBn2OQe5QKj21jQqzxg+Cgz3nVCUiKgvFbbPIvroxEVU+kiQhPj6+yJ4cFUWSJIiiiLS0tAqfS4zyZ4l14urqCm9vb4uJRw5pUVHQ//030urVg8vLL8sdjsV4tb0t7qSI+Pj7TACAUQSmf6rFptkuaFRLhiWPyeTy5cvYs2cPjh8/jpYtWwIA1q1bh9atWyMmJgbPPPNMnnMkScLy5csxb948DBgwAACwceNGeHl5YfPmzRg/fjwA4LfffsPq1atNo03efvttLFu2DGfOnCl2kpCIiIjoacIkoYVSKAS4OjtCFEUoKnilRaKiPEgQenp6wt7eXvakiyRJMBgMUKlUssdCuSypTiRJQmZmJhISEgAA1apVkzUeOaVHRSHn1Cmkt2jBJOFjJve2w50UI7YfyV0MLUsPjPtIi60hrgjwZi9Uufz2229wcXExJQgBoFWrVnBxccGxY8fyTRJeu3YN8fHx6Nq1q2mfRqNBhw4dcOzYMVOS8Pnnn8e2bdvQs2dPuLq6Yvv27dDpdOjYsWOB8eh0OrMF87RaLYDcHqGiKD7pw6VKjs+BssXXFRFR2Snu+ymThBbK1dkRi+eNQ0JCAlycHeUOh8jEaDSaEoRubm5yhwPAshJSlMvS6sTOzg4ATMM6OfSYHicIAsKGOiJJK+Hnc7krmSSnSxi9PBXbQl3h4cLh2XKIj4+HZz4L7Xh6eiI+Pr7AcwDAy8vLbL+Xlxf+/fdf0/a2bdswaNAguLm5QaVSwd7eHlFRUahdu3aB8URERGDBggV59icmJiI7m3NZWrtsnR7O9irkGPh+8aRsVAokJd1FRnr5T/tARGQN0tLSilWOSUIiKpEHcxDa23P1T6pcHjxnc3JymCSkfKmUAj4c64SRH6bi7NXcOcVu3hUxbkUqvpzjAkdb/uNfVsLCwvJNtj3q1KlTAJDvBw2SJBX5AcTjxx8/5+2330ZycjIOHDgAd3d37Ny5E6+88gqOHj2K4ODgfK8ZGhqKmTNnmra1Wi18fX3h4eHBOQkJGZnZ0GYaOCdhGVDbqODm5s45CYmIyoitbfHeT5kkJKJSsYTeYUQlwecsFYedRsCnU5wxODIV1+KNAIBLsUZMWZWGNVOdoVbxeVQWJk+ejMGDBxdapmbNmjh//jzu3LmT51hiYmKenoIPeHt7A8jtUfjo9AIJCQmmc65evYpPPvkEFy9eRP369QEAjRo1wtGjR7Fy5Up8+umn+V5bo9FAo9Hk2a9QKLgYEPE5UMb4uiIiKjvFfT/lu66FyszKxvYfDuGnQ78jM4vDV4jKw/Xr1yEIQrEXYBEEAefOnSvVvTZs2IDGjRuX6lwiqlhVHBX4fIYzPB8ZYvzrnzmY+0U6RFGSMbKnh7u7OwIDAwv9srW1RevWrZGamoqTJ0+azj1x4gRSU1PRpk2bfK8dEBAAb29v7N+/37RPr9fj8OHDpnMyM3MXqXm8waxUKjkHGhEREVktJgktVLYuBz9Hn8Gx039Bp8uROxyiSik6OhovvfQSqlatCmdnZ9SrVw9TpkzB9evX5Q7tqVGzZk3s3LnTtH3q1Cl4eHjggw8+yFNWp9Nh7NixCAgIgJOTEwIDA/H5559XYLRExVfDTYl1053haPew5+D3J3RY+m2mjFFZn6CgIHTv3h1jx47F8ePHcfz4cYwdOxa9evUyW7QkMDAQUVFRAHI/0Jk+fToWLVqEqKgoXLx4ESNHjoS9vT1ee+01U/k6depg/PjxOHnyJK5evYoPPvgA+/fvR79+/eR4qERERESyY5KQiJ5KP/zwA3r06IGuXbvi8uXL0Gq1OHz4MGrVqoVffvlF7vCeSj///DO6dOmCxYsXY9asWXmOGwwGVKtWDQcOHIBWq8WGDRswa9Ys7Nu3T4ZoiYoW5KvCyolOsHlkCsvP9mZh44Es+YKyQl9//TWCg4PRtWtXdO3aFQ0bNsSXX35pViYmJgapqamm7Tlz5mD69OmYOHEimjdvjlu3bmHfvn1wcnICANjY2GD37t3w8PBA79690bBhQ2zatAkbN27ESy+9VKGPj4iIiMhSMElIRE8dSZIwdepUzJ07F9OnTzfNQVWtWjXMmDEDo0aNyve8nJwchIaGws/PDx4eHhg0aBASExPNyhw+fBjPPPMMXF1dMWjQILN/SocNG4bq1avD2dkZzZo1K1EysmbNmoiIiECLFi3g4OCAHj164N69e5g4cSJcXV1Rt25dHDt2zFT+66+/RoMGDeDk5AQ/Pz+88847kKTcYZBnzpyBq6srLl68CABITk6Gr68vNm3aVOx4SioqKgoDBgzA+vXr8cYbb+RbxsHBAQsXLkTt2rUhCAJatWqFTp06ITo6utziInpSrYPUWDzayWzfom0Z2H1KJ1NE1qdq1ar46quvoNVqodVq8dVXX8HV1dWsjCRJGDlypGlbEASEhYUhLi4O2dnZOHz4MBo0aGB2Tt26dfHtt9/izp07yMjIwB9//IHhw4dXwCMiIiIiskxMEhJRmbiXklboV47h4Up/OQZDkeUflZ2tz7OvMH///TeuX7+OQYMGlegxREREYNeuXYiOjsa1a9cgCAKGDh1qVubLL7/EL7/8guvXryM5ORnTp083HXvxxRdx+fJlJCUlYfDgwRg4cGCxl5oHgC1btuDbb7/FrVu3EBsbi+eeew4vvPCC6XoTJkwwla1atSp27NgBrVaL77//HmvXrsXmzZsBAE2bNsW7776LwYMHIysrC6NHj0b79u3x+uuv53vfzZs3w9XVtcCvyMjIQuP++uuvMWrUKHz77bd4+eWXi/14s7OzcfLkSTRs2LDY59CTUQcGQtG4MdSBgXKHUqn0ek6D0FcdTNuSBLy1Pg3H/9LLGBURERERUdni6sZEVCb+8/6aQo+HTHoNtWtWBwDE3kxA5MrNhZZf99/Zpp+PnDiP/9t1yGxfYe7evQsAqF69umnfggULsGzZMhgMBrz00kvYvn17nvO+/PJLhIeHw8/PDwDw4YcfokaNGrh9+7bpWnPmzDH9/N5776F9+/ZYv349FAqFWQ/Ft956C4sWLcL58+fRtm3bYsU9ceJE07179uyJI0eOYODAgQCAIUOG4P3334der4darUaPHj1M5zVu3BhDhgzBoUOHTEnNGTNmYP/+/WjVqhXS09Nx9uzZAu/72muvmebpKo29e/eiQYMGxX6cQG6vnzFjxqBu3boYMGBAqe9NJeM2dy6MCQlw8/SUO5RKZ1RXO9xJEfH5vtyhxjkGYOLKNGye44JAXzaniIiIiKjyY09CInrquLu7AwBu375t2jd//nykpKRg9uzZ0Ovz7/1z8+ZN1KxZ07RdvXp1aDQa3Lx507TP39/f7Ge9Xo/ExESIooh58+ahbt26cHZ2hqurK1JTU00Jy+Lw9vY2/Wxvb59nW5Ik04qce/fuRZs2beDu7g4XFxd8+umnZvcSBAETJkzA+fPnMXHiRDg7Oxc7jpL66KOPYDAY0Lt3b2RlFT1XmyRJePPNNxETE4OdO3fmWV2UyFLNGWiP3i01pu30LAljVmhxO8koY1RERERERGWDH30TUZlYPG98ocedHO1MP/v5eBZZ/lHtWzZE80bPFF3wvnr16sHf3x/bt29HSEhIsc/z8fHB9evX0bJlSwBAfHw8dDodfHx8TGX+/fdf0/HY2Fio1Wp4eHhg8+bN2Lx5M/bu3Yu6detCEARUqVLFNE9gWdLr9RgwYABWrVqFwYMHQ6PRYPr06WarNicnJ2PKlCkYN24cFi1ahFdeecXUS/FxX3/9NcaPL7g+5s6di7lz5xZ43NXVFfv370e3bt3Qs2dP7Nq1C3Z2dvmWlSQJkyZNwsmTJ/Hzzz/DxcWleA+ayAIoFAIiRjnirlbEb5dzAAAJKSJGL9diy39c4OrIhDcRERERVV5MElootY0KTYPrQqfTwcaG1USWr6qrU9GF7rNRqUpU3tZWDVtbdbHLC4KAFStWYNiwYbC3t8fgwYPh6emJxMREXLp0qcDzhg0bhkWLFqFNmzaoUqUKZs6cic6dO5sNW/7vf/+L559/Hvb29qZ5/xQKBbRaLdRqNdzd3aHX67F48WJotdpix1wSOp0O2dnZcHNzg0ajwYkTJ7B582a0adPGVGbs2LFo164d1qxZAycnJwwdOhSHDh2CUqnMc72hQ4fmmXuxpFxcXLBv3z50794dL730Enbt2gWNRpOn3OTJk/Hrr7/i4MGDqFKlyhPdk0pOd/kyjLGx0Pn5wa5+fbnDqZTUKgErJzph6JJUXL6R24PwapwREz7WYsMsF9iqBZkjJCIiIiIqHX7kbaEcHewwflhvDO7dHo4O+ffIIaKC9e3bFz/++CN2796NevXqwdnZGe3atYOnpyeWLVuW7zmhoaHo1q0bWrdujZo1ayInJwdfffWVWZlhw4ahU6dO8Pf3h5OTE1asWAEAGDFiBOrXrw9/f3/UqlULdnZ28PX1LZfH5uTkhJUrV2LcuHFwdnbG+++/b7ZIy5o1a3DmzBmsXr0aQO6CLNnZ2QgPDy+XeB5wdnbG3r17TfM+pqenmx3/999/sWrVKsTExMDf3x+Ojo5wdHQ0W5CFyte9iAhkT5+OexERcodSqTnaKfDZdBf4uD9sRp25asCMtWkwGMu+9zARERERUUUQpPIYC2cFtFotXFxckJqaWm5zfYmiiISEBHh6enLOLgti7fWSnZ2Na9euISAgALa2tnKHAyB3CKvBYIBKpYIgsBePJbDEOrHE525FuzVsGLJPnYJtixao8VgCnEruWrwRgyJTkJL+sCk1uIMtFgxzKPbzviL+plREm8Va8XdLj8rIzMYHa7ZBn2OQO5RKT22jwqzxg+Bgb51/r4mIylpx2yzWl+EgIiIiKgMB3kqsm+qMR2dD2Ho4G6t2Fb2ADxERERGRpWGS0EJp0zMQuXIL1m7eA216ptzhEBERUT4a1bLBivHOUD7SolrxXSb+72i2fEEREREREZUCk4QWymAQcS02Djfi7sJoMModDhERERWgUyM1FgxzNNv37pfp+OW8XqaIiIiIiIhKjklCIiIioif0antbTO1rb9o2isC0T7X4458cGaMiIiIiIio+JgmJiIiIysCkXnYY1P7hJPvZemDsR1pci+eIACIiIiKyfEwSEhEREZUBQRAwf6gDXmz8cCWTlHQJo5enIjFVlDEyIiIiIqKiMUlIREREVEZUSgHLxjmhaW2Vad/NuyLGrkhFehYThURERERkuZgkJCIishLVNm2Cw+HDqLZpk9yhPNVs1QI+neKMWt5K074/Y42YvCoNeoMkY2RERERERAVjkpCIqIwtWrQIQ4YMKVbZQ4cOwdXVtVT36dixI5YvX16qc48ePQofH59SnUtERXN1VGD9DGd4uj5sah27nIPQL9IhikwUEhEREZHlYZLQQtnbajCwZwd079AUdnYaucMhqlQcHR1NX0qlEhqNxrTdo0ePAs+7fv06BEFASkrKE91/7ty52LJlyxNdo7y1a9cON2/elDsMM/klTOfPn4/q1avj4sWL+Z6j0+kwe/ZsVKtWDY6OjggODsb169fLP1iiYqjhpsRn05zhaCeY9v1wQof/fpspY1RERERERPlTFV2E5GBrq0aX9s2QkJAAW4266BOIyCQ9Pd30c8eOHdGvXz9Mnz69Qu5tMBigUvGt9UlJkoQpU6bgp59+QnR0NGrVqpVvuVGjRiErKwunT59GtWrVEBMTU+qemUTlIdBXhVWTnDB6uRY5htx96/dmwctVgZFd7CCKErL0gChKUPCjWyIiIiKSEZujRGQ18uspOH36dIwcORIA8NxzzwEAfHx84OjoiK+//hoAsG/fPjRp0gQuLi5o2rQpDhw4YDp/5MiRGD16NF599VU4Oztj9erVCAsLQ79+/Uxl5syZA39/fzg5OeHZZ5/F//3f/xU7Zr1ej3fffRe1a9eGk5MTgoODcebMGdPxO3fuoFu3bnB0dETTpk1x4cIFs2OvvvoqPDw84Ofnh3nz5sFgyM1SPN5rr7D75OTkmI65ubmhT58+uH37drEfQ0kZDAYMGzYMR44cKTRBeOnSJXz33Xf4/PPPUb16dQiCgMDAQCYJCxH3+uvI6NABca+/LncoVqVVoBpL3nAy27doWwaGLklB48nJ6LZQhcaTkxHyeRou3zDIFCURERERWTsmCYmI7jt58iQA4ObNm0hPT8fQoUNx9epV9O3bF++88w6SkpIwd+5c9OnTB9euXTOdt2XLFowePRopKSkYPXp0nus2atQIp06dQkpKCt59910MHz7c7PzChISEYPfu3dizZw+0Wi2++eYbuLm5mY5v2rQJkZGRSElJQfPmzTFlyhTTsddeew02Nja4du0ajh49ip07d2LJkiUlvs+8efPw66+/Ijo6GnFxcahXrx4GDx5cYMy9evVClSpV4OHhgSpVqsDV1dXsKzY2tsBzjUYj+vXrh3/++QeHDx9GtWrVCix7+PBh1KpVC4sXL4anpyfq1auHpUuXFlieSE49n9Ng7iAHs32n/jZAfz8nqDcA3x3Xof97Kdh1QidDhERERERk7TgmzkLdS0nDf95fAwCIDB0Lt6ouMkdEVDjtjh1Ii4oqtIwmMBDu8+aZtnWXL+PuokVFXrvGl18+cXyltXXrVnTs2BEDBgwAAAwcOBBr167Fli1bMHfuXABA165d0a1bNwCAvb19nmsMHTrU9PPgwYMRGRmJY8eOISAgoNB7S5KENWvW4KeffkLdunUBAM8884xZmeHDh6NJkyYAgBEjRqB79+4AgFu3buHgwYOIi4szzcc4b948hIWFmeIuzn0kScKqVavw66+/mhJ24eHhcHBwwI0bN+Dr65sn7l27dkGSJNPQa0EQ8pQpSHZ2Ng4ePIiIiAhUqVKl0LL37t3DxYsX8dJLLyE2NhZXr15F165dUa1aNbPfOZGlGNnFDn/GGrDzt/yTgEYx9/vs9WmoXV2JIF8204iIiIio4rD1SURlwnDrFrLv98QrLlGrLfE5Fe3mzZuoWbOm2b5atWqZLfrh5+dX6DWWLVuGzz77DDdv3oQgCEhPT8fdu3eLvHdiYiIyMzNNibv8eHt7m352cHAwzcd48+ZN2Nramh1/PO7i3Ofu3bvIyMhA+/btzZJ9arW6wCThk3BwcMA333yDfv36QaPRYMKECQWWfbAwzcKFC6HRaFC/fn288cYb+O6775gkJIslQIIAoLD1jQUAGw9kIXKUUyGliIiIiIjKFpOERFQmVDVqwPb+nH4F0QQGmm0rnJ2LPKcsOTo6AgAyMzNN89bFxcXBzs4uN558Vg3w8fFBdHS02b5r166hQ4cOpu38znsgOjoaYWFhOHjwIJo0aQKFQoHGjRtDkgpLEeTy8PCAvb09/ve//xU67DY/Pj4+yM7Oxp07d+Dl5WWK28fHp0T3cXNzg729PU6cOIHAx+qvID169MDRo0cLPP7nn38Wmljt3Lkzvv/+e/Tp0weiKGLixIn5lmvUqBEAlKinIpGcRFHCj6f0hSYIgdwehbtO6BAx0pHPb6JKRq22kTuEpwJ/j0RE8mCSkIjKhPOAAXC+PyS3uDRBQRU6lNjd3R1+fn7YuHEj/vOf/+Dw4cPYvXs3Xn75ZQC5yTKFQoGrV6+iWbNmAIBBgwYhPDwc3333HXr16oXvvvsOR48exerVq4t1T61WC5VKBQ8PD4iiiA0bNuDixYvFOlcQBIwdOxazZs3C5s2bUbt2bfz999+wtbWFv79/oefWqFEDnTp1wuzZs/Hpp58iKSkJixYtwogRI0p8nwkTJmDWrFn49NNP4evri6SkJBw4cACDBg3K994//fRTqYcbP/DCCy/gxx9/RK9evSCKIiZPnpynTPv27VG3bl0sWLAAYWFh+Oeff7BhwwZERkaW+H5EFSE7B6Y5CIuiNwDZesBOU74xEVHZUSoVmDKqZG0hKphSyenziYgqGpOERGRVPv/8c7z55ptYtGgRevbsicGDByMnJwcAYGdnh/nz56NHjx7Q6/VYtWoVXnvtNezYsQOhoaEYPnw4atWqhaioqAJX3H1c9+7d8fLLLyM4OBgajQbDhw9H27Ztix3v4sWLERYWhs6dOyMpKQkBAQHYuHFjkUlCANi8eTMmT54Mf39/2NnZYejQoZgzZ06J7xMREYElS5bghRdeQHx8PNzc3PDiiy8WmCQsKx06dMDu3bvRs2dPGI1GTJs2zey4UqnE999/j/Hjx8PV1RWenp6YNm0ahxqTxbK1AdSq4iUK1SrAVl3+MRFR2bHV8EVLRESVmyAVZ8wb5aHVauHi4oLU1FQ4OzuX+fW5cInlEkURCQkJ8PT0LHSY6dMqOzsb165dQ0BAAGxtbeUOBwCeuNcalT1LrBNLfO5WtFvDhiH71CnYtmiBGl99JXc4Vink8zR8d1xnWqQkP0oF0Le1pszmJCzvNos14++WiIiIKoPitlmsL8NBREREJJMRXeyKnJNQAjCis11FhENEREREZCJ7knDVqlWmXh3NmjUrdLL76OhotG3bFm5ubrCzs0NgYCCWLVtmVmbdunVo164dqlSpgipVqqBz5844+djqqWFhYRAEwezr0RVAiYiInkZVQ0Nhu3w5qoaGyh2K1QryVWHpaCcoFLk9Bh+lVAAKBbB0tBOCfDkjDBERERFVLFlboNu2bcP06dOxatUqtG3bFmvWrEGPHj0KXPnSwcEBkydPRsOGDeHg4IDo6GiMHz8eDg4OGDduHADg0KFDGDJkCNq0aQNbW1ssWbIEXbt2xaVLl1CjRg3TterXr48DBw6YtpVKZfk/4BJwcrTDnImDkZycDEdH9iYgIqInpwkKgtLNDRpPT7lDsWq9WmpQu7oSGw9kYdcJHfSG3DkIe7XUYERnOyYIiYiIiEgWss5J2LJlSzRt2tRsldCgoCD069cPERERxbrGgAED4ODggC8LWCHVaDSiSpUq+OSTT/D6668DyO1JuHPnTpw7d67UsVfEHDTWPvedpbL2erHEed0scf47a2eJdWKJz92KZu3vX5bIYDDixu1E+NXwKLcPLDlvXvnh75aIiIgqg+K2WWT7qFqv1+P06dMICQkx29+1a1ccO3asWNc4e/Ysjh07hvDw8ALLZGZmIicnB1WrVjXbf+XKFVSvXh0ajQYtW7bEokWLCl2tVKfTQafTmba1Wi2A3H+4RLGQ2cefgCiKkCSp3K5PpWPt9fLg8T/4shQPYrGkmKydpdXJg+dseb5vWzprf/+yTBJsbaRyrRfWNxEREREVh2xJwrt378JoNMLLy8tsv5eXF+Lj4ws918fHB4mJiTAYDAgLC8OYMWMKLBsSEoIaNWqgc+fOpn0tW7bEpk2bUK9ePdy5cwfh4eFo06YNLl26BDc3t3yvExERgQULFuTZn5iYiOzs7ELjLQ2DwYhb8XeRnpGBujkGqNU2ZX4PKh1RFJGamgpJkqyyJ47BYIAoisjJyYFKZRlD4iRJgtFoBACL6bVm7SyxTnJyciCKIu7du2cxz92Klv3RR8j56y/oAgNhO3Wq3OEQKuZvSlpaWrlcl4iIiIieLrL/l/T4P4+SJBX5D+XRo0eRnp6O48ePIyQkBHXq1MGQIUPylFuyZAm2bNmCQ4cOmQ0t69Gjh+nn4OBgtG7dGrVr18bGjRsxc+bMfO8ZGhpqdkyr1cLX1xceHh7lMrwkOSUNn23bAgBYFDIablVcyvweVDqiKEIQBHh4eFhlklAURaSnpyMhIQEeHh6wsbGxiCRQTk6O3CHQYyylTiRJQk5ODhISEqBSqeDt7W2Vr10AuB0bC+OlS1DZ28OT8xJahIr4m2Ktw+uJiIiIqGRkSxK6u7tDqVTm6TWYkJCQp3fh4wICAgDkJvju3LmDsLCwPEnCpUuXYtGiRThw4AAaNmxY6PUcHBwQHByMK1euFFhGo9FAo9Hk2a9QKMqlUS88ck2FUD73oNITBKHc6t7SKRQK1KpVC3Fxcbh9+7bc4QCAaZieQqGwiIQlWWad2Nvbo1q1albbixAAhEe+W+P7l6Uq778prGsiIiIiKg7Z/lNSq9Vo1qwZ9u/fj/79+5v279+/H3379i32dSRJMpsrEAD++9//Ijw8HHv37kXz5s2LvIZOp8Ply5fRrl274j8AIiumVqvh5+cHg8FgGlIqJ1EUkZSUBDc3N/4zbCEsrU6USqVFLaJCRERERERkaWTtTjFz5kwMHz4czZs3R+vWrbF27VrExsZiwoQJAHKH+N66dQubNm0CAKxcuRJ+fn4IDAwEAERHR2Pp0qWYMmWK6ZpLlizBO++8g82bN6NmzZqmnoqOjo5wdHQEAMyePRu9e/eGn58fEhISEB4eDq1WixEjRlTkwyeq1ARBgI2NDWxs5J8vUxRF2NjYwNbW1iISUsQ6ISIiIiIiqmxkTRIOGjQISUlJWLhwIeLi4tCgQQPs3r0b/v7+AIC4uDjExsaayouiiNDQUFy7dg0qlQq1a9dGZGQkxo8fbyqzatUq6PV6DBw40Oxe8+fPR1hYGADg5s2bGDJkCO7evQsPDw+0atUKx48fN92XiIiIiIiIiIjImsg+MdPEiRMxceLEfI9t2LDBbHvKlClmvQbzc/369SLvuXXr1uKGR0RERERERERE9NTjGDAiIiIiIiIiIiIrJ3tPwspKkiQAgFarLZfra7Vp0OuyAQBpWi1sVJxs31KIooi0tDTOtWZBWCeWh3VimdJycpBtNCInJ6fc/n5RyVTEa+VBXT9ou1DZKe/2IBEREVFZKG57UJDYYiyVmzdvwtfXV+4wiIiIiIrlxo0b8PHxkTuMpwrbg0RERFSZFNUeZJKwlERRxO3bt+Hk5ARBKJ9eflqtFr6+vrhx4wacnZ3L5R5UcqwXy8M6sTysE8vEerE8FVEnkiQhLS0N1atXZ8/eMlYR7cHKhO8xlo91VDmwniwf68jysY7MFbc9yOHGpaRQKCrs03hnZ2c+qS0Q68XysE4sD+vEMrFeLE9514mLi0u5XduaVWR7sDLhe4zlYx1VDqwny8c6snyso4eK0x7kx8lERERERERERERWjklCIiIiIiIiIiIiK8ckoQXTaDSYP38+NBqN3KHQI1gvlod1YnlYJ5aJ9WJ5WCf0NOHz2fKxjioH1pPlYx1ZPtZR6XDhEiIiIiIiIiIiIivHnoRERERERERERERWjklCIiIiIiIiIiIiK8ckIRERERERERERkZVjktACRUREoEWLFnBycoKnpyf69euHmJgYucOyaqtXr0bDhg3h7OwMZ2dntG7dGj/99JPcYdEjIiIiIAgCpk+fLncoVi0sLAyCIJh9eXt7yx2W1bt16xaGDRsGNzc32Nvbo3Hjxjh9+rTcYVmtmjVr5nmdCIKASZMmyR0aUYmxjVT5sM1kmdiGqjzYrrJsbGc9GZXcAVBehw8fxqRJk9CiRQsYDAbMmzcPXbt2xZ9//gkHBwe5w7NKPj4+iIyMRJ06dQAAGzduRN++fXH27FnUr19f5ujo1KlTWLt2LRo2bCh3KASgfv36OHDggGlbqVTKGA0lJyejbdu26NSpE3766Sd4enri6tWrcHV1lTs0q3Xq1CkYjUbT9sWLF9GlSxe88sorMkZFVDpsI1UubDNZNrahLB/bVZaP7awnwyShBdqzZ4/Z9hdffAFPT0+cPn0a7du3lykq69a7d2+z7ffffx+rV6/G8ePH2QCWWXp6OoYOHYp169YhPDxc7nAIgEql4iffFmTx4sXw9fXFF198YdpXs2ZN+QIieHh4mG1HRkaidu3a6NChg0wREZUe20iVB9tMlo9tKMvHdpXlYzvryXC4cSWQmpoKAKhatarMkRAAGI1GbN26FRkZGWjdurXc4Vi9SZMmoWfPnujcubPcodB9V65cQfXq1REQEIDBgwfjn3/+kTskq/b999+jefPmeOWVV+Dp6YkmTZpg3bp1codF9+n1enz11Vd44403IAiC3OEQPRG2kSwb20yWj20oy8d2VeXCdlbJMUlo4SRJwsyZM/H888+jQYMGcodj1S5cuABHR0doNBpMmDABUVFRePbZZ+UOy6pt3boVZ86cQUREhNyh0H0tW7bEpk2bsHfvXqxbtw7x8fFo06YNkpKS5A7Nav3zzz9YvXo16tati71792LChAmYOnUqNm3aJHdoBGDnzp1ISUnByJEj5Q6FqNTYRrJ8bDNZPrahKge2qyoXtrNKTpAkSZI7CCrYpEmT8OOPPyI6Oho+Pj5yh2PV9Ho9YmNjkZKSgm+//RafffYZDh8+zEawTG7cuIHmzZtj3759aNSoEQCgY8eOaNy4MZYvXy5vcGSSkZGB2rVrY86cOZg5c6bc4VgltVqN5s2b49ixY6Z9U6dOxalTp/Dbb7/JGBkBQLdu3aBWq/HDDz/IHQpRqbGNZNnYZqqc2IayTGxXVS5sZ5UcexJasClTpuD777/HL7/8wgShBVCr1ahTpw6aN2+OiIgINGrUCCtWrJA7LKt1+vRpJCQkoFmzZlCpVFCpVDh8+DA++ugjqFQqs8lqST4ODg4IDg7GlStX5A7FalWrVi3PP+pBQUGIjY2VKSJ64N9//8WBAwcwZswYuUMheiJsI1k2tpkqJ7ahLBPbVZUH21mlw4VLLJAkSZgyZQqioqJw6NAhBAQEyB0S5UOSJOh0OrnDsFovvvgiLly4YLZv1KhRCAwMxH/+8x+uBmchdDodLl++jHbt2skditVq27YtYmJizPb9/fff8Pf3lykieuDBwmQ9e/aUOxSiMsU2kmVhm6lyYhvKMrFdVXmwnVU6TBJaoEmTJmHz5s347rvv4OTkhPj4eACAi4sL7OzsZI7OOs2dOxc9evSAr68v0tLSsHXrVhw6dCjPStRUcZycnPLM0+ng4AA3NzfO3ymj2bNno3fv3vDz80NCQgLCw8Oh1WoxYsQIuUOzWjNmzECbNm2waNEivPrqqzh58iTWrl2LtWvXyh2aVRNFEV988QVGjBgBlYrNMaq82EayfGwzVQ5sQ1UObFdVDmxnlR5/WxZo9erVAHLnCnnUF198wQk3ZXLnzh0MHz4ccXFxcHFxQcOGDbFnzx506dJF7tCILMrNmzcxZMgQ3L17Fx4eHmjVqhWOHz/OT1dl1KJFC0RFRSE0NBQLFy5EQEAAli9fjqFDh8odmlU7cOAAYmNj8cYbb8gdCtETYRuJqGywDVU5sF1VObCdVXpcuISIiIiIiIiIiMjKceESIiIiIiIiIiIiK8ckIRERERERERERkZVjkpCIiIiIiIiIiMjKMUlIRERERERERERk5ZgkJCIiIiIiIiIisnJMEhIREREREREREVk5JgmJiIiIiIiIiIisHJOEREREREREREREVo5JQiIiIiIiIiIiIivHJCERPZWuX78OQRBw7tw5uUMx+euvv9CqVSvY2tqicePGT3QtQRCwc+fOMonLEhw8eBCBgYEQRbHY5+zatQtNmjQp0TlERERkPdgerFzYHiSSH5OERFQuRo4cCUEQEBkZabZ/586dEARBpqjkNX/+fDg4OCAmJgY///xzgeXi4+MxZcoU1KpVCxqNBr6+vujdu3eh5zyJQ4cOQRAEpKSklMv1i2POnDmYN28eFIrcP0sbNmyAq6urWZnLly/Dx8cHAwYMgE6nQ69evSAIAjZv3ixDxERERFQUtgfzYnuwYGwPEsmPSUIiKje2trZYvHgxkpOT5Q6lzOj1+lKfe/XqVTz//PPw9/eHm5tbvmWuX7+OZs2a4eDBg1iyZAkuXLiAPXv2oFOnTpg0aVKp710RJEmCwWAo8XnHjh3DlStX8MorrxRY5tSpU2jXrh26deuG//u//4NGowEAjBo1Ch9//HGpYyYiIqLyxfagObYH88f2IJFlYJKQiMpN586d4e3tjYiIiALLhIWF5RlqsXz5ctSsWdO0PXLkSPTr1w+LFi2Cl5cXXF1dsWDBAhgMBrz11luoWrUqfHx88Pnnn+e5/l9//YU2bdrA1tYW9evXx6FDh8yO//nnn3jppZfg6OgILy8vDB8+HHfv3jUd79ixIyZPnoyZM2fC3d0dXbp0yfdxiKKIhQsXwsfHBxqNBo0bN8aePXtMxwVBwOnTp7Fw4UIIgoCwsLB8rzNx4kQIgoCTJ09i4MCBqFevHurXr4+ZM2fi+PHj+Z6T3ye/586dgyAIuH79OgDg33//Re/evVGlShU4ODigfv362L17N65fv45OnToBAKpUqQJBEDBy5EgAuY28JUuWoFatWrCzs0OjRo3wzTff5Lnv3r170bx5c2g0Ghw9ehR//PEHOnXqBCcnJzg7O6NZs2b4/fff840dALZu3YquXbvC1tY23+MHDx7ECy+8gFGjRmH9+vVQKpWmY3369MHJkyfxzz//FHh9IiIikg/bg2wPsj1IVHkwSUhE5UapVGLRokX4+OOPcfPmzSe61sGDB3H79m0cOXIEH374IcLCwtCrVy9UqVIFJ06cwIQJEzBhwgTcuHHD7Ly33noLs2bNwtmzZ9GmTRv06dMHSUlJAIC4uDh06NABjRs3xu+//449e/bgzp07ePXVV82usXHjRqhUKvz6669Ys2ZNvvGtWLECH3zwAZYuXYrz58+jW7du6NOnD65cuWK6V/369TFr1izExcVh9uzZea5x79497NmzB5MmTYKDg0Oe448PtyiJSZMmQafT4ciRI7hw4QIWL14MR0dH+Pr64ttvvwUAxMTEIC4uDitWrAAAvP322/jiiy+wevVqXLp0CTNmzMCwYcNw+PBhs2vPmTMHERERuHz5Mho2bIihQ4fCx8cHp06dwunTpxESEgIbG5sCYzty5AiaN2+e77GoqCj07NkT8+bNw3//+988x/39/eHp6YmjR4+W9ldDRERE5YjtQbYH2R4kqkQkIqJyMGLECKlv376SJElSq1atpDfeeEOSJEmKioqSHn3rmT9/vtSoUSOzc5ctWyb5+/ubXcvf318yGo2mfc8884zUrl0707bBYJAcHBykLVu2SJIkSdeuXZMASJGRkaYyOTk5ko+Pj7R48WJJkiTpnXfekbp27Wp27xs3bkgApJiYGEmSJKlDhw5S48aNi3y81atXl95//32zfS1atJAmTpxo2m7UqJE0f/78Aq9x4sQJCYC0Y8eOIu8HQIqKipIkSZJ++eUXCYCUnJxsOn727FkJgHTt2jVJkiQpODhYCgsLy/da+Z2fnp4u2draSseOHTMrO3r0aGnIkCFm5+3cudOsjJOTk7Rhw4YiH8MDLi4u0qZNm8z2ffHFF5JSqZSUSqX0zjvvFHp+kyZNCnxsREREJB+2B9keLC62B4ksA3sSElG5W7x4MTZu3Ig///yz1NeoX7++aRJjAPDy8kJwcLBpW6lUws3NDQkJCWbntW7d2vSzSqVC8+bNcfnyZQDA6dOn8csvv8DR0dH0FRgYCCB3vpgHCvpU8wGtVovbt2+jbdu2Zvvbtm1ruldxSJIEAOUykffUqVMRHh6Otm3bYv78+Th//nyh5f/8809kZ2ejS5cuZr+fTZs2mf1ugLy/n5kzZ2LMmDHo3LkzIiMj85R/XFZWVr5DS+zs7NClSxesW7eu0N+jnZ0dMjMzC70HERERyYvtweJhe9Ac24NEFYtJQiIqd+3bt0e3bt0wd+7cPMcUCoWpMfRATk5OnnKPD08QBCHffaIoFhnPg0aXKIro3bs3zp07Z/Z15coVtG/f3lQ+v6EehV33AUmSStTAq1u3LgRBKFFDEoCpsfzo7/Hx3+GYMWPwzz//YPjw4bhw4QKaN29e6ATPD36PP/74o9nv5s8//zSbhwbI+/sJCwvDpUuX0LNnTxw8eBDPPvssoqKiCryXu7t7vpOZK5VK7Ny5E82aNUOnTp0K/Kfi3r178PDwKPD6REREJD+2B4uH7UFzbA8SVSwmCYmoQkRGRuKHH37AsWPHzPZ7eHggPj7erEFz7ty5Mrvvo5M7GwwGnD592vTpcNOmTXHp0iXUrFkTderUMfsqbkMQAJydnVG9enVER0eb7T927BiCgoKKfZ2qVauiW7duWLlyJTIyMvIcf3Qi6kc9aBDFxcWZ9uX3O/T19cWECROwY8cOzJo1C+vWrQMAqNVqAIDRaDSVffbZZ6HRaBAbG5vnd+Pr61vkY6lXrx5mzJiBffv2YcCAAfjiiy8KLNukSZMCG3wajQY7duzAc889h06dOuHixYtmx7Ozs3H16lU0adKkyJiIiIhIXmwPFo3twbzYHiSqOEwSElGFCA4OxtChQ/N8WtmxY0ckJiZiyZIluHr1KlauXImffvqpzO67cuVKREVF4a+//sKkSZOQnJyMN954A0Du5M337t3DkCFDTCui7du3D2+88YZZA6k43nrrLSxevBjbtm1DTEwMQkJCcO7cOUybNq1E11m1ahWMRiOee+45fPvtt7hy5QouX76Mjz76yGyozKMeNNTCwsLw999/48cff8QHH3xgVmb69OnYu3cvrl27hjNnzuDgwYOmBqu/vz8EQcCuXbuQmJiI9PR0ODk5Yfbs2ZgxYwY2btyIq1ev4uzZs1i5ciU2btxYYPxZWVmYPHkyDh06hH///Re//vorTp06VWjjuFu3bnka1I9Sq9X49ttv0aZNG7zwwgu4cOGC6djx48eh0WgK/N0QERGR5WB7sHjYHsyL7UGiisEkIRFVmPfeey/PUJKgoCCsWrUKK1euRKNGjXDy5Ml8V3orrcjISCxevBiNGjXC0aNH8d1338Hd3R0AUL16dfz6668wGo3o1q0bGjRogGnTpsHFxcVsvpvimDp1KmbNmoVZs2YhODgYe/bswffff4+6deuW6DoBAQE4c+YMOnXqhFmzZqFBgwbo0qULfv75Z6xevTrfc2xsbLBlyxb89ddfaNSoERYvXozw8HCzMkajEZMmTUJQUBC6d++OZ555BqtWrQIA1KhRAwsWLEBISAi8vLwwefJkALn19e677yIiIgJBQUHo1q0bfvjhBwQEBBQYv1KpRFJSEl5//XXUq1cPr776Knr06IEFCxYUeM6wYcPw559/IiYmpsAyNjY22L59O9q3b48XXnjBNIfOli1bMHToUNjb2xd4LhEREVkOtgeLxvZg/tgeJCp/gvT4OzQREVEFmzNnDlJTU7FmzZpin5OYmIjAwED8/vvvhTZUiYiIiMjysT1IJD/2JCQiItnNmzcP/v7+JRrWc+3aNaxatYoNQiIiIqKnANuDRPJjT0IiIiIiIiIiIiIrx56EREREREREREREVo5JQiIiIiIiIiIiIivHJCEREREREREREZGVY5KQiIiIiIiIiIjIyjFJSEREREREREREZOWYJCQiIiIiIiIiIrJyTBISERERERERERFZOSYJiYiIiIiIiIiIrByThERERERERERERFbu/wEdM5vd4LXkCQAAAABJRU5ErkJggg==",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"Proceeding with K = 6 for the full K-Prototypes fit.\n"
]
}
],
"source": [
"fig, axes = plt.subplots(1, 2, figsize=(13, 5))\n",
"fig.suptitle(\"Optimal K Selection — Wholesale Customer Spending\", fontsize=13, fontweight=\"bold\")\n",
"\n",
"BLUE, RED, GREY, GREEN = \"#2563EB\", \"#DC2626\", \"#64748B\", \"#059669\"\n",
"\n",
"deltas = [np.nan] + [score_values[i] - score_values[i - 1] for i in range(1, len(score_values))]\n",
"\n",
"ax = axes[0]\n",
"ax.plot(ks, score_values, color=BLUE, lw=2.5, marker=\"o\", markersize=7)\n",
"ax.axvline(k_result.recommended_k, color=GREY, ls=\"--\", lw=1.6, label=f\"Global max = K {k_result.recommended_k}\")\n",
"ax.axvline(optimal_k, color=RED, ls=\"--\", lw=1.8, label=f\"Tutorial choice = K {optimal_k}\")\n",
"if local_peak_ks:\n",
" ax.scatter(local_peak_ks, [scores_by_k[k] for k in local_peak_ks], color=RED, s=90, zorder=4)\n",
"ax.set_xlabel(\"Number of Clusters (K)\")\n",
"ax.set_ylabel(\"Silhouette Score\")\n",
"ax.set_title(\"Silhouette Score vs K\", fontweight=\"bold\")\n",
"ax.xaxis.set_major_locator(mticker.MultipleLocator(1))\n",
"ax.legend(fontsize=9)\n",
"ax.grid(True, alpha=0.3)\n",
"\n",
"ax = axes[1]\n",
"bar_ks = ks[1:]\n",
"bar_deltas = deltas[1:]\n",
"bar_colours = [RED if k == optimal_k else (GREEN if delta > 0 else GREY) for k, delta in zip(bar_ks, bar_deltas)]\n",
"ax.axhline(0, color=\"#111827\", lw=1)\n",
"ax.bar(bar_ks, bar_deltas, color=bar_colours, alpha=0.85, edgecolor=\"white\", linewidth=0.8)\n",
"ax.set_xlabel(\"Number of Clusters (K)\")\n",
"ax.set_ylabel(\"Delta vs Previous K\")\n",
"ax.set_title(\"Silhouette Gain from Adding a Cluster\", fontweight=\"bold\")\n",
"ax.xaxis.set_major_locator(mticker.MultipleLocator(1))\n",
"ax.grid(axis=\"y\", alpha=0.3)\n",
"\n",
"plt.tight_layout()\n",
"plt.show()\n",
"\n",
"print(f\"\\nProceeding with K = {optimal_k} for the full K-Prototypes fit.\")"
]
},
{
"cell_type": "markdown",
"id": "md347da328",
"metadata": {},
"source": [
"### 6.3 Fitting K-Prototypes\n",
"\n",
"With the tutorial K established from the silhouette local-peak rule, we fit K-Prototypes across all 8 features. Huang's gamma balances the overall categorical contribution against the numerical distance. Categorical weights then redistribute that categorical budget across Channel and Region, so a more useful categorical column can count more than a weaker one without changing the overall gamma scale. After fitting, BitBullet stores the resolved `gamma_by_column` and `categorical_weights_by_column` values in `clusterer.state.fitted_params` so future assignments can reproduce the same distance calculation exactly."
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "cd8f9f20db",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Fitting kprototypes...\n",
"Calculating gamma using 'huang' method...\n",
"Gamma = 3497.7919\n",
"Calculating categorical weights using 'relevance' method...\n",
"Applying per-feature weights. Gamma range: [1786.6539, 5208.9299]\n",
"Initialization method and algorithm are deterministic. Setting n_init to 1.\n",
"\n",
"Fitting K-Prototypes (n_clusters=6)...\n",
"Init: initializing centroids\n",
"Init: initializing centroids\n",
"Init: initializing centroids\n",
"Init: initializing centroids\n",
"Init: initializing clusters\n",
"Init: initializing clusters\n",
"Init: initializing centroids\n",
"Init: initializing clusters\n",
"Init: initializing centroids\n",
"Init: initializing clusters\n",
"Init: initializing centroids\n",
"Init: initializing centroids\n",
"Init: initializing centroids\n",
"Init: initializing centroids\n",
"Init: initializing clusters\n",
"Init: initializing clusters\n",
"Init: initializing clusters\n",
"Init: initializing clusters\n",
"Init: initializing clusters\n",
"Init: initializing clusters\n",
"Starting iterations...\n",
"Starting iterations...\n",
"Init: initializing centroids\n",
"Init: initializing centroids\n",
"Init: initializing clusters\n",
"Init: initializing clusters\n",
"Starting iterations...\n",
"Starting iterations...\n",
"Init: initializing centroids\n",
"Starting iterations...\n",
"Starting iterations...\n",
"Init: initializing centroids\n",
"Init: initializing clusters\n",
"Init: initializing clusters\n",
"Starting iterations...\n",
"Init: initializing centroids\n",
"Init: initializing clusters\n",
"Starting iterations...\n",
"Run: 1, iteration: 1/100, moves: 70, ncost: 49649392753.392715\n",
"Run: 2, iteration: 1/100, moves: 180, ncost: 51308332205.64385\n",
"Run: 7, iteration: 1/100, moves: 130, ncost: 51682792308.93562\n",
"Starting iterations...\n",
"Run: 4, iteration: 1/100, moves: 130, ncost: 65414946639.87763\n",
"Run: 5, iteration: 1/100, moves: 94, ncost: 51819045722.895485\n",
"Init: initializing centroids\n",
"Run: 1, iteration: 2/100, moves: 16, ncost: 49298549332.669174\n",
"Init: initializing clusters\n",
"Run: 7, iteration: 2/100, moves: 28, ncost: 49065141592.241196\n",
"Run: 2, iteration: 2/100, moves: 63, ncost: 48301610492.62795\n",
"Run: 3, iteration: 1/100, moves: 129, ncost: 54918192783.91495\n",
"Run: 4, iteration: 2/100, moves: 79, ncost: 57312279566.96777\n",
"Run: 1, iteration: 3/100, moves: 10, ncost: 48332061568.87334\n",
"Run: 7, iteration: 3/100, moves: 15, ncost: 48453376935.35493\n",
"Run: 5, iteration: 2/100, moves: 43, ncost: 47648855855.11714\n",
"Run: 2, iteration: 3/100, moves: 10, ncost: 47828884263.17672\n",
"Run: 6, iteration: 1/100, moves: 127, ncost: 59931196650.75278\n",
"Init: initializing centroids\n",
"Init: initializing clusters\n",
"Run: 3, iteration: 2/100, moves: 78, ncost: 51340773812.6057\n",
"Run: 9, iteration: 1/100, moves: 82, ncost: 58933184277.77784\n",
"Run: 1, iteration: 4/100, moves: 5, ncost: 47669234105.81741\n",
"Run: 4, iteration: 3/100, moves: 47, ncost: 56249512450.14134\n",
"Run: 7, iteration: 4/100, moves: 3, ncost: 48227652054.49703\n",
"Run: 2, iteration: 4/100, moves: 9, ncost: 47794026754.00624\n",
"Run: 5, iteration: 3/100, moves: 10, ncost: 47407916731.60952\n",
"Run: 3, iteration: 3/100, moves: 53, ncost: 49172026027.47575\n",
"Run: 8, iteration: 1/100, moves: 117, ncost: 48199476104.368126\n",
"Starting iterations...\n",
"Run: 1, iteration: 5/100, moves: 1, ncost: 47668348996.0103\n",
"Run: 4, iteration: 4/100, moves: 42, ncost: 54332538127.34818\n",
"Run: 7, iteration: 5/100, moves: 10, ncost: 47882352428.88638\n",
"Run: 2, iteration: 5/100, moves: 3, ncost: 47786508436.10258\n",
"Run: 5, iteration: 4/100, moves: 7, ncost: 46993091189.986496\n",
"Run: 6, iteration: 2/100, moves: 71, ncost: 56984069126.89836\n",
"Run: 3, iteration: 4/100, moves: 32, ncost: 47892857341.56697\n",
"Run: 1, iteration: 6/100, moves: 0, ncost: 47668348996.0103\n",
"Run: 9, iteration: 2/100, moves: 46, ncost: 52882785311.721466\n",
"Run: 7, iteration: 6/100, moves: 4, ncost: 47793652177.47762\n",
"Run: 4, iteration: 5/100, moves: 51, ncost: 50887690839.78267\n",
"Run: 5, iteration: 5/100, moves: 2, ncost: 46986315331.912796\n",
"Run: 2, iteration: 6/100, moves: 0, ncost: 47786508436.10258\n",
"Run: 3, iteration: 5/100, moves: 19, ncost: 47666655863.303474\n",
"Run: 8, iteration: 2/100, moves: 27, ncost: 47754445955.88371\n",
"Run: 6, iteration: 3/100, moves: 73, ncost: 52136709109.60636\n",
"Run: 7, iteration: 7/100, moves: 6, ncost: 47763755780.27575\n",
"Run: 5, iteration: 6/100, moves: 1, ncost: 46984794187.20419\n",
"Run: 9, iteration: 3/100, moves: 23, ncost: 51481027287.35657\n",
"Run: 4, iteration: 6/100, moves: 30, ncost: 48959749757.79218\n",
"Run: 3, iteration: 6/100, moves: 11, ncost: 47528644509.02759\n",
"Run: 6, iteration: 4/100, moves: 45, ncost: 50253091517.93228\n",
"Run: 10, iteration: 1/100, moves: 90, ncost: 59083225690.359116\n",
"Run: 7, iteration: 8/100, moves: 2, ncost: 47685487773.957695\n",
"Run: 5, iteration: 7/100, moves: 0, ncost: 46984794187.20419\n",
"Run: 9, iteration: 4/100, moves: 23, ncost: 47696913389.91361\n",
"Run: 4, iteration: 7/100, moves: 19, ncost: 48207937033.868996\n",
"Run: 3, iteration: 7/100, moves: 4, ncost: 47516544907.77154\n",
"Run: 8, iteration: 3/100, moves: 7, ncost: 47691343472.49512\n",
"Run: 6, iteration: 5/100, moves: 19, ncost: 48553154878.49\n",
"Run: 7, iteration: 9/100, moves: 5, ncost: 47274647130.41096\n",
"Run: 10, iteration: 2/100, moves: 29, ncost: 56289824356.230644\n",
"Run: 9, iteration: 5/100, moves: 8, ncost: 47315399345.09145\n",
"Run: 4, iteration: 8/100, moves: 7, ncost: 47953054232.44269\n",
"Run: 3, iteration: 8/100, moves: 0, ncost: 47516544907.77154\n",
"Run: 6, iteration: 6/100, moves: 15, ncost: 48086820664.54063\n",
"Run: 7, iteration: 10/100, moves: 0, ncost: 47274647130.41096\n",
"Run: 9, iteration: 6/100, moves: 7, ncost: 46989966012.00096\n",
"Run: 10, iteration: 3/100, moves: 22, ncost: 54193989336.3235\n",
"Run: 4, iteration: 9/100, moves: 4, ncost: 47716322402.81821\n",
"Run: 8, iteration: 4/100, moves: 3, ncost: 47682029908.17376\n",
"Run: 6, iteration: 7/100, moves: 5, ncost: 47851644388.32763\n",
"Run: 9, iteration: 7/100, moves: 10, ncost: 46780813589.77353\n",
"Run: 10, iteration: 4/100, moves: 13, ncost: 53864785435.76567\n",
"Run: 4, iteration: 10/100, moves: 5, ncost: 47610834134.838905\n",
"Run: 8, iteration: 5/100, moves: 0, ncost: 47682029908.17376\n",
"Run: 6, iteration: 8/100, moves: 4, ncost: 47604974300.35931\n",
"Run: 9, iteration: 8/100, moves: 1, ncost: 46776955072.002396\n",
"Run: 10, iteration: 5/100, moves: 12, ncost: 53754873397.0775\n",
"Run: 4, iteration: 11/100, moves: 3, ncost: 47595685970.181305\n",
"Run: 6, iteration: 9/100, moves: 7, ncost: 47548639341.52393\n",
"Run: 9, iteration: 9/100, moves: 1, ncost: 46775028002.47143\n",
"Run: 10, iteration: 6/100, moves: 9, ncost: 53661130319.79628\n",
"Run: 4, iteration: 12/100, moves: 5, ncost: 47576285369.82584\n",
"Run: 6, iteration: 10/100, moves: 2, ncost: 47472063926.32072\n",
"Run: 9, iteration: 10/100, moves: 0, ncost: 46775028002.47143\n",
"Run: 4, iteration: 13/100, moves: 0, ncost: 47576285369.82584\n",
"Run: 10, iteration: 7/100, moves: 13, ncost: 52231041788.457535\n",
"Run: 6, iteration: 11/100, moves: 5, ncost: 47441530524.503624\n",
"Run: 10, iteration: 8/100, moves: 13, ncost: 51803332200.7302\n",
"Run: 6, iteration: 12/100, moves: 3, ncost: 47434954413.24388\n",
"Run: 10, iteration: 9/100, moves: 8, ncost: 51752174729.57088\n",
"Run: 6, iteration: 13/100, moves: 0, ncost: 47434954413.24388\n",
"Run: 10, iteration: 10/100, moves: 3, ncost: 51727649570.51242\n",
"Run: 10, iteration: 11/100, moves: 0, ncost: 51727649570.51242\n",
"Best run was number 9\n",
"Clustering complete. Final cost: 46775028002.47\n",
"Fitted kprototypes. Found 6 clusters.\n",
"\n",
"Fitting complete — 6 clusters across 440 customers.\n"
]
}
],
"source": [
"config = ClusterConfig(\n",
" name=\"wholesale_segments\",\n",
" algorithm_type=\"partitional\",\n",
" method=\"kprototypes\",\n",
" n_clusters=optimal_k,\n",
" numerical_columns=numerical_cols,\n",
" categorical_columns=categorical_cols,\n",
" params={\n",
" \"gamma\": \"huang\",\n",
" \"categorical_weights\": \"relevance\",\n",
" \"init\": \"Cao\",\n",
" \"n_init\": 10,\n",
" },\n",
")\n",
"\n",
"clusterer = KPrototypesClusterer(config)\n",
"clusterer.fit(df, verbose=True)\n",
"\n",
"labels = clusterer.labels_\n",
"print(f\"\\nFitting complete — {len(np.unique(labels))} clusters across {len(labels):,} customers.\")"
]
},
{
"cell_type": "markdown",
"id": "mdf4a279e5",
"metadata": {},
"source": [
"## 7. Evaluation Metrics"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "cdd5c639da",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"════════════════════════════════════════════════════════════\n",
" CLUSTERING EVALUATION REPORT\n",
"════════════════════════════════════════════════════════════\n",
" Silhouette score : 0.3766\n",
" Calinski-Harabasz : 205.65\n",
" Davies-Bouldin : 0.9558\n",
" Overall quality score : 6.98 / 10\n",
" Quality label : Good\n",
"\n",
" Cluster sizes:\n",
" Cluster 0 → 22 customers (5.0%)\n",
" Cluster 1 → 7 customers (1.6%)\n",
" Cluster 2 → 80 customers (18.2%)\n",
" Cluster 3 → 3 customers (0.7%)\n",
" Cluster 4 → 224 customers (50.9%)\n",
" Cluster 5 → 104 customers (23.6%)\n",
"\n",
" Insights:\n",
" [POSITIVE] Clustering quality is Good (7.0/10)\n",
" [MEDIUM] Cluster 1 is weakly defined (avg silhouette: 0.12)\n",
" [MEDIUM] Cluster 1 is very small (7 samples, 1.6% of data)\n",
" [MEDIUM] Cluster 2 is weakly defined (avg silhouette: 0.28)\n",
" [MEDIUM] Cluster 3 is weakly defined (avg silhouette: 0.01)\n",
" [MEDIUM] Cluster 3 is very small (3 samples, 0.7% of data)\n",
" [LOW] Cluster 4 is very large (224 samples, 50.9% of data)\n",
" [MEDIUM] Clusters are highly imbalanced in size\n"
]
}
],
"source": [
"report = evaluate_clustering(df[numerical_cols], labels)\n",
"\n",
"print(\"\\u2550\" * 60)\n",
"print(\" CLUSTERING EVALUATION REPORT\")\n",
"print(\"\\u2550\" * 60)\n",
"print(f\" Silhouette score : {report.metrics.silhouette:.4f}\")\n",
"print(f\" Calinski-Harabasz : {report.metrics.calinski_harabasz:.2f}\")\n",
"print(f\" Davies-Bouldin : {report.metrics.davies_bouldin:.4f}\")\n",
"print(f\" Overall quality score : {report.metrics.overall_quality:.2f} / 10\")\n",
"print(f\" Quality label : {report.metrics.quality_label}\")\n",
"print()\n",
"print(\" Cluster sizes:\")\n",
"for cid, cnt in sorted(report.cluster_sizes.items()):\n",
" print(f\" Cluster {cid} \\u2192 {cnt:,} customers ({cnt / len(labels):.1%})\")\n",
"print()\n",
"if report.insights:\n",
" print(\" Insights:\")\n",
" for insight in report.insights:\n",
" severity_tag = f\"[{insight.severity.upper()}] \" if hasattr(insight, 'severity') and insight.severity else \"\"\n",
" print(f\" {severity_tag}{insight.message}\")"
]
},
{
"cell_type": "markdown",
"id": "mdbdca66ab",
"metadata": {},
"source": [
"## 8. Cluster Profiling"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "cd1973ac2a",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"══════════════════════════════════════════════════════════════════════\n",
" CLUSTER PROFILES\n",
"══════════════════════════════════════════════════════════════════════\n",
"\n",
" Cluster 0 — 22 customers (5.0%)\n",
" Suggested label : Moderately High Frozen · Very High Fresh\n",
" Key characteristics:\n",
" • Niche segment (5.0% of population)\n",
" • Fresh: 317.1% higher than average (50049.68 vs population 12000.30)\n",
" • Milk: 23.3% lower than average (4447.41 vs population 5796.27)\n",
" • Grocery: 34.3% lower than average (5225.05 vs population 7951.28)\n",
" • Frozen: 91.9% higher than average (5895.64 vs population 3071.93)\n",
" • Detergents_Paper: 67.1% lower than average (948.18 vs population 2881.49)\n",
" • Delicassen: 57.7% higher than average (2404.36 vs population 1524.87)\n",
"\n",
" Cluster 1 — 7 customers (1.6%)\n",
" Suggested label : Very High Detergents_Paper · Very High Milk\n",
" Key characteristics:\n",
" • Niche segment (1.6% of population)\n",
" • Channel: Predominantly Retail (100.0%) vs population Horeca\n",
" • Fresh: 66.9% higher than average (20031.29 vs population 12000.30)\n",
" • Milk: 557.0% higher than average (38084.00 vs population 5796.27)\n",
" • Grocery: 605.9% higher than average (56126.14 vs population 7951.28)\n",
" • Detergents_Paper: 859.4% higher than average (27644.57 vs population 2881.49)\n",
" • Delicassen: 67.1% higher than average (2548.14 vs population 1524.87)\n",
"\n",
" Cluster 2 — 80 customers (18.2%)\n",
" Suggested label : High Detergents_Paper · Moderately High Milk\n",
" Key characteristics:\n",
" • Channel: Predominantly Retail (91.2%) vs population Horeca\n",
" • Fresh: 60.6% lower than average (4724.21 vs population 12000.30)\n",
" • Milk: 104.2% higher than average (11837.01 vs population 5796.27)\n",
" • Grocery: 132.2% higher than average (18461.59 vs population 7951.28)\n",
" • Frozen: 49.7% lower than average (1546.58 vs population 3071.93)\n",
" • Detergents_Paper: 184.4% higher than average (8195.89 vs population 2881.49)\n",
"\n",
" Cluster 3 — 3 customers (0.7%)\n",
" Suggested label : Very High Delicassen · Very High Frozen\n",
" Key characteristics:\n",
" • Niche segment (0.7% of population)\n",
" • Fresh: 166.5% higher than average (31979.00 vs population 12000.30)\n",
" • Milk: 458.7% higher than average (32385.67 vs population 5796.27)\n",
" • Grocery: 134.0% higher than average (18605.00 vs population 7951.28)\n",
" • Frozen: 1012.8% higher than average (34185.67 vs population 3071.93)\n",
" • Detergents_Paper: 32.3% lower than average (1949.33 vs population 2881.49)\n",
" • Delicassen: 1431.8% higher than average (23358.33 vs population 1524.87)\n",
"\n",
" Cluster 4 — 224 customers (50.9%)\n",
" Suggested label : Moderately Low Fresh · Horeca\n",
" Key characteristics:\n",
" • Dominant segment (50.9% of population)\n",
" • Fresh: 49.4% lower than average (6072.05 vs population 12000.30)\n",
" • Milk: 43.2% lower than average (3292.95 vs population 5796.27)\n",
" • Grocery: 48.1% lower than average (4122.93 vs population 7951.28)\n",
" • Frozen: 20.2% lower than average (2451.99 vs population 3071.93)\n",
" • Detergents_Paper: 57.5% lower than average (1224.50 vs population 2881.49)\n",
" • Delicassen: 34.6% lower than average (996.64 vs population 1524.87)\n",
"\n",
" Cluster 5 — 104 customers (23.6%)\n",
" Suggested label : Moderately High Fresh · Horeca\n",
" Key characteristics:\n",
" • Fresh: 76.7% higher than average (21200.06 vs population 12000.30)\n",
" • Milk: 32.9% lower than average (3886.42 vs population 5796.27)\n",
" • Grocery: 35.4% lower than average (5138.93 vs population 7951.28)\n",
" • Frozen: 34.1% higher than average (4119.86 vs population 3071.93)\n",
" • Detergents_Paper: 60.7% lower than average (1131.52 vs population 2881.49)\n"
]
}
],
"source": [
"profiles = profile_clusters(df, labels)\n",
"\n",
"print(\"\\u2550\" * 70)\n",
"print(\" CLUSTER PROFILES\")\n",
"print(\"\\u2550\" * 70)\n",
"\n",
"for profile in profiles.cluster_profiles:\n",
" print(f\"\\n Cluster {profile.cluster_id} \\u2014 {profile.size:,} customers ({profile.percentage:.1f}%)\")\n",
" print(f\" Suggested label : {profile.suggested_label}\")\n",
" print(f\" Key characteristics:\")\n",
" for char in profile.key_characteristics:\n",
" print(f\" \\u2022 {char}\")"
]
},
{
"cell_type": "markdown",
"id": "md2ed28106",
"metadata": {},
"source": [
"### 8.1 Feature Importance — What Separates Wholesale Segments?"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "cdde805a81",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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mTk2Z/Z44iir+4ZjfOXKlUv1i7uxY8cmmzYj2y69bVqtWjX9/vvv+ueff7RkyRK99dZbKlu2rC5duqRBgwYl+7+V9D/a09NToaGhac4btweSPACpql27tvV669atTuPuu+8+6/XkyZO1fft2nT17VoMHD06xC3vHf6gBAQGy2WxasGCBvv/++xuO85133lHHjh0lScuWLVO7du2sb9Tbt29v1YuJidHmzZuVkJCgU6dOadGiRercubPGjRt3wzFkp/fee0/vvfeejh07pqpVq6pTp06qW7euNf7QoUPW66R/5idPntSRI0cytZwHHnjAej158mRt3bpVcXFxGj58uPXNfoUKFVSyZMlMr0PTpk2tK2XfffedFi1apPPnz+v999/Xxo0bk9Vv166d9fq1117TwoULdeHCBZ0/f14bNmxQv3790v1CID1lypSxrgKcOHFCL7/8suLi4rRhwwa99957GZ7P119/rTfeeEP79+9X+fLl1bFjR6eT8KTPxzHe559/Xj/88IPOnz+vI0eOaPr06emenN4qHPdtDw8P+fv769ixY3rhhRdSrO94Anrw4EGnH3D29fVVs2bNJEnGGPXv31+nTp3S3r179dJLL1n1HNvujbp69aoGDRqkM2fOaMeOHZo4caI1Luk453gcGTp0qFatWqX4+HjFxsZq5cqV6tGjh2JiYlJcx507dybr8bJAgQKqUqWKpGs9X8bHx6tBgwaSZP1dsGCBJCkoKEh33XWXNW1SLMYYde/eXTt37tSVK1d07NgxffXVV2rRooU++ugjSTmzX10vo/tHZo7NmT2eZIdSpUrpzjvvlCT99ddfGjRokI4ePaorV65o3759evvtt1W5cuVMfUHkKK39QJJeeOEFzZ8/X1evXlX9+vXVpUsX64q9McbpizhjjPU/ulatWplKyuHCsvv+TwCu4+LFi1avc44dJxiTeu+afn5+xs/Pz3qf5NVXX01W183NzZQsWdJ6P2vWLKt+Ullqz7Bd/6xUQkKCadGihVXWqlUrk5CQYOLj4506DUhpcHxmxvGZvNzyxBNPpBqrh4eH1SujMf/XSYvj0L17d2NM+s8F2e1206FDh1SX5efn59SJjePzOo7PvqS2nJR6w5NkihQpYr1euXKlVd/xubiUBsfnVlKLJT1ffvllir1rOvZOmd4zeY4dEqU0fPfdd8aYrPWu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VLRoUVWvXl0vvPCCFixYoB9++MG6GhcbG6unnnpKhQoVUlBQkBo3bqzff/891Xlef7um3W7X+PHjVapUKXl7e6t48eJ65ZVXrPFDhgxRmTJl5OfnpzvuuEPDhw/XlStXrPG///67GjVqpMDAQAUFBalGjRr69ddfJUkHDx5UmzZtlC9fPvn7+6tixYpatGiRNe2OHTvUqlUrBQQEqHDhwnrsscd08uRJa3zDhg3Vt29fPffcc8qfP7/CwsI0atSoG9yqAAAAAHLbbZvkpaRx48aqUqWK5s2bJ2OMWrdurWPHjmnRokXavHmzqlevriZNmuj06dMZmt/QoUM1fvx4DR8+XDt27NAnn3yiwoULW+MDAwM1e/Zs7dixQ2+88Ybee+89TZ482RrftWtXFStWTJs2bdLmzZv1/PPPy9PTU5IUExOjhIQErV69Wtu3b9f48eMVEBAgSTp69KgaNGigqlWr6tdff9XixYv133//qUuXLk7xzZkzR/7+/vrll1/02muv6aWXXtKyZctSXZ+EhATFxcU5DQAAAADyFo/cDiCvKVeunLZt26YVK1Zo+/btOn78uLy9vSVJEydO1DfffKOvvvpKTz31VJrzOXfunN544w29+eab6t69uySpZMmSuueee6w6L774ovU6KipKAwcO1Oeff67nnntOknTo0CENHjxY5cqVkySVLl3aqn/o0CF17NhRlSpVkiTdcccd1rjp06erevXqGjt2rFU2c+ZMRUREaNeuXSpTpowkqXLlyho5cqQ17zfffFPLly9Xs2bNUlyncePGafTo0WmuNwAAAIDcRZJ3HWOMbDabNm/erPPnzys0NNRp/KVLl7R3795057Nz504lJCSoSZMmqdb56quvNGXKFO3Zs0fnz5/X1atXFRQUZI0fMGCAnnzySX300Udq2rSpOnfurJIlS0qS+vbtq2eeeUZLly5V06ZN1bFjR1WuXFmStHnzZq1YscK6sudo7969Tkmeo/DwcB0/fjzVeIcOHaoBAwZY7+Pi4hQREZHutgAAAACQc7hd8zo7d+5UiRIlZLfbFR4erq1btzoNf//9twYPHpzufHx9fdMcv2HDBj300ENq2bKlFi5cqC1btmjYsGG6fPmyVWfUqFH6888/1bp1a/3000+qUKGC5s+fL0l68skntW/fPj322GPavn27atasqWnTpkm69ixg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yZNls9lUtmxZbd++XZMnT9b//vc/7d27V59++qkOHz6sIkWKSJIGDRqkxYsXa9asWRo7dqyka0nl22+/rSpVqqQZY0JCghISEqz3cXFxWVpXAAAAADdPtiV5xhjZbDZt3rxZ58+fV2hoqNP4S5cuae/evalOn9HpIiMjrQRPkv7++29FREQ4JV61atVKNu89e/YoMDDQqTw+Pt5p3hUrVpS7u7v1Pjw8XNu3b09rtdW3b18988wzWrp0qZo2baqOHTuqcuXKaU7jqG7dunJzc9PFixcVHh6u2bNnq1KlSkpMTNSrr76qzz//XEeOHLESLH9/f6fp7777bitxlaQ6depo0qRJSkxM1G+//SZjjMqUKeM0TUJCgtN29vLyylDM48aN0+jRozO8bgAAAAByXrYleTt37lSJEiVkt9sVHh7u9NxXkpCQkFSnz+h01yc5ScllWux2u2rUqKG5c+cmG+eYMHp6ejqNs9ls6XZC8uSTT6p58+b6/vvvtXTpUo0bN06TJk1Snz590pwuyeeff64KFSpYz9QlmTRpkiZPnqwpU6aoUqVK8vf317PPPut0e2l67Ha73N3dtXnzZqfkVZLTLaW+vr7pbkNJGjp0qAYMGGC9j4uLU0RERIbjAQAAAHDzZUuSl3SrZf/+/VWsWDEdO3ZMHh4eioqKSrG+l5eXEhMTncqqV6+e7nQpKVeunA4dOqT//vtPhQsXliRt2rQp2bw///xzq0OXrEopbunaLZM9e/ZUz549NXToUL333nsZTvIiIiJUsmTJZOU///yz2rZtq0cffVTStYRt9+7dKl++vFO9DRs2JHtfunRpubu7q1q1akpMTNTx48d17733ZnQ1U+Xt7W3dSgsAAAAgb8p0xysJCQk6duyYjhw5ot9++01jx45V27Ztdf/996tbt25q2rSp6tSpo3bt2mnJkiU6cOCA1q1bpxdffFG//vqrpGu/N7d//35t3bpVJ0+eVEJCQoamS0mzZs1UsmRJde/eXdu2bdPatWutjleSrk517dpVBQoUUNu2bfXzzz9r//79WrVqlfr166fDhw9neN2joqK0evVqHTlyRCdPnpQkPfvss1qyZIn279+v3377TT/99FOyRCwrSpUqpWXLlmndunXauXOnnn76aR07dixZvX/++UcDBgzQ33//rU8//VTTpk1Tv379JEllypRR165d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U3nS1TZfX1+n8pRu6bw+QTTGWGXXT389u92up59+Wn379k02rnjx4mku98knn1TVqlV1+PBhzZw5U02aNFFkZGSqy/L29pa3t3ea8QAAAADIXVzJu0GhoaFq1qyZ3nzzTafOTjKqfPnyWrNmjVPZunXrVL58eUlS5cqVdfjwYe3atSvF6atXr64///xTpUqVSjak14NmpUqVVLNmTb333nv65JNPnG4jBQAAAHBrIsnLBm+//bauXr2qmjVr6vPPP9fOnTv1999/6+OPP9Zff/1ldZKSksGDB2v27Nl65513tHv3br3++uuaN2+e9fxcgwYNVL9+fXXs2FHLli3T/v379cMPP2jx4sWSpCFDhmj9+vWKiYnR1q1btXv3bn377bfq06dPhmJ/8skn9eqrryoxMVHt27e/8Y0BAAAAIFeR5GWDkiVLasuWLWratKmGDh2qKlWqqGbNmpo2bZoGDRqkl19+OdVp27VrpzfeeEMTJkxQxYoVNWPGDM2aNUsNGza06nz99de666679PDDD6tChQp67rnnlJiYKOnalb5Vq1Zp9+7duvfee1WtWjUNHz5c4eHhGYr94YcfloeHhx555BGrkxYAAAAAty6bMcbkdhDIPf/884+ioqK0adMmVa9ePVPTxsXFKTg4WF3fOy5Pv5CbEyBchk12FXY/of8SC8rw/RLSkdfayxsdPBTkk3LPw8gb7Ha7jh8/rkKFCsnNLffbDPI22gsyIy+1l6Tz79jYWAUFBaVaj45XblNXrlzR0aNH9fzzz+vuu+/OdIIHAAAAIG/iq4vb1Nq1axUZGanNmzfrnXfeye1wAAAAAGQTruTdpho2bCju1AUAAABcD1fyAAAAAMCFkOQBAAAAgAshyQMAAAAAF0KSBwAAAAAuhCQPAAAAAFwISR4AAAAAuBCSPAAAAABwISR5AAAAAOBC+DF03LCx93soJISmhLTZ7XadPumu/AU85ObG90tIW15rLx65HwIAABnGmTluWJCPTUE+ttwOA3mc3W5TvNe1tuLmRntB2mgvAABkHd9NAgAAAIALIckDAAAAABdCkgcAAAAALoQkDwAAAABcCEkeAAAAALgQkjwAAAAAcCEkeQAAAADgQvidPNywy1eNLl81uR0GcpHNJnm681tmAAAAeQFJHm7Yxn+kgLO5HQVyU92o3I4AAAAASbhdEwAAAABc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+OOP6+mnn9aOHTs0ceLEZLdmZkSZMmXUs2dPvfjiizp9+rSaNGmiixcv6vvvv9eoUaNUtGhRjR49WnfddZeaN2+up556SoULF9axY8e0atUq3XvvvXr44YdTnPecOXP00Ucf6bHHHlO1atWs5xDHjx+vGjVqWElu//799eGHH6p+/foaPny47rjjDu3bt0+7du3S+PHjVaBAAfXt21cTJ06Ut7e36tWrp+XLl2vGjBkaPXp0stszr5fV+AEgy3K54xcAwG1m5MiRxt/fP806S5cuNQ0aNDD+/v7G39/fVKxY0QwcONCcPXvWGHOtN8eBAweaggULmsDAQNOpUyezYcMGI8l8+eWX1nz++OMPc++995rAwEAjycyaNcsYY8z58+fN448/bvLnz28KFixohg0bZsaPH59i75qbNm1KFl9sbKzp37+/KV68uPH09DTh4eGmVatWZuHChWmuV2q9a544ccKpnlLo0bJ79+6mYsWKybbjhg0bTI0aNYyXl5cpW7asWbBgQbLlvvPOO6Zs2bLG09PTFCtWzAwbNsxcuXIl3TiMMebnn3821atXN76+vkaSWbFihTHGmDlz5pg77rjD+Pj4mLvvvtts3LgxWW+m18dszLWeKh0/C2OMSUxMNK+99popXbq08fT0NGFhYebBBx80sbGxVp1du3aZLl26mNDQUOPt7W2ioqJMt27dUu1x1Rhj/vzzT9O7d29z5513mqCgIBMQEGAqVKhghg8fbs6cOeNU99ChQ6Zr164mf/78xsfHx5QrV85MnTrVKcYxY8aYyMhI4+npaUqWLGlef/11p3mk1bazEj8AZJXNmP//w0QAAOCWMWrUKE2cONH6LTkAAJLwEwoAAAAA4EJI8gAAAADAhXC7JgAAAAC4EK7kAQAAAIALIckDAAAAABdCkgcAAAAALoQkDwAAAABcCEkeAAAAALgQkjwAAAAAcCEkeQAAAADgQkjyAAAAAMCFkOQBAAAAgAv5f6mohBAK2WvbAAAAAElFTkSuQmCC",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"Top-5 most discriminative features:\n",
" Delicassen 1.0000\n",
" Frozen 0.7029\n",
" Detergents_Paper 0.5040\n",
" Milk 0.4583\n",
" Grocery 0.4496\n"
]
}
],
"source": [
"importance = profiles.feature_importance\n",
"imp_df = (\n",
" pd.DataFrame(list(importance.items()), columns=[\"feature\", \"importance\"])\n",
" .sort_values(\"importance\", ascending=False)\n",
" .reset_index(drop=True)\n",
")\n",
"\n",
"q67 = imp_df[\"importance\"].quantile(0.67)\n",
"q33 = imp_df[\"importance\"].quantile(0.33)\n",
"colours = [\n",
" \"#2563EB\" if v >= q67 else (\"#60A5FA\" if v >= q33 else \"#BFDBFE\")\n",
" for v in imp_df[\"importance\"]\n",
"]\n",
"\n",
"fig, ax = plt.subplots(figsize=(9, 5))\n",
"ax.barh(imp_df[\"feature\"][::-1], imp_df[\"importance\"][::-1],\n",
" color=colours[::-1], edgecolor=\"white\", linewidth=0.6)\n",
"ax.set_xlabel(\"Feature Importance Score\", fontsize=11)\n",
"ax.set_title(\n",
" \"Feature Importance for Cluster Separation\\n(darker = stronger discriminator between segments)\",\n",
" fontweight=\"bold\", fontsize=12,\n",
")\n",
"ax.grid(axis=\"x\", alpha=0.3)\n",
"plt.tight_layout()\n",
"plt.show()\n",
"\n",
"print(\"\\nTop-5 most discriminative features:\")\n",
"for _, row in imp_df.head(5).iterrows():\n",
" print(f\" {row['feature']:25s} {row['importance']:.4f}\")"
]
},
{
"cell_type": "markdown",
"id": "mdfe3efe6f",
"metadata": {},
"source": [
"## 9. Scatter Plot"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "cd3b1d8a99",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.plotly.v1+json": {
"config": {
"plotlyServerURL": "https://plot.ly"
},
"data": [
{
"hovertemplate": "X value: %{x}
Y value: %{y}
Cluster: 0",
"marker": {
"line": {
"color": "white",
"width": 0.5
},
"size": 8
},
"mode": "markers",
"name": "Cluster 0",
"type": "scatter",
"x": [
823,
2916,
1278,
14351,
2498,
1621,
918,
1819,
3,
230,
8550,
2253,
3321,
818,
1824,
1404,
2406,
18,
22,
2235,
1242,
2346
],
"y": [
1200,
10002,
532,
6312,
18028,
4787,
16538,
1718,
2995,
7368,
16745,
5243,
6422,
3012,
4802,
5970,
8692,
1042,
1388,
1364,
1034,
4510
]
},
{
"hovertemplate": "X value: %{x}
Y value: %{y}
Cluster: 1",
"marker": {
"line": {
"color": "white",
"width": 0.5
},
"size": 8
},
"mode": "markers",
"name": "Cluster 1",
"type": "scatter",
"x": [
6465,
2017,
1423,
2944,
903,
2870,
1215
],
"y": [
7782,
3254,
36,
1026,
987,
4736,
131
]
},
{
"hovertemplate": "X value: %{x}
Y value: %{y}
Cluster: 2",
"marker": {
"line": {
"color": "white",
"width": 0.5
},
"size": 8
},
"mode": "markers",
"name": "Cluster 2",
"type": "scatter",
"x": [
2098,
1744,
1080,
5206,
714,
433,
46,
72,
4985,
1452,
1163,
224,
1340,
1282,
1295,
1009,
156,
5130,
244,
3029,
1838,
1831,
1438,
3,
1519,
4430,
2153,
3182,
303,
446,
2379,
323,
6250,
716,
1697,
156,
404,
1856,
666,
731,
1681,
710,
797,
791,
2388,
674,
6372,
2784,
5121,
1265,
3636,
2563,
698,
741,
172,
59,
2410,
211,
1543,
806,
142,
3508,
1625,
1102,
37,
1115,
445,
3137,
1111,
110,
1426,
5120,
2213,
553,
993,
776,
1393,
1894,
2080,
1867
],
"y": [
1159,
4400,
134,
1158,
1920,
33,
188,
787,
1740,
1668,
1798,
744,
2616,
38,
2896,
869,
283,
3232,
206,
3252,
1593,
133,
2471,
673,
805,
42,
233,
317,
398,
2367,
4425,
1116,
651,
937,
52,
443,
2758,
275,
959,
3941,
3549,
955,
864,
913,
1374,
179,
1285,
230,
6746,
61,
10155,
2221,
1069,
902,
1809,
492,
617,
799,
1840,
1465,
1274,
662,
1128,
1234,
1456,
2693,
2005,
1741,
228,
137,
5641,
3635,
2644,
2854,
848,
133,
25,
3141,
575,
437
]
},
{
"hovertemplate": "X value: %{x}
Y value: %{y}
Cluster: 3",
"marker": {
"line": {
"color": "white",
"width": 0.5
},
"size": 8
},
"mode": "markers",
"name": "Cluster 3",
"type": "scatter",
"x": [
16523,
47943,
5609
],
"y": [
5154,
36534,
60869
]
},
{
"hovertemplate": "X value: %{x}
Y value: %{y}
Cluster: 4",
"marker": {
"line": {
"color": "white",
"width": 0.5
},
"size": 8
},
"mode": "markers",
"name": "Cluster 4",
"type": "scatter",
"x": [
1338,
1776,
7844,
1788,
1451,
545,
2566,
750,
497,
412,
4478,
501,
569,
833,
985,
395,
436,
65,
1476,
2162,
301,
1130,
436,
1603,
225,
964,
1145,
27,
3095,
144,
181,
1780,
894,
167,
1653,
529,
2342,
120,
46,
360,
1117,
709,
217,
63,
132,
323,
1386,
1236,
1647,
610,
222,
1160,
635,
255,
860,
143,
3,
911,
310,
396,
537,
326,
1542,
36,
3271,
929,
318,
520,
526,
434,
1774,
1627,
8,
1682,
2157,
2233,
238,
3637,
693,
429,
750,
707,
1442,
2631,
395,
2165,
2794,
11,
247,
727,
3,
84,
409,
1142,
1468,
697,
347,
18,
1328,
285,
120,
806,
1775,
1215,
130,
239,
375,
1360,
659,
786,
689,
203,
980,
2137,
490,
7,
295,
225,
216,
2398,
1970,
610,
659,
291,
710,
1693,
3265,
373,
987,
548,
287,
411,
56,
1550,
1040,
1153,
379,
139,
1409,
1104,
2079,
128,
1522,
686,
1060,
254,
531,
1037,
259,
555,
656,
1117,
297,
1233,
1059,
1637,
51,
834,
1113,
573,
834,
522,
739,
1043,
778,
868,
550,
1942,
1371,
2158,
1328,
379,
303,
665,
995,
195,
127,
4100,
776,
405,
712,
314,
468,
3105,
447,
342,
296,
4829,
686,
70,
1114,
179,
361,
1068,
967,
406,
684,
1000,
1827,
654,
452,
290,
743,
247,
375,
1014,
378,
344,
5137,
1892,
4365,
62,
2435,
290,
1874,
1063,
1521,
1886,
317,
2501,
1498,
1449,
2125,
52
],
"y": [
214,
1762,
2405,
6404,
666,
480,
1669,
425,
1420,
397,
839,
669,
3383,
3151,
2088,
425,
833,
541,
584,
3860,
239,
1057,
596,
129,
96,
4154,
3724,
175,
5870,
779,
8872,
1285,
7530,
2096,
868,
430,
737,
1178,
9735,
3347,
8693,
440,
145,
774,
895,
5639,
2561,
247,
2276,
2715,
1517,
1647,
3896,
2395,
1991,
2194,
142,
6316,
346,
436,
720,
1170,
4575,
661,
155,
825,
8425,
926,
1286,
4052,
531,
779,
75,
930,
824,
1092,
2540,
993,
405,
1393,
2399,
333,
2515,
1752,
1152,
4477,
402,
74,
2181,
3470,
6269,
890,
547,
806,
1127,
3527,
520,
469,
1383,
878,
2946,
1859,
1291,
1329,
2306,
91,
7496,
5612,
784,
660,
2286,
950,
6845,
8321,
1439,
937,
1218,
2312,
1112,
561,
1183,
1777,
2077,
6340,
1730,
7683,
4686,
453,
5004,
327,
6818,
4324,
5500,
1120,
529,
744,
862,
16919,
5845,
977,
1093,
1619,
502,
2507,
3838,
417,
1455,
934,
264,
364,
416,
12569,
4447,
1483,
2679,
978,
2121,
514,
2714,
915,
3498,
414,
5127,
3570,
650,
8170,
15601,
9584,
388,
767,
349,
2234,
402,
1341,
1796,
830,
245,
6114,
340,
1206,
560,
191,
1103,
1619,
1173,
1457,
1089,
876,
1492,
597,
282,
130,
4006,
2583,
1945,
1677,
3019,
5502,
907,
659,
1398,
2921,
6838,
5390,
1601,
3576,
2069,
1646,
2349,
1389,
1535,
98,
17866,
5679,
1691,
364,
633,
15348,
2198,
47,
13486,
1541,
1038,
65
]
},
{
"hovertemplate": "X value: %{x}
Y value: %{y}
Cluster: 5",
"marker": {
"line": {
"color": "white",
"width": 0.5
},
"size": 8
},
"mode": "markers",
"name": "Cluster 5",
"type": "scatter",
"x": [
5185,
2931,
602,
2168,
3181,
2124,
4334,
5778,
57,
518,
2963,
405,
1083,
4626,
5864,
2802,
1333,
834,
1365,
14472,
648,
975,
772,
3178,
2698,
548,
1378,
2708,
1561,
1266,
933,
1136,
483,
2749,
328,
2616,
1450,
201,
1440,
1067,
184,
418,
610,
64,
1755,
2876,
6854,
2100,
1158,
749,
1553,
834,
2563,
1215,
2564,
1047,
578,
572,
1391,
615,
655,
3628,
204,
2503,
1721,
1384,
1027,
258,
1854,
898,
2005,
925,
117,
229,
1092,
1534,
2602,
3486,
2139,
1022,
2341,
548,
503,
558,
790,
3113,
270,
532,
2893,
961,
819,
1902,
340,
288,
715,
960,
1784,
1218,
668,
249,
1163,
395,
838,
2204
],
"y": [
3915,
287,
3095,
294,
2205,
1066,
9408,
2915,
201,
485,
1148,
266,
6130,
1729,
9510,
2033,
2436,
1256,
10643,
5373,
8132,
4407,
2320,
3443,
35009,
1336,
910,
8853,
3220,
2555,
5343,
2417,
8195,
880,
576,
2279,
321,
118,
800,
853,
3001,
3378,
2665,
7332,
7888,
18711,
5065,
1801,
2532,
1765,
1759,
638,
4260,
4634,
11422,
2216,
3752,
559,
432,
3242,
982,
3975,
2516,
4479,
1293,
10303,
8366,
848,
909,
3045,
824,
1149,
3046,
3703,
2369,
7849,
2208,
11559,
1365,
2809,
6386,
3157,
2601,
2046,
8164,
1504,
3881,
9927,
2540,
1960,
8620,
13223,
220,
127,
4324,
9806,
1031,
830,
1059,
874,
15082,
269,
688,
13135
]
}
],
"layout": {
"annotations": [
{
"showarrow": false,
"text": "X axis",
"x": 0,
"xanchor": "left",
"xref": "paper",
"y": 1.22,
"yref": "paper"
},
{
"showarrow": false,
"text": "Y axis",
"x": 0.32,
"xanchor": "left",
"xref": "paper",
"y": 1.22,
"yref": "paper"
}
],
"height": 650,
"hovermode": "closest",
"margin": {
"t": 110
},
"plot_bgcolor": "white",
"template": {
"data": {
"bar": [
{
"error_x": {
"color": "#2a3f5f"
},
"error_y": {
"color": "#2a3f5f"
},
"marker": {
"line": {
"color": "#E5ECF6",
"width": 0.5
},
"pattern": {
"fillmode": "overlay",
"size": 10,
"solidity": 0.2
}
},
"type": "bar"
}
],
"barpolar": [
{
"marker": {
"line": {
"color": "#E5ECF6",
"width": 0.5
},
"pattern": {
"fillmode": "overlay",
"size": 10,
"solidity": 0.2
}
},
"type": "barpolar"
}
],
"carpet": [
{
"aaxis": {
"endlinecolor": "#2a3f5f",
"gridcolor": "white",
"linecolor": "white",
"minorgridcolor": "white",
"startlinecolor": "#2a3f5f"
},
"baxis": {
"endlinecolor": "#2a3f5f",
"gridcolor": "white",
"linecolor": "white",
"minorgridcolor": "white",
"startlinecolor": "#2a3f5f"
},
"type": "carpet"
}
],
"choropleth": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"type": "choropleth"
}
],
"contour": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"type": "contour"
}
],
"contourcarpet": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"type": "contourcarpet"
}
],
"heatmap": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"type": "heatmap"
}
],
"histogram": [
{
"marker": {
"pattern": {
"fillmode": "overlay",
"size": 10,
"solidity": 0.2
}
},
"type": "histogram"
}
],
"histogram2d": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"type": "histogram2d"
}
],
"histogram2dcontour": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"type": "histogram2dcontour"
}
],
"mesh3d": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"type": "mesh3d"
}
],
"parcoords": [
{
"line": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "parcoords"
}
],
"pie": [
{
"automargin": true,
"type": "pie"
}
],
"scatter": [
{
"fillpattern": {
"fillmode": "overlay",
"size": 10,
"solidity": 0.2
},
"type": "scatter"
}
],
"scatter3d": [
{
"line": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scatter3d"
}
],
"scattercarpet": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scattercarpet"
}
],
"scattergeo": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scattergeo"
}
],
"scattergl": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scattergl"
}
],
"scattermap": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scattermap"
}
],
"scattermapbox": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scattermapbox"
}
],
"scatterpolar": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scatterpolar"
}
],
"scatterpolargl": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scatterpolargl"
}
],
"scatterternary": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scatterternary"
}
],
"surface": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"type": "surface"
}
],
"table": [
{
"cells": {
"fill": {
"color": "#EBF0F8"
},
"line": {
"color": "white"
}
},
"header": {
"fill": {
"color": "#C8D4E3"
},
"line": {
"color": "white"
}
},
"type": "table"
}
]
},
"layout": {
"annotationdefaults": {
"arrowcolor": "#2a3f5f",
"arrowhead": 0,
"arrowwidth": 1
},
"autotypenumbers": "strict",
"coloraxis": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"colorscale": {
"diverging": [
[
0,
"#8e0152"
],
[
0.1,
"#c51b7d"
],
[
0.2,
"#de77ae"
],
[
0.3,
"#f1b6da"
],
[
0.4,
"#fde0ef"
],
[
0.5,
"#f7f7f7"
],
[
0.6,
"#e6f5d0"
],
[
0.7,
"#b8e186"
],
[
0.8,
"#7fbc41"
],
[
0.9,
"#4d9221"
],
[
1,
"#276419"
]
],
"sequential": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"sequentialminus": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
]
},
"colorway": [
"#636efa",
"#EF553B",
"#00cc96",
"#ab63fa",
"#FFA15A",
"#19d3f3",
"#FF6692",
"#B6E880",
"#FF97FF",
"#FECB52"
],
"font": {
"color": "#2a3f5f"
},
"geo": {
"bgcolor": "white",
"lakecolor": "white",
"landcolor": "#E5ECF6",
"showlakes": true,
"showland": true,
"subunitcolor": "white"
},
"hoverlabel": {
"align": "left"
},
"hovermode": "closest",
"mapbox": {
"style": "light"
},
"paper_bgcolor": "white",
"plot_bgcolor": "#E5ECF6",
"polar": {
"angularaxis": {
"gridcolor": "white",
"linecolor": "white",
"ticks": ""
},
"bgcolor": "#E5ECF6",
"radialaxis": {
"gridcolor": "white",
"linecolor": "white",
"ticks": ""
}
},
"scene": {
"xaxis": {
"backgroundcolor": "#E5ECF6",
"gridcolor": "white",
"gridwidth": 2,
"linecolor": "white",
"showbackground": true,
"ticks": "",
"zerolinecolor": "white"
},
"yaxis": {
"backgroundcolor": "#E5ECF6",
"gridcolor": "white",
"gridwidth": 2,
"linecolor": "white",
"showbackground": true,
"ticks": "",
"zerolinecolor": "white"
},
"zaxis": {
"backgroundcolor": "#E5ECF6",
"gridcolor": "white",
"gridwidth": 2,
"linecolor": "white",
"showbackground": true,
"ticks": "",
"zerolinecolor": "white"
}
},
"shapedefaults": {
"line": {
"color": "#2a3f5f"
}
},
"ternary": {
"aaxis": {
"gridcolor": "white",
"linecolor": "white",
"ticks": ""
},
"baxis": {
"gridcolor": "white",
"linecolor": "white",
"ticks": ""
},
"bgcolor": "#E5ECF6",
"caxis": {
"gridcolor": "white",
"linecolor": "white",
"ticks": ""
}
},
"title": {
"x": 0.05
},
"xaxis": {
"automargin": true,
"gridcolor": "white",
"linecolor": "white",
"ticks": "",
"title": {
"standoff": 15
},
"zerolinecolor": "white",
"zerolinewidth": 2
},
"yaxis": {
"automargin": true,
"gridcolor": "white",
"linecolor": "white",
"ticks": "",
"title": {
"standoff": 15
},
"zerolinecolor": "white",
"zerolinewidth": 2
}
}
},
"title": {
"text": "Cluster Scatter Plot — Select Features"
},
"updatemenus": [
{
"buttons": [
{
"args": [
{
"x": [
[
823,
2916,
1278,
14351,
2498,
1621,
918,
1819,
3,
230,
8550,
2253,
3321,
818,
1824,
1404,
2406,
18,
22,
2235,
1242,
2346
],
[
6465,
2017,
1423,
2944,
903,
2870,
1215
],
[
2098,
1744,
1080,
5206,
714,
433,
46,
72,
4985,
1452,
1163,
224,
1340,
1282,
1295,
1009,
156,
5130,
244,
3029,
1838,
1831,
1438,
3,
1519,
4430,
2153,
3182,
303,
446,
2379,
323,
6250,
716,
1697,
156,
404,
1856,
666,
731,
1681,
710,
797,
791,
2388,
674,
6372,
2784,
5121,
1265,
3636,
2563,
698,
741,
172,
59,
2410,
211,
1543,
806,
142,
3508,
1625,
1102,
37,
1115,
445,
3137,
1111,
110,
1426,
5120,
2213,
553,
993,
776,
1393,
1894,
2080,
1867
],
[
16523,
47943,
5609
],
[
1338,
1776,
7844,
1788,
1451,
545,
2566,
750,
497,
412,
4478,
501,
569,
833,
985,
395,
436,
65,
1476,
2162,
301,
1130,
436,
1603,
225,
964,
1145,
27,
3095,
144,
181,
1780,
894,
167,
1653,
529,
2342,
120,
46,
360,
1117,
709,
217,
63,
132,
323,
1386,
1236,
1647,
610,
222,
1160,
635,
255,
860,
143,
3,
911,
310,
396,
537,
326,
1542,
36,
3271,
929,
318,
520,
526,
434,
1774,
1627,
8,
1682,
2157,
2233,
238,
3637,
693,
429,
750,
707,
1442,
2631,
395,
2165,
2794,
11,
247,
727,
3,
84,
409,
1142,
1468,
697,
347,
18,
1328,
285,
120,
806,
1775,
1215,
130,
239,
375,
1360,
659,
786,
689,
203,
980,
2137,
490,
7,
295,
225,
216,
2398,
1970,
610,
659,
291,
710,
1693,
3265,
373,
987,
548,
287,
411,
56,
1550,
1040,
1153,
379,
139,
1409,
1104,
2079,
128,
1522,
686,
1060,
254,
531,
1037,
259,
555,
656,
1117,
297,
1233,
1059,
1637,
51,
834,
1113,
573,
834,
522,
739,
1043,
778,
868,
550,
1942,
1371,
2158,
1328,
379,
303,
665,
995,
195,
127,
4100,
776,
405,
712,
314,
468,
3105,
447,
342,
296,
4829,
686,
70,
1114,
179,
361,
1068,
967,
406,
684,
1000,
1827,
654,
452,
290,
743,
247,
375,
1014,
378,
344,
5137,
1892,
4365,
62,
2435,
290,
1874,
1063,
1521,
1886,
317,
2501,
1498,
1449,
2125,
52
],
[
5185,
2931,
602,
2168,
3181,
2124,
4334,
5778,
57,
518,
2963,
405,
1083,
4626,
5864,
2802,
1333,
834,
1365,
14472,
648,
975,
772,
3178,
2698,
548,
1378,
2708,
1561,
1266,
933,
1136,
483,
2749,
328,
2616,
1450,
201,
1440,
1067,
184,
418,
610,
64,
1755,
2876,
6854,
2100,
1158,
749,
1553,
834,
2563,
1215,
2564,
1047,
578,
572,
1391,
615,
655,
3628,
204,
2503,
1721,
1384,
1027,
258,
1854,
898,
2005,
925,
117,
229,
1092,
1534,
2602,
3486,
2139,
1022,
2341,
548,
503,
558,
790,
3113,
270,
532,
2893,
961,
819,
1902,
340,
288,
715,
960,
1784,
1218,
668,
249,
1163,
395,
838,
2204
]
]
},
{
"xaxis": {
"title": "Delicassen"
}
}
],
"label": "Delicassen",
"method": "update"
},
{
"args": [
{
"x": [
[
1200,
10002,
532,
6312,
18028,
4787,
16538,
1718,
2995,
7368,
16745,
5243,
6422,
3012,
4802,
5970,
8692,
1042,
1388,
1364,
1034,
4510
],
[
7782,
3254,
36,
1026,
987,
4736,
131
],
[
1159,
4400,
134,
1158,
1920,
33,
188,
787,
1740,
1668,
1798,
744,
2616,
38,
2896,
869,
283,
3232,
206,
3252,
1593,
133,
2471,
673,
805,
42,
233,
317,
398,
2367,
4425,
1116,
651,
937,
52,
443,
2758,
275,
959,
3941,
3549,
955,
864,
913,
1374,
179,
1285,
230,
6746,
61,
10155,
2221,
1069,
902,
1809,
492,
617,
799,
1840,
1465,
1274,
662,
1128,
1234,
1456,
2693,
2005,
1741,
228,
137,
5641,
3635,
2644,
2854,
848,
133,
25,
3141,
575,
437
],
[
5154,
36534,
60869
],
[
214,
1762,
2405,
6404,
666,
480,
1669,
425,
1420,
397,
839,
669,
3383,
3151,
2088,
425,
833,
541,
584,
3860,
239,
1057,
596,
129,
96,
4154,
3724,
175,
5870,
779,
8872,
1285,
7530,
2096,
868,
430,
737,
1178,
9735,
3347,
8693,
440,
145,
774,
895,
5639,
2561,
247,
2276,
2715,
1517,
1647,
3896,
2395,
1991,
2194,
142,
6316,
346,
436,
720,
1170,
4575,
661,
155,
825,
8425,
926,
1286,
4052,
531,
779,
75,
930,
824,
1092,
2540,
993,
405,
1393,
2399,
333,
2515,
1752,
1152,
4477,
402,
74,
2181,
3470,
6269,
890,
547,
806,
1127,
3527,
520,
469,
1383,
878,
2946,
1859,
1291,
1329,
2306,
91,
7496,
5612,
784,
660,
2286,
950,
6845,
8321,
1439,
937,
1218,
2312,
1112,
561,
1183,
1777,
2077,
6340,
1730,
7683,
4686,
453,
5004,
327,
6818,
4324,
5500,
1120,
529,
744,
862,
16919,
5845,
977,
1093,
1619,
502,
2507,
3838,
417,
1455,
934,
264,
364,
416,
12569,
4447,
1483,
2679,
978,
2121,
514,
2714,
915,
3498,
414,
5127,
3570,
650,
8170,
15601,
9584,
388,
767,
349,
2234,
402,
1341,
1796,
830,
245,
6114,
340,
1206,
560,
191,
1103,
1619,
1173,
1457,
1089,
876,
1492,
597,
282,
130,
4006,
2583,
1945,
1677,
3019,
5502,
907,
659,
1398,
2921,
6838,
5390,
1601,
3576,
2069,
1646,
2349,
1389,
1535,
98,
17866,
5679,
1691,
364,
633,
15348,
2198,
47,
13486,
1541,
1038,
65
],
[
3915,
287,
3095,
294,
2205,
1066,
9408,
2915,
201,
485,
1148,
266,
6130,
1729,
9510,
2033,
2436,
1256,
10643,
5373,
8132,
4407,
2320,
3443,
35009,
1336,
910,
8853,
3220,
2555,
5343,
2417,
8195,
880,
576,
2279,
321,
118,
800,
853,
3001,
3378,
2665,
7332,
7888,
18711,
5065,
1801,
2532,
1765,
1759,
638,
4260,
4634,
11422,
2216,
3752,
559,
432,
3242,
982,
3975,
2516,
4479,
1293,
10303,
8366,
848,
909,
3045,
824,
1149,
3046,
3703,
2369,
7849,
2208,
11559,
1365,
2809,
6386,
3157,
2601,
2046,
8164,
1504,
3881,
9927,
2540,
1960,
8620,
13223,
220,
127,
4324,
9806,
1031,
830,
1059,
874,
15082,
269,
688,
13135
]
]
},
{
"xaxis": {
"title": "Frozen"
}
}
],
"label": "Frozen",
"method": "update"
},
{
"args": [
{
"x": [
[
1107,
212,
2587,
1579,
1480,
500,
778,
410,
20,
1532,
4948,
828,
730,
967,
210,
1041,
751,
436,
32,
523,
96,
93
],
[
24171,
26701,
24231,
40827,
20070,
19410,
38102
],
[
7425,
5977,
4508,
8604,
6506,
6956,
6899,
9529,
7353,
6792,
13583,
5611,
17740,
7572,
7677,
12034,
7818,
18906,
5038,
8035,
6766,
6830,
8969,
836,
6457,
12591,
11577,
6694,
8077,
13726,
7108,
7015,
8773,
9836,
4196,
6907,
6839,
4027,
5618,
9959,
14235,
9265,
12420,
5957,
5828,
13308,
4797,
8933,
18594,
5980,
830,
4882,
6374,
5952,
8752,
10069,
11783,
3909,
7558,
6846,
17120,
3891,
12408,
9606,
15469,
6600,
12218,
12638,
8682,
6747,
4666,
282,
3378,
7883,
6728,
6740,
6818,
5079,
241,
14841
],
[
4337,
239,
1272
],
[
2674,
3293,
3516,
507,
1795,
3140,
3321,
1716,
549,
964,
370,
2518,
375,
242,
820,
483,
4239,
4618,
5121,
609,
1538,
2024,
227,
3084,
4095,
4074,
1247,
3468,
788,
656,
1321,
1901,
529,
301,
1202,
610,
3537,
3837,
165,
69,
627,
223,
3874,
54,
56,
215,
4573,
2505,
169,
276,
310,
319,
266,
264,
25,
1976,
1062,
395,
70,
256,
47,
199,
2447,
721,
249,
637,
399,
73,
1082,
283,
255,
302,
7,
4004,
4424,
3,
3674,
4973,
1680,
79,
69,
2840,
153,
20,
120,
273,
1382,
334,
58,
949,
3459,
43,
187,
355,
4314,
592,
402,
954,
5,
288,
5316,
3381,
240,
3961,
86,
4167,
256,
788,
70,
761,
263,
4762,
694,
955,
1566,
409,
1216,
415,
72,
1682,
3143,
430,
44,
918,
234,
205,
1547,
392,
3593,
780,
49,
2894,
197,
147,
93,
759,
96,
621,
274,
167,
2328,
1226,
965,
212,
825,
2208,
3712,
4538,
290,
6236,
257,
299,
183,
857,
83,
821,
706,
275,
228,
1679,
387,
88,
492,
182,
146,
442,
15,
573,
7271,
5162,
4595,
217,
3843,
1184,
173,
90,
184,
536,
232,
159,
179,
1335,
514,
4515,
222,
252,
41,
397,
311,
476,
68,
813,
397,
192,
353,
200,
227,
311,
95,
122,
149,
841,
64,
74,
469,
153,
593,
2730,
2123,
1860,
235,
2970,
912,
1135,
3540,
3485,
1580,
108,
850,
84,
1377,
356,
168,
477
],
[
1777,
3881,
6707,
5058,
2767,
2259,
2381,
4482,
4003,
100,
2134,
918,
361,
862,
1145,
2575,
204,
5141,
116,
4173,
764,
3,
550,
454,
71,
1491,
139,
483,
585,
118,
411,
174,
349,
2386,
955,
960,
51,
516,
113,
170,
352,
811,
232,
118,
330,
763,
284,
244,
130,
56,
2568,
284,
325,
28,
343,
412,
586,
562,
363,
111,
429,
737,
333,
603,
3620,
314,
386,
445,
811,
710,
2662,
351,
371,
1470,
140,
210,
178,
332,
4111,
4621,
1333,
9,
468,
101,
716,
1916,
600,
246,
1711,
231,
385,
92,
10,
632,
914,
1092,
3415,
948,
1803,
3213,
439,
1328,
2371,
182
]
]
},
{
"xaxis": {
"title": "Detergents_Paper"
}
}
],
"label": "Detergents_Paper",
"method": "update"
},
{
"args": [
{
"x": [
[
2100,
555,
3916,
5025,
3504,
1642,
3473,
926,
7152,
6958,
29627,
2567,
4563,
4959,
3045,
3965,
4411,
640,
286,
3944,
3154,
1431
],
[
54259,
38369,
20959,
46197,
73498,
28326,
4980
],
[
11093,
5403,
8816,
20484,
10556,
15729,
7555,
11095,
22044,
14069,
21412,
10473,
29892,
9933,
11601,
12697,
9540,
27472,
12220,
7779,
10810,
6337,
10646,
16729,
11114,
8384,
10690,
5291,
7704,
15726,
12653,
8675,
25862,
7677,
7845,
8533,
7639,
11577,
3485,
13240,
14399,
11711,
12729,
6551,
10765,
16599,
7504,
6154,
23133,
9679,
23527,
9763,
8053,
11103,
13316,
3688,
7460,
12939,
12867,
20655,
3737,
14982,
25071,
14881,
6964,
6939,
14641,
10044,
6264,
1275,
8630,
21858,
11991,
12844,
10940,
8494,
5266,
9347,
4230,
15488
],
[
36423,
43950,
16784
],
[
9656,
9810,
8808,
1196,
8259,
3199,
4956,
3648,
1124,
1114,
6157,
2495,
871,
961,
4339,
1979,
5491,
7027,
6152,
1095,
4051,
3683,
1970,
5360,
3045,
6245,
1227,
1534,
7260,
2820,
5139,
6343,
3587,
1175,
3259,
829,
9232,
3327,
542,
596,
2762,
2920,
2616,
254,
112,
2182,
6459,
8397,
1648,
793,
2521,
3880,
2344,
3234,
201,
10769,
8847,
2428,
589,
1042,
1882,
1289,
8579,
8080,
4257,
4979,
1596,
1936,
3373,
584,
3328,
9250,
55,
6570,
3651,
540,
7603,
6721,
3195,
735,
717,
5479,
1208,
7330,
7075,
4888,
6036,
918,
6448,
521,
8002,
295,
1461,
1012,
7097,
2154,
2280,
685,
891,
780,
4737,
3748,
1012,
6602,
367,
7503,
1115,
2527,
659,
3243,
2204,
577,
2746,
5989,
10678,
4984,
6380,
820,
475,
3576,
7775,
2428,
346,
3795,
1993,
1860,
17972,
5008,
1931,
4885,
1110,
1115,
1032,
5007,
8323,
1703,
1610,
829,
2317,
2884,
7108,
2247,
2160,
3354,
3086,
1897,
3199,
4560,
879,
5302,
1020,
1492,
925,
1795,
1375,
3088,
2713,
3696,
1897,
944,
1610,
899,
1486,
1786,
1511,
1347,
333,
1188,
4025,
5763,
5758,
1172,
2602,
2380,
1099,
1106,
727,
18664,
5878,
607,
1601,
997,
873,
6128,
2217,
894,
337,
3801,
2256,
1450,
3294,
5164,
1364,
922,
3620,
848,
1530,
1181,
2761,
4180,
865,
1316,
1666,
1032,
577,
906,
1046,
3880,
3634,
2096,
3289,
3605,
4859,
1990,
6046,
5499,
3783,
2408,
5970,
1750,
5506,
3218,
1981,
1698
],
[
5410,
12319,
6208,
9465,
6327,
4519,
1917,
9776,
4230,
803,
3610,
1318,
4786,
4362,
4332,
3065,
1449,
6759,
2037,
1266,
5332,
1137,
1563,
3836,
3090,
2132,
1014,
2770,
2295,
1080,
1891,
1200,
1840,
7243,
2032,
4280,
13252,
3677,
1433,
1825,
1371,
1366,
2024,
6250,
5139,
7209,
11487,
1895,
1475,
899,
5921,
1780,
2703,
3838,
3575,
1801,
659,
5279,
7961,
489,
1372,
1222,
258,
3749,
6200,
3613,
2102,
594,
2013,
1304,
6243,
2374,
2335,
713,
3587,
2209,
3216,
928,
6817,
7184,
7393,
134,
2872,
1196,
1887,
6257,
944,
4591,
7435,
1916,
6730,
2801,
4753,
11006,
4613,
5010,
4847,
1377,
3686,
2884,
16687,
1162,
3922,
12051
]
]
},
{
"xaxis": {
"title": "Milk"
}
}
],
"label": "Milk",
"method": "update"
},
{
"args": [
{
"x": [
[
2609,
902,
5876,
8117,
8906,
2961,
7102,
1510,
8253,
6536,
18148,
3779,
2124,
7336,
1493,
4252,
12609,
3600,
471,
4955,
2648,
764
],
[
55571,
59598,
45828,
92780,
32114,
39694,
67298
],
[
18881,
12974,
12121,
25957,
12477,
16709,
14961,
23998,
21531,
21955,
28921,
11532,
26866,
10487,
15775,
28540,
14403,
32034,
11323,
12144,
16267,
10704,
14886,
28986,
17569,
34792,
19460,
14855,
14682,
26870,
19858,
13430,
19816,
19805,
11874,
10518,
11687,
11522,
20292,
23127,
24708,
23596,
16767,
11364,
15538,
36486,
15205,
13916,
33586,
15445,
13699,
22182,
19847,
12469,
20399,
13829,
24773,
8852,
21570,
13567,
19172,
11924,
17645,
26839,
26316,
15541,
20521,
22294,
21203,
22272,
13586,
15400,
9345,
18683,
10908,
18622,
13227,
14316,
16483,
30243
],
[
22019,
20170,
13626
],
[
7561,
9568,
7684,
4221,
5126,
6975,
9426,
6192,
4523,
3821,
2933,
9464,
2010,
2861,
3133,
2262,
11091,
10471,
10868,
1980,
6996,
5005,
1648,
8040,
7854,
6544,
3250,
7417,
3993,
1293,
2661,
9794,
6532,
2067,
3655,
3009,
11009,
4814,
4042,
1638,
2530,
6252,
8118,
610,
778,
1909,
7677,
6981,
1694,
2988,
3355,
5380,
2147,
1498,
245,
8814,
3823,
699,
314,
1235,
2174,
2591,
7030,
8282,
5034,
3343,
1096,
2177,
2707,
542,
2022,
2368,
137,
9618,
12822,
283,
8584,
9170,
3268,
803,
2155,
6536,
5241,
4533,
4945,
2500,
8887,
4710,
1139,
854,
9819,
1381,
2251,
2974,
10391,
6824,
2112,
2216,
5226,
950,
6089,
5838,
2062,
6861,
1390,
10646,
2856,
5265,
1499,
4157,
1563,
572,
2501,
5615,
3828,
3316,
2824,
3047,
585,
5119,
10817,
1777,
489,
2070,
1799,
4740,
4748,
5249,
1883,
2157,
1094,
6684,
975,
1563,
6869,
1841,
223,
683,
2543,
2431,
6235,
1242,
2642,
3261,
4329,
5234,
6986,
9965,
2060,
9785,
3007,
2405,
2405,
7647,
2201,
6114,
3558,
2280,
5167,
11593,
1431,
1664,
4583,
5109,
1330,
2611,
7021,
5332,
9670,
11238,
5923,
1763,
8335,
2028,
1997,
1533,
2012,
1660,
2109,
864,
2453,
4438,
1524,
8025,
1664,
534,
683,
1641,
1668,
1162,
1902,
10391,
3450,
1614,
2857,
1172,
1422,
1328,
2313,
3600,
3204,
1263,
1428,
582,
935,
1238,
1167,
6407,
6100,
4563,
3281,
12400,
6633,
3417,
8552,
11055,
2223,
2593,
4910,
3580,
5160,
1493,
2232,
2510
],
[
7198,
11757,
14982,
12091,
10099,
4602,
4469,
13792,
7595,
3045,
11107,
2886,
7326,
5428,
4757,
5956,
1947,
13462,
3202,
21042,
8713,
3,
1783,
5330,
2062,
3445,
3970,
2469,
1733,
2000,
2362,
3412,
1658,
10685,
2479,
7305,
5189,
1988,
1651,
1765,
3135,
2474,
3810,
1981,
5230,
4897,
9490,
1393,
2046,
1382,
9212,
3838,
3833,
593,
7041,
2475,
2914,
2406,
16966,
1495,
1677,
2576,
1138,
6964,
9694,
2013,
2828,
1296,
6550,
3643,
6360,
2842,
8280,
3315,
2464,
3389,
1447,
2743,
10790,
12311,
2548,
218,
2006,
2406,
1939,
7398,
2146,
1617,
8469,
1573,
3842,
2128,
5091,
4604,
3444,
5026,
9053,
4172,
4657,
12232,
5429,
4754,
7994,
16027
]
]
},
{
"xaxis": {
"title": "Grocery"
}
}
],
"label": "Grocery",
"method": "update"
},
{
"args": [
{
"x": [
[
43088,
56159,
40721,
43265,
56082,
36050,
76237,
42312,
37036,
45640,
112151,
47493,
56083,
53205,
36817,
49063,
68951,
40254,
42786,
39679,
38793,
39228
],
[
44466,
35942,
85,
16117,
22925,
12119,
8565
],
[
6006,
3366,
1020,
4113,
15168,
4591,
10850,
630,
5181,
3103,
4967,
491,
4098,
5417,
9396,
12205,
219,
9198,
5626,
11594,
1420,
1454,
8797,
1406,
12579,
22039,
1989,
3830,
355,
5531,
15615,
260,
200,
514,
2343,
694,
8040,
834,
180,
3067,
4484,
1107,
5550,
2362,
2806,
2532,
18,
3062,
6134,
1073,
5909,
572,
11908,
3996,
5283,
2599,
161,
243,
6468,
918,
2137,
1479,
9759,
11223,
1689,
2771,
5981,
1210,
117,
37,
3136,
10683,
4515,
7362,
4389,
660,
4456,
13134,
3097,
14531
],
[
26373,
36847,
32717
],
[
12669,
7057,
6353,
13265,
9413,
12126,
7579,
5963,
13146,
10253,
5876,
7780,
5567,
9898,
2612,
1502,
688,
9670,
11519,
6269,
3347,
5264,
13779,
6137,
8590,
7823,
4760,
9,
2446,
8352,
4420,
8190,
717,
10766,
1640,
7005,
10362,
11867,
7864,
11405,
12754,
3,
23,
403,
503,
9658,
2932,
1531,
11818,
11134,
11173,
6990,
8258,
4020,
12212,
11170,
140,
7149,
2101,
9434,
7388,
6300,
4625,
3087,
13537,
5387,
10405,
7769,
9203,
5924,
1289,
3463,
622,
2861,
1725,
12434,
5224,
4822,
2926,
5809,
5414,
955,
286,
12759,
11002,
3157,
12356,
327,
8170,
3009,
2438,
13624,
5509,
7107,
2427,
11686,
9670,
583,
1956,
6373,
2541,
1537,
7291,
3317,
4155,
5396,
5041,
2790,
7274,
12680,
4042,
1869,
8656,
11072,
2344,
964,
1838,
8635,
7363,
11210,
6202,
8885,
13569,
8040,
3191,
6623,
10379,
11092,
8475,
9193,
7858,
2153,
4720,
2083,
514,
894,
680,
9061,
11693,
3366,
12238,
7149,
2708,
6022,
2838,
7588,
8090,
6758,
444,
2886,
6987,
7034,
9784,
10617,
7127,
1182,
11800,
1774,
9155,
13360,
4414,
542,
5113,
9790,
13970,
9351,
3,
2617,
381,
2320,
255,
3043,
1198,
3428,
3521,
608,
190,
759,
796,
4734,
2121,
4627,
2615,
4692,
9561,
3477,
6211,
3884,
6338,
5841,
3225,
4048,
1821,
11635,
1206,
9785,
9385,
3352,
2647,
518,
12377,
9602,
11535,
11442,
9612,
4446,
6884,
8257,
8708,
6633,
2126,
97,
4983,
5969,
7842,
5065,
8861,
11243,
3047,
8607,
8533,
1982,
10290,
2787
],
[
22615,
31714,
21217,
24653,
18601,
17546,
31276,
22647,
16165,
14276,
18815,
21632,
29729,
29955,
24025,
19176,
27329,
19913,
16705,
18291,
19899,
20398,
20874,
24904,
11314,
14100,
15587,
19046,
14438,
18044,
20049,
17160,
19219,
21465,
14903,
17623,
30379,
18827,
31812,
16225,
18840,
17773,
15177,
16936,
17023,
30624,
25203,
18567,
18044,
14755,
20782,
25962,
15603,
18692,
22096,
24929,
18226,
15671,
29526,
31614,
23257,
20893,
15218,
27901,
17360,
25767,
15354,
16260,
21273,
19087,
16448,
17327,
29635,
15881,
25977,
16933,
22321,
16823,
27082,
27380,
14039,
22686,
19746,
22335,
20105,
15076,
28257,
17770,
34454,
20918,
23632,
27167,
26539,
25606,
18073,
25066,
17063,
26400,
17565,
16980,
31012,
21117,
16731,
29703
]
]
},
{
"xaxis": {
"title": "Fresh"
}
}
],
"label": "Fresh",
"method": "update"
}
],
"direction": "down",
"showactive": true,
"x": 0,
"xanchor": "left",
"y": 1.16,
"yanchor": "top"
},
{
"buttons": [
{
"args": [
{
"y": [
[
823,
2916,
1278,
14351,
2498,
1621,
918,
1819,
3,
230,
8550,
2253,
3321,
818,
1824,
1404,
2406,
18,
22,
2235,
1242,
2346
],
[
6465,
2017,
1423,
2944,
903,
2870,
1215
],
[
2098,
1744,
1080,
5206,
714,
433,
46,
72,
4985,
1452,
1163,
224,
1340,
1282,
1295,
1009,
156,
5130,
244,
3029,
1838,
1831,
1438,
3,
1519,
4430,
2153,
3182,
303,
446,
2379,
323,
6250,
716,
1697,
156,
404,
1856,
666,
731,
1681,
710,
797,
791,
2388,
674,
6372,
2784,
5121,
1265,
3636,
2563,
698,
741,
172,
59,
2410,
211,
1543,
806,
142,
3508,
1625,
1102,
37,
1115,
445,
3137,
1111,
110,
1426,
5120,
2213,
553,
993,
776,
1393,
1894,
2080,
1867
],
[
16523,
47943,
5609
],
[
1338,
1776,
7844,
1788,
1451,
545,
2566,
750,
497,
412,
4478,
501,
569,
833,
985,
395,
436,
65,
1476,
2162,
301,
1130,
436,
1603,
225,
964,
1145,
27,
3095,
144,
181,
1780,
894,
167,
1653,
529,
2342,
120,
46,
360,
1117,
709,
217,
63,
132,
323,
1386,
1236,
1647,
610,
222,
1160,
635,
255,
860,
143,
3,
911,
310,
396,
537,
326,
1542,
36,
3271,
929,
318,
520,
526,
434,
1774,
1627,
8,
1682,
2157,
2233,
238,
3637,
693,
429,
750,
707,
1442,
2631,
395,
2165,
2794,
11,
247,
727,
3,
84,
409,
1142,
1468,
697,
347,
18,
1328,
285,
120,
806,
1775,
1215,
130,
239,
375,
1360,
659,
786,
689,
203,
980,
2137,
490,
7,
295,
225,
216,
2398,
1970,
610,
659,
291,
710,
1693,
3265,
373,
987,
548,
287,
411,
56,
1550,
1040,
1153,
379,
139,
1409,
1104,
2079,
128,
1522,
686,
1060,
254,
531,
1037,
259,
555,
656,
1117,
297,
1233,
1059,
1637,
51,
834,
1113,
573,
834,
522,
739,
1043,
778,
868,
550,
1942,
1371,
2158,
1328,
379,
303,
665,
995,
195,
127,
4100,
776,
405,
712,
314,
468,
3105,
447,
342,
296,
4829,
686,
70,
1114,
179,
361,
1068,
967,
406,
684,
1000,
1827,
654,
452,
290,
743,
247,
375,
1014,
378,
344,
5137,
1892,
4365,
62,
2435,
290,
1874,
1063,
1521,
1886,
317,
2501,
1498,
1449,
2125,
52
],
[
5185,
2931,
602,
2168,
3181,
2124,
4334,
5778,
57,
518,
2963,
405,
1083,
4626,
5864,
2802,
1333,
834,
1365,
14472,
648,
975,
772,
3178,
2698,
548,
1378,
2708,
1561,
1266,
933,
1136,
483,
2749,
328,
2616,
1450,
201,
1440,
1067,
184,
418,
610,
64,
1755,
2876,
6854,
2100,
1158,
749,
1553,
834,
2563,
1215,
2564,
1047,
578,
572,
1391,
615,
655,
3628,
204,
2503,
1721,
1384,
1027,
258,
1854,
898,
2005,
925,
117,
229,
1092,
1534,
2602,
3486,
2139,
1022,
2341,
548,
503,
558,
790,
3113,
270,
532,
2893,
961,
819,
1902,
340,
288,
715,
960,
1784,
1218,
668,
249,
1163,
395,
838,
2204
]
]
},
{
"yaxis": {
"title": "Delicassen"
}
}
],
"label": "Delicassen",
"method": "update"
},
{
"args": [
{
"y": [
[
1200,
10002,
532,
6312,
18028,
4787,
16538,
1718,
2995,
7368,
16745,
5243,
6422,
3012,
4802,
5970,
8692,
1042,
1388,
1364,
1034,
4510
],
[
7782,
3254,
36,
1026,
987,
4736,
131
],
[
1159,
4400,
134,
1158,
1920,
33,
188,
787,
1740,
1668,
1798,
744,
2616,
38,
2896,
869,
283,
3232,
206,
3252,
1593,
133,
2471,
673,
805,
42,
233,
317,
398,
2367,
4425,
1116,
651,
937,
52,
443,
2758,
275,
959,
3941,
3549,
955,
864,
913,
1374,
179,
1285,
230,
6746,
61,
10155,
2221,
1069,
902,
1809,
492,
617,
799,
1840,
1465,
1274,
662,
1128,
1234,
1456,
2693,
2005,
1741,
228,
137,
5641,
3635,
2644,
2854,
848,
133,
25,
3141,
575,
437
],
[
5154,
36534,
60869
],
[
214,
1762,
2405,
6404,
666,
480,
1669,
425,
1420,
397,
839,
669,
3383,
3151,
2088,
425,
833,
541,
584,
3860,
239,
1057,
596,
129,
96,
4154,
3724,
175,
5870,
779,
8872,
1285,
7530,
2096,
868,
430,
737,
1178,
9735,
3347,
8693,
440,
145,
774,
895,
5639,
2561,
247,
2276,
2715,
1517,
1647,
3896,
2395,
1991,
2194,
142,
6316,
346,
436,
720,
1170,
4575,
661,
155,
825,
8425,
926,
1286,
4052,
531,
779,
75,
930,
824,
1092,
2540,
993,
405,
1393,
2399,
333,
2515,
1752,
1152,
4477,
402,
74,
2181,
3470,
6269,
890,
547,
806,
1127,
3527,
520,
469,
1383,
878,
2946,
1859,
1291,
1329,
2306,
91,
7496,
5612,
784,
660,
2286,
950,
6845,
8321,
1439,
937,
1218,
2312,
1112,
561,
1183,
1777,
2077,
6340,
1730,
7683,
4686,
453,
5004,
327,
6818,
4324,
5500,
1120,
529,
744,
862,
16919,
5845,
977,
1093,
1619,
502,
2507,
3838,
417,
1455,
934,
264,
364,
416,
12569,
4447,
1483,
2679,
978,
2121,
514,
2714,
915,
3498,
414,
5127,
3570,
650,
8170,
15601,
9584,
388,
767,
349,
2234,
402,
1341,
1796,
830,
245,
6114,
340,
1206,
560,
191,
1103,
1619,
1173,
1457,
1089,
876,
1492,
597,
282,
130,
4006,
2583,
1945,
1677,
3019,
5502,
907,
659,
1398,
2921,
6838,
5390,
1601,
3576,
2069,
1646,
2349,
1389,
1535,
98,
17866,
5679,
1691,
364,
633,
15348,
2198,
47,
13486,
1541,
1038,
65
],
[
3915,
287,
3095,
294,
2205,
1066,
9408,
2915,
201,
485,
1148,
266,
6130,
1729,
9510,
2033,
2436,
1256,
10643,
5373,
8132,
4407,
2320,
3443,
35009,
1336,
910,
8853,
3220,
2555,
5343,
2417,
8195,
880,
576,
2279,
321,
118,
800,
853,
3001,
3378,
2665,
7332,
7888,
18711,
5065,
1801,
2532,
1765,
1759,
638,
4260,
4634,
11422,
2216,
3752,
559,
432,
3242,
982,
3975,
2516,
4479,
1293,
10303,
8366,
848,
909,
3045,
824,
1149,
3046,
3703,
2369,
7849,
2208,
11559,
1365,
2809,
6386,
3157,
2601,
2046,
8164,
1504,
3881,
9927,
2540,
1960,
8620,
13223,
220,
127,
4324,
9806,
1031,
830,
1059,
874,
15082,
269,
688,
13135
]
]
},
{
"yaxis": {
"title": "Frozen"
}
}
],
"label": "Frozen",
"method": "update"
},
{
"args": [
{
"y": [
[
1107,
212,
2587,
1579,
1480,
500,
778,
410,
20,
1532,
4948,
828,
730,
967,
210,
1041,
751,
436,
32,
523,
96,
93
],
[
24171,
26701,
24231,
40827,
20070,
19410,
38102
],
[
7425,
5977,
4508,
8604,
6506,
6956,
6899,
9529,
7353,
6792,
13583,
5611,
17740,
7572,
7677,
12034,
7818,
18906,
5038,
8035,
6766,
6830,
8969,
836,
6457,
12591,
11577,
6694,
8077,
13726,
7108,
7015,
8773,
9836,
4196,
6907,
6839,
4027,
5618,
9959,
14235,
9265,
12420,
5957,
5828,
13308,
4797,
8933,
18594,
5980,
830,
4882,
6374,
5952,
8752,
10069,
11783,
3909,
7558,
6846,
17120,
3891,
12408,
9606,
15469,
6600,
12218,
12638,
8682,
6747,
4666,
282,
3378,
7883,
6728,
6740,
6818,
5079,
241,
14841
],
[
4337,
239,
1272
],
[
2674,
3293,
3516,
507,
1795,
3140,
3321,
1716,
549,
964,
370,
2518,
375,
242,
820,
483,
4239,
4618,
5121,
609,
1538,
2024,
227,
3084,
4095,
4074,
1247,
3468,
788,
656,
1321,
1901,
529,
301,
1202,
610,
3537,
3837,
165,
69,
627,
223,
3874,
54,
56,
215,
4573,
2505,
169,
276,
310,
319,
266,
264,
25,
1976,
1062,
395,
70,
256,
47,
199,
2447,
721,
249,
637,
399,
73,
1082,
283,
255,
302,
7,
4004,
4424,
3,
3674,
4973,
1680,
79,
69,
2840,
153,
20,
120,
273,
1382,
334,
58,
949,
3459,
43,
187,
355,
4314,
592,
402,
954,
5,
288,
5316,
3381,
240,
3961,
86,
4167,
256,
788,
70,
761,
263,
4762,
694,
955,
1566,
409,
1216,
415,
72,
1682,
3143,
430,
44,
918,
234,
205,
1547,
392,
3593,
780,
49,
2894,
197,
147,
93,
759,
96,
621,
274,
167,
2328,
1226,
965,
212,
825,
2208,
3712,
4538,
290,
6236,
257,
299,
183,
857,
83,
821,
706,
275,
228,
1679,
387,
88,
492,
182,
146,
442,
15,
573,
7271,
5162,
4595,
217,
3843,
1184,
173,
90,
184,
536,
232,
159,
179,
1335,
514,
4515,
222,
252,
41,
397,
311,
476,
68,
813,
397,
192,
353,
200,
227,
311,
95,
122,
149,
841,
64,
74,
469,
153,
593,
2730,
2123,
1860,
235,
2970,
912,
1135,
3540,
3485,
1580,
108,
850,
84,
1377,
356,
168,
477
],
[
1777,
3881,
6707,
5058,
2767,
2259,
2381,
4482,
4003,
100,
2134,
918,
361,
862,
1145,
2575,
204,
5141,
116,
4173,
764,
3,
550,
454,
71,
1491,
139,
483,
585,
118,
411,
174,
349,
2386,
955,
960,
51,
516,
113,
170,
352,
811,
232,
118,
330,
763,
284,
244,
130,
56,
2568,
284,
325,
28,
343,
412,
586,
562,
363,
111,
429,
737,
333,
603,
3620,
314,
386,
445,
811,
710,
2662,
351,
371,
1470,
140,
210,
178,
332,
4111,
4621,
1333,
9,
468,
101,
716,
1916,
600,
246,
1711,
231,
385,
92,
10,
632,
914,
1092,
3415,
948,
1803,
3213,
439,
1328,
2371,
182
]
]
},
{
"yaxis": {
"title": "Detergents_Paper"
}
}
],
"label": "Detergents_Paper",
"method": "update"
},
{
"args": [
{
"y": [
[
2100,
555,
3916,
5025,
3504,
1642,
3473,
926,
7152,
6958,
29627,
2567,
4563,
4959,
3045,
3965,
4411,
640,
286,
3944,
3154,
1431
],
[
54259,
38369,
20959,
46197,
73498,
28326,
4980
],
[
11093,
5403,
8816,
20484,
10556,
15729,
7555,
11095,
22044,
14069,
21412,
10473,
29892,
9933,
11601,
12697,
9540,
27472,
12220,
7779,
10810,
6337,
10646,
16729,
11114,
8384,
10690,
5291,
7704,
15726,
12653,
8675,
25862,
7677,
7845,
8533,
7639,
11577,
3485,
13240,
14399,
11711,
12729,
6551,
10765,
16599,
7504,
6154,
23133,
9679,
23527,
9763,
8053,
11103,
13316,
3688,
7460,
12939,
12867,
20655,
3737,
14982,
25071,
14881,
6964,
6939,
14641,
10044,
6264,
1275,
8630,
21858,
11991,
12844,
10940,
8494,
5266,
9347,
4230,
15488
],
[
36423,
43950,
16784
],
[
9656,
9810,
8808,
1196,
8259,
3199,
4956,
3648,
1124,
1114,
6157,
2495,
871,
961,
4339,
1979,
5491,
7027,
6152,
1095,
4051,
3683,
1970,
5360,
3045,
6245,
1227,
1534,
7260,
2820,
5139,
6343,
3587,
1175,
3259,
829,
9232,
3327,
542,
596,
2762,
2920,
2616,
254,
112,
2182,
6459,
8397,
1648,
793,
2521,
3880,
2344,
3234,
201,
10769,
8847,
2428,
589,
1042,
1882,
1289,
8579,
8080,
4257,
4979,
1596,
1936,
3373,
584,
3328,
9250,
55,
6570,
3651,
540,
7603,
6721,
3195,
735,
717,
5479,
1208,
7330,
7075,
4888,
6036,
918,
6448,
521,
8002,
295,
1461,
1012,
7097,
2154,
2280,
685,
891,
780,
4737,
3748,
1012,
6602,
367,
7503,
1115,
2527,
659,
3243,
2204,
577,
2746,
5989,
10678,
4984,
6380,
820,
475,
3576,
7775,
2428,
346,
3795,
1993,
1860,
17972,
5008,
1931,
4885,
1110,
1115,
1032,
5007,
8323,
1703,
1610,
829,
2317,
2884,
7108,
2247,
2160,
3354,
3086,
1897,
3199,
4560,
879,
5302,
1020,
1492,
925,
1795,
1375,
3088,
2713,
3696,
1897,
944,
1610,
899,
1486,
1786,
1511,
1347,
333,
1188,
4025,
5763,
5758,
1172,
2602,
2380,
1099,
1106,
727,
18664,
5878,
607,
1601,
997,
873,
6128,
2217,
894,
337,
3801,
2256,
1450,
3294,
5164,
1364,
922,
3620,
848,
1530,
1181,
2761,
4180,
865,
1316,
1666,
1032,
577,
906,
1046,
3880,
3634,
2096,
3289,
3605,
4859,
1990,
6046,
5499,
3783,
2408,
5970,
1750,
5506,
3218,
1981,
1698
],
[
5410,
12319,
6208,
9465,
6327,
4519,
1917,
9776,
4230,
803,
3610,
1318,
4786,
4362,
4332,
3065,
1449,
6759,
2037,
1266,
5332,
1137,
1563,
3836,
3090,
2132,
1014,
2770,
2295,
1080,
1891,
1200,
1840,
7243,
2032,
4280,
13252,
3677,
1433,
1825,
1371,
1366,
2024,
6250,
5139,
7209,
11487,
1895,
1475,
899,
5921,
1780,
2703,
3838,
3575,
1801,
659,
5279,
7961,
489,
1372,
1222,
258,
3749,
6200,
3613,
2102,
594,
2013,
1304,
6243,
2374,
2335,
713,
3587,
2209,
3216,
928,
6817,
7184,
7393,
134,
2872,
1196,
1887,
6257,
944,
4591,
7435,
1916,
6730,
2801,
4753,
11006,
4613,
5010,
4847,
1377,
3686,
2884,
16687,
1162,
3922,
12051
]
]
},
{
"yaxis": {
"title": "Milk"
}
}
],
"label": "Milk",
"method": "update"
},
{
"args": [
{
"y": [
[
2609,
902,
5876,
8117,
8906,
2961,
7102,
1510,
8253,
6536,
18148,
3779,
2124,
7336,
1493,
4252,
12609,
3600,
471,
4955,
2648,
764
],
[
55571,
59598,
45828,
92780,
32114,
39694,
67298
],
[
18881,
12974,
12121,
25957,
12477,
16709,
14961,
23998,
21531,
21955,
28921,
11532,
26866,
10487,
15775,
28540,
14403,
32034,
11323,
12144,
16267,
10704,
14886,
28986,
17569,
34792,
19460,
14855,
14682,
26870,
19858,
13430,
19816,
19805,
11874,
10518,
11687,
11522,
20292,
23127,
24708,
23596,
16767,
11364,
15538,
36486,
15205,
13916,
33586,
15445,
13699,
22182,
19847,
12469,
20399,
13829,
24773,
8852,
21570,
13567,
19172,
11924,
17645,
26839,
26316,
15541,
20521,
22294,
21203,
22272,
13586,
15400,
9345,
18683,
10908,
18622,
13227,
14316,
16483,
30243
],
[
22019,
20170,
13626
],
[
7561,
9568,
7684,
4221,
5126,
6975,
9426,
6192,
4523,
3821,
2933,
9464,
2010,
2861,
3133,
2262,
11091,
10471,
10868,
1980,
6996,
5005,
1648,
8040,
7854,
6544,
3250,
7417,
3993,
1293,
2661,
9794,
6532,
2067,
3655,
3009,
11009,
4814,
4042,
1638,
2530,
6252,
8118,
610,
778,
1909,
7677,
6981,
1694,
2988,
3355,
5380,
2147,
1498,
245,
8814,
3823,
699,
314,
1235,
2174,
2591,
7030,
8282,
5034,
3343,
1096,
2177,
2707,
542,
2022,
2368,
137,
9618,
12822,
283,
8584,
9170,
3268,
803,
2155,
6536,
5241,
4533,
4945,
2500,
8887,
4710,
1139,
854,
9819,
1381,
2251,
2974,
10391,
6824,
2112,
2216,
5226,
950,
6089,
5838,
2062,
6861,
1390,
10646,
2856,
5265,
1499,
4157,
1563,
572,
2501,
5615,
3828,
3316,
2824,
3047,
585,
5119,
10817,
1777,
489,
2070,
1799,
4740,
4748,
5249,
1883,
2157,
1094,
6684,
975,
1563,
6869,
1841,
223,
683,
2543,
2431,
6235,
1242,
2642,
3261,
4329,
5234,
6986,
9965,
2060,
9785,
3007,
2405,
2405,
7647,
2201,
6114,
3558,
2280,
5167,
11593,
1431,
1664,
4583,
5109,
1330,
2611,
7021,
5332,
9670,
11238,
5923,
1763,
8335,
2028,
1997,
1533,
2012,
1660,
2109,
864,
2453,
4438,
1524,
8025,
1664,
534,
683,
1641,
1668,
1162,
1902,
10391,
3450,
1614,
2857,
1172,
1422,
1328,
2313,
3600,
3204,
1263,
1428,
582,
935,
1238,
1167,
6407,
6100,
4563,
3281,
12400,
6633,
3417,
8552,
11055,
2223,
2593,
4910,
3580,
5160,
1493,
2232,
2510
],
[
7198,
11757,
14982,
12091,
10099,
4602,
4469,
13792,
7595,
3045,
11107,
2886,
7326,
5428,
4757,
5956,
1947,
13462,
3202,
21042,
8713,
3,
1783,
5330,
2062,
3445,
3970,
2469,
1733,
2000,
2362,
3412,
1658,
10685,
2479,
7305,
5189,
1988,
1651,
1765,
3135,
2474,
3810,
1981,
5230,
4897,
9490,
1393,
2046,
1382,
9212,
3838,
3833,
593,
7041,
2475,
2914,
2406,
16966,
1495,
1677,
2576,
1138,
6964,
9694,
2013,
2828,
1296,
6550,
3643,
6360,
2842,
8280,
3315,
2464,
3389,
1447,
2743,
10790,
12311,
2548,
218,
2006,
2406,
1939,
7398,
2146,
1617,
8469,
1573,
3842,
2128,
5091,
4604,
3444,
5026,
9053,
4172,
4657,
12232,
5429,
4754,
7994,
16027
]
]
},
{
"yaxis": {
"title": "Grocery"
}
}
],
"label": "Grocery",
"method": "update"
},
{
"args": [
{
"y": [
[
43088,
56159,
40721,
43265,
56082,
36050,
76237,
42312,
37036,
45640,
112151,
47493,
56083,
53205,
36817,
49063,
68951,
40254,
42786,
39679,
38793,
39228
],
[
44466,
35942,
85,
16117,
22925,
12119,
8565
],
[
6006,
3366,
1020,
4113,
15168,
4591,
10850,
630,
5181,
3103,
4967,
491,
4098,
5417,
9396,
12205,
219,
9198,
5626,
11594,
1420,
1454,
8797,
1406,
12579,
22039,
1989,
3830,
355,
5531,
15615,
260,
200,
514,
2343,
694,
8040,
834,
180,
3067,
4484,
1107,
5550,
2362,
2806,
2532,
18,
3062,
6134,
1073,
5909,
572,
11908,
3996,
5283,
2599,
161,
243,
6468,
918,
2137,
1479,
9759,
11223,
1689,
2771,
5981,
1210,
117,
37,
3136,
10683,
4515,
7362,
4389,
660,
4456,
13134,
3097,
14531
],
[
26373,
36847,
32717
],
[
12669,
7057,
6353,
13265,
9413,
12126,
7579,
5963,
13146,
10253,
5876,
7780,
5567,
9898,
2612,
1502,
688,
9670,
11519,
6269,
3347,
5264,
13779,
6137,
8590,
7823,
4760,
9,
2446,
8352,
4420,
8190,
717,
10766,
1640,
7005,
10362,
11867,
7864,
11405,
12754,
3,
23,
403,
503,
9658,
2932,
1531,
11818,
11134,
11173,
6990,
8258,
4020,
12212,
11170,
140,
7149,
2101,
9434,
7388,
6300,
4625,
3087,
13537,
5387,
10405,
7769,
9203,
5924,
1289,
3463,
622,
2861,
1725,
12434,
5224,
4822,
2926,
5809,
5414,
955,
286,
12759,
11002,
3157,
12356,
327,
8170,
3009,
2438,
13624,
5509,
7107,
2427,
11686,
9670,
583,
1956,
6373,
2541,
1537,
7291,
3317,
4155,
5396,
5041,
2790,
7274,
12680,
4042,
1869,
8656,
11072,
2344,
964,
1838,
8635,
7363,
11210,
6202,
8885,
13569,
8040,
3191,
6623,
10379,
11092,
8475,
9193,
7858,
2153,
4720,
2083,
514,
894,
680,
9061,
11693,
3366,
12238,
7149,
2708,
6022,
2838,
7588,
8090,
6758,
444,
2886,
6987,
7034,
9784,
10617,
7127,
1182,
11800,
1774,
9155,
13360,
4414,
542,
5113,
9790,
13970,
9351,
3,
2617,
381,
2320,
255,
3043,
1198,
3428,
3521,
608,
190,
759,
796,
4734,
2121,
4627,
2615,
4692,
9561,
3477,
6211,
3884,
6338,
5841,
3225,
4048,
1821,
11635,
1206,
9785,
9385,
3352,
2647,
518,
12377,
9602,
11535,
11442,
9612,
4446,
6884,
8257,
8708,
6633,
2126,
97,
4983,
5969,
7842,
5065,
8861,
11243,
3047,
8607,
8533,
1982,
10290,
2787
],
[
22615,
31714,
21217,
24653,
18601,
17546,
31276,
22647,
16165,
14276,
18815,
21632,
29729,
29955,
24025,
19176,
27329,
19913,
16705,
18291,
19899,
20398,
20874,
24904,
11314,
14100,
15587,
19046,
14438,
18044,
20049,
17160,
19219,
21465,
14903,
17623,
30379,
18827,
31812,
16225,
18840,
17773,
15177,
16936,
17023,
30624,
25203,
18567,
18044,
14755,
20782,
25962,
15603,
18692,
22096,
24929,
18226,
15671,
29526,
31614,
23257,
20893,
15218,
27901,
17360,
25767,
15354,
16260,
21273,
19087,
16448,
17327,
29635,
15881,
25977,
16933,
22321,
16823,
27082,
27380,
14039,
22686,
19746,
22335,
20105,
15076,
28257,
17770,
34454,
20918,
23632,
27167,
26539,
25606,
18073,
25066,
17063,
26400,
17565,
16980,
31012,
21117,
16731,
29703
]
]
},
{
"yaxis": {
"title": "Fresh"
}
}
],
"label": "Fresh",
"method": "update"
}
],
"direction": "down",
"showactive": true,
"x": 0.32,
"xanchor": "left",
"y": 1.16,
"yanchor": "top"
}
],
"width": 900,
"xaxis": {
"gridcolor": "rgba(148, 163, 184, 0.25)",
"showgrid": true,
"title": {
"text": "Delicassen"
}
},
"yaxis": {
"gridcolor": "rgba(148, 163, 184, 0.25)",
"showgrid": true,
"title": {
"text": "Frozen"
}
}
}
}
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import plotly.graph_objects as go\n",
"\n",
"feature_options = [feature for feature in imp_df[\"feature\"].tolist() if feature in numerical_cols]\n",
"feature_options += [feature for feature in numerical_cols if feature not in feature_options]\n",
"\n",
"x_col = feature_options[0]\n",
"y_col = feature_options[1] if len(feature_options) > 1 else feature_options[0]\n",
"\n",
"plot_df = df[feature_options].copy()\n",
"plot_df[\"cluster\"] = labels.astype(str)\n",
"cluster_ids = sorted(plot_df[\"cluster\"].unique(), key=lambda value: int(value) if str(value).isdigit() else str(value))\n",
"cluster_frames = {cluster_id: plot_df[plot_df[\"cluster\"] == cluster_id] for cluster_id in cluster_ids}\n",
"\n",
"fig = go.Figure()\n",
"for cluster_id, cluster_df in cluster_frames.items():\n",
" fig.add_trace(go.Scatter(\n",
" x=cluster_df[x_col].tolist(),\n",
" y=cluster_df[y_col].tolist(),\n",
" mode=\"markers\",\n",
" name=f\"Cluster {cluster_id}\",\n",
" marker=dict(size=8, line=dict(width=0.5, color=\"white\")),\n",
" hovertemplate=(\n",
" \"X value: %{x}
\"\n",
" \"Y value: %{y}
\"\n",
" f\"Cluster: {cluster_id}\"\n",
" ),\n",
" ))\n",
"\n",
"x_buttons = [\n",
" dict(\n",
" label=feature,\n",
" method=\"update\",\n",
" args=[\n",
" {\"x\": [cluster_frames[cluster_id][feature].tolist() for cluster_id in cluster_ids]},\n",
" {\"xaxis\": {\"title\": feature}},\n",
" ],\n",
" )\n",
" for feature in feature_options\n",
"]\n",
"\n",
"y_buttons = [\n",
" dict(\n",
" label=feature,\n",
" method=\"update\",\n",
" args=[\n",
" {\"y\": [cluster_frames[cluster_id][feature].tolist() for cluster_id in cluster_ids]},\n",
" {\"yaxis\": {\"title\": feature}},\n",
" ],\n",
" )\n",
" for feature in feature_options\n",
"]\n",
"\n",
"fig.update_layout(\n",
" title=\"Cluster Scatter Plot — Select Features\",\n",
" xaxis_title=x_col,\n",
" yaxis_title=y_col,\n",
" plot_bgcolor=\"white\",\n",
" hovermode=\"closest\",\n",
" width=900,\n",
" height=650,\n",
" margin=dict(t=110),\n",
" updatemenus=[\n",
" dict(\n",
" buttons=x_buttons,\n",
" direction=\"down\",\n",
" showactive=True,\n",
" x=0.0,\n",
" xanchor=\"left\",\n",
" y=1.16,\n",
" yanchor=\"top\",\n",
" ),\n",
" dict(\n",
" buttons=y_buttons,\n",
" direction=\"down\",\n",
" showactive=True,\n",
" x=0.32,\n",
" xanchor=\"left\",\n",
" y=1.16,\n",
" yanchor=\"top\",\n",
" ),\n",
" ],\n",
" annotations=[\n",
" dict(text=\"X axis\", x=0.0, xref=\"paper\", y=1.22, yref=\"paper\", showarrow=False, xanchor=\"left\"),\n",
" dict(text=\"Y axis\", x=0.32, xref=\"paper\", y=1.22, yref=\"paper\", showarrow=False, xanchor=\"left\"),\n",
" ],\n",
")\n",
"fig.update_xaxes(showgrid=True, gridcolor=\"rgba(148, 163, 184, 0.25)\")\n",
"fig.update_yaxes(showgrid=True, gridcolor=\"rgba(148, 163, 184, 0.25)\")\n",
"fig.show()"
]
},
{
"cell_type": "markdown",
"id": "md07ad9bd0",
"metadata": {},
"source": [
"## 10. Silhouette Analysis"
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "cd0726f63d",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Mean silhouette coefficient : 0.3766\n",
"Points with score < 0 : 16 (3.6%)\n"
]
},
{
"data": {
"application/vnd.plotly.v1+json": {
"config": {
"plotlyServerURL": "https://plot.ly"
},
"data": [
{
"fill": "tozerox",
"fillcolor": "#0B4F91",
"hovertemplate": "Cluster 0
Silhouette: %{x:.3f}",
"line": {
"width": 0
},
"name": "Cluster 0",
"showlegend": true,
"type": "scatter",
"x": {
"bdata": "mwAPuY7sd78oVRt4SIJ+P9l5EElf+q8/N8XsPOMaxz/DQdfmCcXJP5WIcnyJ2cw/sRfah03BzT8DP7F+ja/PP2eXOZn2TNE/qMhqmIiY0T+0JRpj85jWP3VJjMhFOtc/AvcnsUP62D/HG2HlvabZP4m+jvUVXdo/MX+PGJzB2j/D0+fLXw3cP1mK2fwrGd8/0O64CoM+3z/8RTxVIdPfP40EknViDuA/9CnhL85C4D8=",
"dtype": "f8"
},
"y": {
"bdata": "CgsMDQ4PEBESExQVFhcYGRobHB0eHw==",
"dtype": "i1"
}
},
{
"fill": "tozerox",
"fillcolor": "#2E86DE",
"hovertemplate": "Cluster 1
Silhouette: %{x:.3f}",
"line": {
"width": 0
},
"name": "Cluster 1",
"showlegend": true,
"type": "scatter",
"x": {
"bdata": "20l5Jc1nzb8+ALOUfyTMv0UmqTNZg7w/au3Ze/mcwz+WlFOpLS3TPyiFqeT7G9g/I+/E3L5/2D8=",
"dtype": "f8"
},
"y": {
"bdata": "KissLS4vMA==",
"dtype": "i1"
}
},
{
"fill": "tozerox",
"fillcolor": "#4A7DB5",
"hovertemplate": "Cluster 2
Silhouette: %{x:.3f}",
"line": {
"width": 0
},
"name": "Cluster 2",
"showlegend": true,
"type": "scatter",
"x": {
"bdata": "wBiE0Agnub/F3GdXIYKyv0fFULQxBa+/9X2eMsASn7/9YHYqLV6bv8cqPqBfV5S/lwiB4jp5k79eoaxTvmKOv7J5RzMHin2/ZfGgC9spkz9tLDiy2TKVPxOXkS630ak/kBXzDmahsD8Qe8PrJn6yP/i1JySp4rg/xBlAe+4cvT8Be9/zRma9P+kQE3rEfb4/1Wylg/y3vj/L9lukGcK+P+BmjMG0h8A/4EUdyynAxD+j3HQ9URXFP377b4RHGsg/Btj8tTNOyD9/72lJdM7JP11cSD8q/8k/wEcxFGePyj/nxztTNkDLP9oVVYIKycw/aGvRFpAvzT+lOiFXa2TQP5UgHM/5uNA/wpATy9To0D/izacSsaLRP11RjPSt/tE/+uCvTI3v0z+ofY9SX/fTP+gD5E/LEtQ/FH6a9MA71D/DZE2qOZrUP9lunrEX6NQ/ujGlm/tX1T985bWfdOLVP0ZLZafI+9Y/fErf15wR1z99k9d9fe3XP0F7eAz5e9g/cxcmHgGM2D+tR3OtYV/ZP5wFdfLUYNk/o7LWPGJk2T903ASkHpXZPz9OgM3P6dk/+bAHg2MY2j+s+Ea70/faPyGPbMjucds/IEPubt6V2z9anFZZ9L3bP0Atpa0rz9s/U6MIAwIb3D9XgrDaeT3cPzOx1TU6sdw/zDuWi4HD3D/ubHiiJGPdP4srzxxQeN0/7ahsOLun3T/hrBuvT7TdP2cEIEwJE94//MdeERXu3j/vyX89fe7eP+8b3NT0od8/V/fGeKS43z+bpEtFG/ffP9rGYHim/N8/BpcxKDIW4D/se4ymbyPgP2zOa/voJ+A/G0iHcwQ94D+n16SYvlngPw==",
"dtype": "f8"
},
"y": {
"bdata": "OwA8AD0APgA/AEAAQQBCAEMARABFAEYARwBIAEkASgBLAEwATQBOAE8AUABRAFIAUwBUAFUAVgBXAFgAWQBaAFsAXABdAF4AXwBgAGEAYgBjAGQAZQBmAGcAaABpAGoAawBsAG0AbgBvAHAAcQByAHMAdAB1AHYAdwB4AHkAegB7AHwAfQB+AH8AgACBAIIAgwCEAIUAhgCHAIgAiQCKAA==",
"dtype": "i2"
}
},
{
"fill": "tozerox",
"fillcolor": "#1976D2",
"hovertemplate": "Cluster 3
Silhouette: %{x:.3f}",
"line": {
"width": 0
},
"name": "Cluster 3",
"showlegend": true,
"type": "scatter",
"x": {
"bdata": "hVMl6Dz/0r8d0yghnsOePyvYH/yT4tI/",
"dtype": "f8"
},
"y": {
"bdata": "lQCWAJcA",
"dtype": "i2"
}
},
{
"fill": "tozerox",
"fillcolor": "#5DA3E8",
"hovertemplate": "Cluster 4
Silhouette: %{x:.3f}",
"line": {
"width": 0
},
"name": "Cluster 4",
"showlegend": true,
"type": "scatter",
"x": {
"bdata": "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",
"dtype": "f8"
},
"y": {
"bdata": "ogCjAKQApQCmAKcAqACpAKoAqwCsAK0ArgCvALAAsQCyALMAtAC1ALYAtwC4ALkAugC7ALwAvQC+AL8AwADBAMIAwwDEAMUAxgDHAMgAyQDKAMsAzADNAM4AzwDQANEA0gDTANQA1QDWANcA2ADZANoA2wDcAN0A3gDfAOAA4QDiAOMA5ADlAOYA5wDoAOkA6gDrAOwA7QDuAO8A8ADxAPIA8wD0APUA9gD3APgA+QD6APsA/AD9AP4A/wAAAQEBAgEDAQQBBQEGAQcBCAEJAQoBCwEMAQ0BDgEPARABEQESARMBFAEVARYBFwEYARkBGgEbARwBHQEeAR8BIAEhASIBIwEkASUBJgEnASgBKQEqASsBLAEtAS4BLwEwATEBMgEzATQBNQE2ATcBOAE5AToBOwE8AT0BPgE/AUABQQFCAUMBRAFFAUYBRwFIAUkBSgFLAUwBTQFOAU8BUAFRAVIBUwFUAVUBVgFXAVgBWQFaAVsBXAFdAV4BXwFgAWEBYgFjAWQBZQFmAWcBaAFpAWoBawFsAW0BbgFvAXABcQFyAXMBdAF1AXYBdwF4AXkBegF7AXwBfQF+AX8BgAGBAQ==",
"dtype": "i2"
}
},
{
"fill": "tozerox",
"fillcolor": "#616161",
"hovertemplate": "Cluster 5
Silhouette: %{x:.3f}",
"line": {
"width": 0
},
"name": "Cluster 5",
"showlegend": true,
"type": "scatter",
"x": {
"bdata": "qZXmHsvGq79hGyYkr8env79i/WQDenW/dgWLEHG+Sz+hJhzOo3iAP677Jnle/5M/H66vxYlfoj8poh+3gtixPyAwhmwXSrI/BDzGZbR8tz/znD3T0uO7P8cwHiSIpL4/48c4fkpswD/rl3r/Y1fBP0VOdZsxW8M/EjXFHNKRxD8Mm0mTFrHEP/mNCb5uc8Y/gPuDWuCWxj+VQUsTACjHP4ZRyV3fWcg/FJNfFssLyj/eH232YpLKPwuhVJfmAsw/CsDb6sBgzT8OOpcFuDXOP7l6PRzvQM8/g2NNZyBbzz9fj1s13CTQPwDZ2N7pvdA/SC5EGkpf0T8DIbURq7TRP3u+Dyay5dE/THfUFc1M0j8yXGm9JJbSP7irsBHk79I/2Vz/U1rx0j8f49B0cvfSP9O9ImxJE9M/3uyht+mK0z8emHCRh+7TP45oqTm/QNQ//xOiQvNA1D+yPYawsGXUP3bII+kgwtQ/jaDTK73Q1D9mLL+AEePUP5P3dybxgtU/rXfLCr2p1T++1C3I0P3VPzNKZQXqSdY/5u2/NRxW1j+AWAGlWG/WP8WP1+mko9Y/WKNxURYY1z9WBypZOyjXP5ghMBKBbtc/QNajo5N21z9Y9D1EqpXXPwWVW1p6odc/9MjID9e62D9+5bbNC+jYP7xGI3ElhNk/fQef/ZWU2T/g/dCItaHZP5OaUp/ME9o/H9/vjaxC2j/jUb1F7EzaP6epeqI5WNo/6/GhpF/i2j/wdekMWAXbP2KROTUtGts/fiMA6odI2z/YrgPos7HbP7M+5SQr7ds/NM5X31s83D96CmMIN5jcP0bGQERTpNw/ac59ZPWl3D8xXOdKLsTcP/v+5zgL4tw/3yd5N5sR3T8KNb3buCrdP5/oEblnUN0/cM060Opx3T/x2QYcy3fdPxPxzwqLg90/pUs8x7TE3T8homwy59DdPyK1yhUvM94/y+dLwNGi3j/rEsAeRNbePzx9ElhS1t4/yfUAE1Il3z8WZwv3wUffP1/6fjO8EuA/XJoccM0z4D8B693LnkXgP3/5B5OOWOA/PFFUfMRi4D9fyHNJ253gPxZmiYpLyOA/jH9ZuiTZ4D/vmCnpySbhPw==",
"dtype": "f8"
},
"y": {
"bdata": "jAGNAY4BjwGQAZEBkgGTAZQBlQGWAZcBmAGZAZoBmwGcAZ0BngGfAaABoQGiAaMBpAGlAaYBpwGoAakBqgGrAawBrQGuAa8BsAGxAbIBswG0AbUBtgG3AbgBuQG6AbsBvAG9Ab4BvwHAAcEBwgHDAcQBxQHGAccByAHJAcoBywHMAc0BzgHPAdAB0QHSAdMB1AHVAdYB1wHYAdkB2gHbAdwB3QHeAd8B4AHhAeIB4wHkAeUB5gHnAegB6QHqAesB7AHtAe4B7wHwAfEB8gHzAQ==",
"dtype": "i2"
}
}
],
"layout": {
"annotations": [
{
"showarrow": false,
"text": "Average: 0.377",
"x": 0.37663286757387654,
"xanchor": "center",
"xref": "x",
"y": 1,
"yanchor": "bottom",
"yref": "y domain"
}
],
"hovermode": "closest",
"plot_bgcolor": "white",
"shapes": [
{
"line": {
"color": "#C62828",
"dash": "dash"
},
"type": "line",
"x0": 0.37663286757387654,
"x1": 0.37663286757387654,
"xref": "x",
"y0": 0,
"y1": 1,
"yref": "y domain"
}
],
"showlegend": true,
"template": {
"data": {
"bar": [
{
"error_x": {
"color": "#2a3f5f"
},
"error_y": {
"color": "#2a3f5f"
},
"marker": {
"line": {
"color": "#E5ECF6",
"width": 0.5
},
"pattern": {
"fillmode": "overlay",
"size": 10,
"solidity": 0.2
}
},
"type": "bar"
}
],
"barpolar": [
{
"marker": {
"line": {
"color": "#E5ECF6",
"width": 0.5
},
"pattern": {
"fillmode": "overlay",
"size": 10,
"solidity": 0.2
}
},
"type": "barpolar"
}
],
"carpet": [
{
"aaxis": {
"endlinecolor": "#2a3f5f",
"gridcolor": "white",
"linecolor": "white",
"minorgridcolor": "white",
"startlinecolor": "#2a3f5f"
},
"baxis": {
"endlinecolor": "#2a3f5f",
"gridcolor": "white",
"linecolor": "white",
"minorgridcolor": "white",
"startlinecolor": "#2a3f5f"
},
"type": "carpet"
}
],
"choropleth": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"type": "choropleth"
}
],
"contour": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"type": "contour"
}
],
"contourcarpet": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"type": "contourcarpet"
}
],
"heatmap": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"type": "heatmap"
}
],
"histogram": [
{
"marker": {
"pattern": {
"fillmode": "overlay",
"size": 10,
"solidity": 0.2
}
},
"type": "histogram"
}
],
"histogram2d": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"type": "histogram2d"
}
],
"histogram2dcontour": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"type": "histogram2dcontour"
}
],
"mesh3d": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"type": "mesh3d"
}
],
"parcoords": [
{
"line": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "parcoords"
}
],
"pie": [
{
"automargin": true,
"type": "pie"
}
],
"scatter": [
{
"fillpattern": {
"fillmode": "overlay",
"size": 10,
"solidity": 0.2
},
"type": "scatter"
}
],
"scatter3d": [
{
"line": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scatter3d"
}
],
"scattercarpet": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scattercarpet"
}
],
"scattergeo": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scattergeo"
}
],
"scattergl": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scattergl"
}
],
"scattermap": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scattermap"
}
],
"scattermapbox": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scattermapbox"
}
],
"scatterpolar": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scatterpolar"
}
],
"scatterpolargl": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scatterpolargl"
}
],
"scatterternary": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scatterternary"
}
],
"surface": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"type": "surface"
}
],
"table": [
{
"cells": {
"fill": {
"color": "#EBF0F8"
},
"line": {
"color": "white"
}
},
"header": {
"fill": {
"color": "#C8D4E3"
},
"line": {
"color": "white"
}
},
"type": "table"
}
]
},
"layout": {
"annotationdefaults": {
"arrowcolor": "#2a3f5f",
"arrowhead": 0,
"arrowwidth": 1
},
"autotypenumbers": "strict",
"coloraxis": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"colorscale": {
"diverging": [
[
0,
"#8e0152"
],
[
0.1,
"#c51b7d"
],
[
0.2,
"#de77ae"
],
[
0.3,
"#f1b6da"
],
[
0.4,
"#fde0ef"
],
[
0.5,
"#f7f7f7"
],
[
0.6,
"#e6f5d0"
],
[
0.7,
"#b8e186"
],
[
0.8,
"#7fbc41"
],
[
0.9,
"#4d9221"
],
[
1,
"#276419"
]
],
"sequential": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"sequentialminus": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
]
},
"colorway": [
"#636efa",
"#EF553B",
"#00cc96",
"#ab63fa",
"#FFA15A",
"#19d3f3",
"#FF6692",
"#B6E880",
"#FF97FF",
"#FECB52"
],
"font": {
"color": "#2a3f5f"
},
"geo": {
"bgcolor": "white",
"lakecolor": "white",
"landcolor": "#E5ECF6",
"showlakes": true,
"showland": true,
"subunitcolor": "white"
},
"hoverlabel": {
"align": "left"
},
"hovermode": "closest",
"mapbox": {
"style": "light"
},
"paper_bgcolor": "white",
"plot_bgcolor": "#E5ECF6",
"polar": {
"angularaxis": {
"gridcolor": "white",
"linecolor": "white",
"ticks": ""
},
"bgcolor": "#E5ECF6",
"radialaxis": {
"gridcolor": "white",
"linecolor": "white",
"ticks": ""
}
},
"scene": {
"xaxis": {
"backgroundcolor": "#E5ECF6",
"gridcolor": "white",
"gridwidth": 2,
"linecolor": "white",
"showbackground": true,
"ticks": "",
"zerolinecolor": "white"
},
"yaxis": {
"backgroundcolor": "#E5ECF6",
"gridcolor": "white",
"gridwidth": 2,
"linecolor": "white",
"showbackground": true,
"ticks": "",
"zerolinecolor": "white"
},
"zaxis": {
"backgroundcolor": "#E5ECF6",
"gridcolor": "white",
"gridwidth": 2,
"linecolor": "white",
"showbackground": true,
"ticks": "",
"zerolinecolor": "white"
}
},
"shapedefaults": {
"line": {
"color": "#2a3f5f"
}
},
"ternary": {
"aaxis": {
"gridcolor": "white",
"linecolor": "white",
"ticks": ""
},
"baxis": {
"gridcolor": "white",
"linecolor": "white",
"ticks": ""
},
"bgcolor": "#E5ECF6",
"caxis": {
"gridcolor": "white",
"linecolor": "white",
"ticks": ""
}
},
"title": {
"x": 0.05
},
"xaxis": {
"automargin": true,
"gridcolor": "white",
"linecolor": "white",
"ticks": "",
"title": {
"standoff": 15
},
"zerolinecolor": "white",
"zerolinewidth": 2
},
"yaxis": {
"automargin": true,
"gridcolor": "white",
"linecolor": "white",
"ticks": "",
"title": {
"standoff": 15
},
"zerolinecolor": "white",
"zerolinewidth": 2
}
}
},
"title": {
"text": "Silhouette Analysis"
},
"xaxis": {
"title": {
"text": "Silhouette Score"
}
},
"yaxis": {
"title": {
"text": "Sample Index"
}
}
}
}
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"sil_samples = silhouette_samples(df[numerical_cols], labels)\n",
"\n",
"print(f\"Mean silhouette coefficient : {report.metrics.silhouette:.4f}\")\n",
"print(f\"Points with score < 0 : {(sil_samples < 0).sum():,} ({(sil_samples < 0).mean():.1%})\")\n",
"\n",
"fig = plot_silhouette(labels, sil_samples, report.metrics.silhouette)\n",
"fig.show()"
]
},
{
"cell_type": "markdown",
"id": "md91f03be5",
"metadata": {},
"source": [
"## 11. FAMD Decomposition\n",
"\n",
"FAMD (Factor Analysis of Mixed Data) correctly handles our mix of numerical spend columns and categorical Channel/Region labels — preserving the contribution of all 8 features in a 2D projection."
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "cd2ca5e893",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Running FAMD decomposition — synthesises all 8 features into 2 components.\n",
"Method selected : FAMD\n",
"Explained variance — Component 1: 63.4% | Component 2: 36.6%\n",
"Total variance captured by 2D projection: 100.0%\n"
]
},
{
"data": {
"application/vnd.plotly.v1+json": {
"config": {
"plotlyServerURL": "https://plot.ly"
},
"data": [
{
"hovertemplate": "Cluster=4
Dim1 (63.4%)=%{x}
Dim2 (36.6%)=%{y}",
"legendgroup": "4",
"marker": {
"color": "#636efa",
"line": {
"color": "white",
"width": 0.5
},
"size": 8,
"symbol": "circle"
},
"mode": "markers",
"name": "4",
"orientation": "v",
"showlegend": true,
"type": "scatter",
"x": {
"bdata": "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",
"dtype": "f8"
},
"xaxis": "x",
"y": {
"bdata": "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",
"dtype": "f8"
},
"yaxis": "y"
},
{
"hovertemplate": "Cluster=5
Dim1 (63.4%)=%{x}
Dim2 (36.6%)=%{y}",
"legendgroup": "5",
"marker": {
"color": "#EF553B",
"line": {
"color": "white",
"width": 0.5
},
"size": 8,
"symbol": "circle"
},
"mode": "markers",
"name": "5",
"orientation": "v",
"showlegend": true,
"type": "scatter",
"x": {
"bdata": "uayrtsQF5D86EZBVeOH2P8W3dKAEZvY//Ns+OETY9T9B62vTFX/rP4pp2N3BwdQ/Umid71SG5r/o3LvHTN35Pwzp2X+UveE/VRiGyP/W878SqA38RRvQvzZ3FV2cV/K/nGi0AZ3m5788fMlyTADjvxiw3R8wFeK/f66omOBs4b+ZdmussdjzvycdJBlzRfM/niNIxqis8r/A6pwMRHfwP9CDM//H49M/5CbBRXeS9r9W7snzApHzv45foJ7uY+i/z7QpepGi879BUjXFJm3vv2R+UK1rAPK/LYkWwFiX8L8z2sZp2u/xv/6pCq98GPS/X7kwoMoQ878Il8SjI63yv6H3K1DUh/S/IXcaF4Nb7D9SsjhzX8rxv5YvGkbDd+K/vVQbyA5m07/r8gKybIXxvwwI8XNkLvS/mY3j1n5p87/ztynxy2/zv/nlDGirA/O/iP74tQvR8b/mprE4zljwvwL7T//MUem/bW7O25XM578vfplKDRmwP0YsswwSIfS/ergr4SUa9b8Bn3EJT5/2v8Poio97g+I/GqqOaYBH878TZoVC2qjwv3OCq6O/VvS/xl8unzR66786S3CXFi/0v7szy7x7BPW//5Agf8pi8L+w1C+ArDOgvwJYumh9q/e/Gb/ola+B9b9W3dSSL7/xv1EEEdH7m/e/WNmKKV6/5r/vZrVtQwvrP+3QGR7qB/K/w+gKFk+F8r8nx/FK7V71v2Mcv4XMG+i/zNYB0rWc8L/B0RzhcrfkPybApM0ymvC/N+tmIIES6r8ji0b7OMLwv2QRlD1cUfC/59A1IZ+X8L+rNE9c8wHwv3NfH8SmH8G/Zy/ODf048T+DSf+ZzIfxPyayinEHbeS/HeoVqRnA97/M8CYNtmfyv0uLq9ZbZPS/RuTYz5hS87/XTROshLfjP0RkpGYmpvS/q+mhjy7/8b/FVvbf+IvPv6ACOd/nvvO/G4U9Y2mw6r+00R02Xf/yv790vcabRu2/WGVWOGVG3r8gv2GAM+Tsv3LsreOqp+m/qsyEL2SS5j+COnjmeIXwvwmIlBHUysE/h28AMca/5D9vJs6ZLhXBv7Feau3QFfC/t6ZXzBLg379PGEFOvm7LPw==",
"dtype": "f8"
},
"xaxis": "x",
"y": {
"bdata": "4LWqn4h37z/GjMTDhPHjPyS/C+S/SMO/3jJf6JvjtD8Qk9Qif4fNPx2gU3fEpMe/QPUA/t5YAUC5uk4DLGbwPyUNceFOXem/4aJTYRVy07/9gK2eCI7cP2Gk5K4QAq6/4tNUaEeG8z9YzarTbX71PxgLR4U6MwJA5dRtZ8d/4D+uAN0n6FTkP6oYiAwL69S/P1JUR/mW8z9KBihyPfUHQP+ykt62guE/ePw7p5274D+BfT3/rZnPP2s5Sf4TE/E/nPlxUMAAEUCMNomllJXJvzlhxa/AKqC/kGPAkErm9T8/d/EkU+LQP53YEhasEdA/jmoTN87z4z8V+VGcDlbGP0iajSJTQes/4JgcTI/TwT8fTRXJhYvSv1lvJiYyrOA/p0xk1xZ76z9QpaiROHPDvy7KMBOpheQ/caXH9ABgqL81ImxZkyLBP1VGgDRksMU/IzPU9gdjpz+W5yGNM4vmP4P7wKbt6PA/tOENWrzMCEAb1CS5ptUAQF0GOwAAftE/KIn+eXeNwz93lDlMQjTFv3gnb6vtR8G/rwTk6jngxz+mTgNj69vhP99bbi+NgeA/ybAJu/1t+z+rqmPSTwLYPxjvO3V+48Q/hez9Yh9ryb/1tDIBr1viP/YwjA1cKeU/0n5CxGYpsj+OMqvtgHbsP6UnoNvfhce/PDudvQDf8j9qnqcW9LrNvzpjHmNCiPk/VOhANWRd6j/oQrsfyOjOv7IpnAjL8L4/uvaI+b5duD/qDaQuvgnbvxw7+HYrtsS/9dvM88NA2j+h6YPo3yS+v0n6mU4APNo/nzMsdMQC6D9M29WO7o3gP4C2jCcvcfE/iiDdFdXHsz+W1Gb9xRvNP4L3msCI8ew/8hXx1vqv1j/n7mmOcYnMP/VXxYxw0M0/MXPdRJ/j7T9Q+SOraWuGPwpvMKua7eM/y87clRV88T/wb6vJ5r71P2qfcDKTktA/b3NS8YyC9D/NjtbfFLUAQJ0ye10k3s4/p1Qu05n11T8xTrYIgTvcP1cYcfJ8Gfc/PWRMrkL90r+0U2LzPujWP8UzFQfaQ96/p9dVSCw45b/I1T/G7K8FQECFmfOm7ri/cFsvBHGSt79A8XIiH+IDQA==",
"dtype": "f8"
},
"yaxis": "y"
},
{
"hovertemplate": "Cluster=2
Dim1 (63.4%)=%{x}
Dim2 (36.6%)=%{y}",
"legendgroup": "2",
"marker": {
"color": "#00cc96",
"line": {
"color": "white",
"width": 0.5
},
"size": 8,
"symbol": "circle"
},
"mode": "markers",
"name": "2",
"orientation": "v",
"showlegend": true,
"type": "scatter",
"x": {
"bdata": "3G/BFNskAUDL+Fw/MAD0P4j9SeJXBfQ/R0Jdg3GuC0CbHS21Rar4P8KDp1fSbgFAsKYpdfQ0+D/6X3AF0HgEQFWdzhykOwlAInYCIBE6A0BQIfWLZ/MPQA4BEoYMS/Y/71Zc6fWLE0DrmpdYByP5P10QC3YTa/8/MvRAVfHKCUBEREx85c37P7WGoVCGbhVAYe/S/nXK9j9989Rmg1n6P9uGPhCxV/4/xR6C7XH39D/Sf5WKFA0AQPc2gQfe7QFA37AONnmy/j/sBJY8I10MQHvrl0BW/QRAduarzgOR+D84V9mibL/6P8LoK2vX2wtA4DAidP/rAUDnkMDRYbL4PwjdJOmcZAxA09Efwf9iAUBRTOANRMryPzl4n52Fzts/E27pIDlo9T/jUhfYPS/2P33yUt0Ccvc/I0gMew78BEBbbzvo4H4KQNGYGS6f9wNADDts4gsnBEBF2Neyl8vxP9ddDFKm2eg/HR8ryIbbD0BnlrPq+3H5P62AFM/31Po/FIcGqAcgFECw82Qcr035PzTlaiLUku4/+UFvxw6Q/j8bCUyyGlL7PzMbSbeZ4/k/0DNFGWfMA0D/A8ll2TL6PwQUn5upngZArRKxg+uM9D8GtJKv6qkDQCaM4/L2LwNAWjkR573ABUAWASvaFnD8P6mZU7jacQxAOGi7qWSgCECrMQTtMI8IQCjB0bnpl/g/BdkMsHMdB0AWFFiYSUUHQJRuJbV7gABADwYMe5iE+D9Keou0Aif1P0TCwIQ+YPE/9DHVnWl78z8LZ+WiZ4gBQMQhWcqowPg/IHOOsAE5/T9fwRBov9LbP6T9IZ825uE//Io7jtziwL+lCDl5JtkOQA==",
"dtype": "f8"
},
"xaxis": "x",
"y": {
"bdata": "CWk9Z5FZ47/dWLoYISTgv61GyR72wvG/QGJUKO6CwT8K53MImd3Yv+VOKrpYDe+/TDvaFoTv77+oqlKUI/b0v+K/i3FDdNI/o2Sz/bnz5b8r0zx/u9Hjv6D0Al0BNfO/wUuohRay2L8NqkRXYV/uv67Gz9Udb9m/uHcemD6M5b/NEWKiitb1v7kqDg+fa+A/P16zmlSn77/5YpEomoCpv3utACM33ei/H489ROM98b+iCYnOXirgv2jCijdPyu2/Dzg8lROx3b+ivzKWDSfBP2ttNOlule+/Oh4CZ7Jr57+8Ot/MXAT2v2dfes7Tauq/NqtLiDxp0j9dSfyT6bzzv9ymZKFgDdE/Q22PdT5n9L/JZoVOXf7uv+G5YrQJfey/8BHnTYA3578FTGnJfpzrv6CZZ+E37PS/EZI4SCOf579ryiCLef3jv0MkPfdOX/O/ruknwo8e8b9HwIjLzjjzv36nY6RhItG/Z7iIkCep87//Pmxi6/PBv6Y0r56L7e6/iRJo4u2W4z+w7rGERu7yv4d8kZ37Zvo/F0m2IZNz5b/t6ho3ey3pv+80R2/uw/G/AavVgbIg8b/Z/EdZCJL6vyrkwH+X6vO/zS/RAnZQ9L9odCgod77nvyOXfP9EFe2/N5K9D3X/+7+uzfn07MThv1EpetaYEN2/SphOS/2P5r/qtynWzV/3v56vKO4wjuq/I4PpopjW6r98ag1TUkfmv3Qhi9AVCPW/E/H7uPDH+b/c2kLvaSzTv0P/qsJcJ/Y/QFxeGdf31L+WwsOa0ibjv6pt7gnnu+y/OO1aIK8N9L+0sRtZtqjkvx1t4RKXt9U/sToE1pOl17/vklcgz5Pdvw==",
"dtype": "f8"
},
"yaxis": "y"
},
{
"hovertemplate": "Cluster=3
Dim1 (63.4%)=%{x}
Dim2 (36.6%)=%{y}",
"legendgroup": "3",
"marker": {
"color": "#ab63fa",
"line": {
"color": "white",
"width": 0.5
},
"size": 8,
"symbol": "circle"
},
"mode": "markers",
"name": "3",
"orientation": "v",
"showlegend": true,
"type": "scatter",
"x": {
"bdata": "zC3MKZ2FEUCj7bTOTAoUQDAsxVhynd4/",
"dtype": "f8"
},
"xaxis": "x",
"y": {
"bdata": "9SWHf0rwEEATtuez/F8uQInwa6sZ+CFA",
"dtype": "f8"
},
"yaxis": "y"
},
{
"hovertemplate": "Cluster=0
Dim1 (63.4%)=%{x}
Dim2 (36.6%)=%{y}",
"legendgroup": "0",
"marker": {
"color": "#FFA15A",
"line": {
"color": "white",
"width": 0.5
},
"size": 8,
"symbol": "circle"
},
"mode": "markers",
"name": "0",
"orientation": "v",
"showlegend": true,
"type": "scatter",
"x": {
"bdata": "DaxyYgne8b+4yE2XoOf1v1EpfJUFLtM/f0hGKBRoyD/wYcCaEiXlv8uJ0BRHdfK/flLtEUru7r8KZ7QWvmP0v5srHoCtdOS/VmDbHzmg47/V5dSU/E8BQOJMPw/XZvG/zO9v6S5s8L/jCILZnJfpv030zzYXsfK/vovBv2pm7b+KFq056L/cv6jc80wnS/S/wwIrqDtP+L+PUHxsJUSzP08+Wun9+vG/i2bb+JPH9L8=",
"dtype": "f8"
},
"xaxis": "x",
"y": {
"bdata": "bGE2hdJk8D9TAYdB+gYIQHpCN49YNeA/zQ6TwQkjEUCttDzwHocPQMsbj0b/PfU/iCXkQ9cxEUDleH/sF6/zP+YaLnszGvA/TOepfwA4/j9xbtt2BWwfQLnCkeVNZf4//9HkycE9BUA7iIi+K2b6PxcB23EFKPc/AyBXCoAVAEALCMu87tMKQN9/4fkyzOY/Qhrk6a2N6z8/Ky5e1ZzpP5KwOXtT3O4/7DHqxO8R+T8=",
"dtype": "f8"
},
"yaxis": "y"
},
{
"hovertemplate": "Cluster=1
Dim1 (63.4%)=%{x}
Dim2 (36.6%)=%{y}",
"legendgroup": "1",
"marker": {
"color": "#19d3f3",
"line": {
"color": "white",
"width": 0.5
},
"size": 8,
"symbol": "circle"
},
"mode": "markers",
"name": "1",
"orientation": "v",
"showlegend": true,
"type": "scatter",
"x": {
"bdata": "wKHlL1/tIUDrE7EhbXggQNluP7ELghhAloQNnoCMKECo/NF+Y14gQNy0Y+ghrBZADdE8UbOGH0A=",
"dtype": "f8"
},
"xaxis": "x",
"y": {
"bdata": "kZtc8/HbCkBEDcxqVp/xP0nSZoUHdfS/VIIRrd6ioj9fv/FOgEL0P0PAA0tOjNM/pG5W8RhW/78=",
"dtype": "f8"
},
"yaxis": "y"
}
],
"layout": {
"hovermode": "closest",
"legend": {
"title": {
"text": "Cluster"
},
"tracegroupgap": 0
},
"plot_bgcolor": "white",
"template": {
"data": {
"bar": [
{
"error_x": {
"color": "#2a3f5f"
},
"error_y": {
"color": "#2a3f5f"
},
"marker": {
"line": {
"color": "#E5ECF6",
"width": 0.5
},
"pattern": {
"fillmode": "overlay",
"size": 10,
"solidity": 0.2
}
},
"type": "bar"
}
],
"barpolar": [
{
"marker": {
"line": {
"color": "#E5ECF6",
"width": 0.5
},
"pattern": {
"fillmode": "overlay",
"size": 10,
"solidity": 0.2
}
},
"type": "barpolar"
}
],
"carpet": [
{
"aaxis": {
"endlinecolor": "#2a3f5f",
"gridcolor": "white",
"linecolor": "white",
"minorgridcolor": "white",
"startlinecolor": "#2a3f5f"
},
"baxis": {
"endlinecolor": "#2a3f5f",
"gridcolor": "white",
"linecolor": "white",
"minorgridcolor": "white",
"startlinecolor": "#2a3f5f"
},
"type": "carpet"
}
],
"choropleth": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"type": "choropleth"
}
],
"contour": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"type": "contour"
}
],
"contourcarpet": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"type": "contourcarpet"
}
],
"heatmap": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"type": "heatmap"
}
],
"histogram": [
{
"marker": {
"pattern": {
"fillmode": "overlay",
"size": 10,
"solidity": 0.2
}
},
"type": "histogram"
}
],
"histogram2d": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"type": "histogram2d"
}
],
"histogram2dcontour": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"type": "histogram2dcontour"
}
],
"mesh3d": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"type": "mesh3d"
}
],
"parcoords": [
{
"line": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "parcoords"
}
],
"pie": [
{
"automargin": true,
"type": "pie"
}
],
"scatter": [
{
"fillpattern": {
"fillmode": "overlay",
"size": 10,
"solidity": 0.2
},
"type": "scatter"
}
],
"scatter3d": [
{
"line": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scatter3d"
}
],
"scattercarpet": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scattercarpet"
}
],
"scattergeo": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scattergeo"
}
],
"scattergl": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scattergl"
}
],
"scattermap": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scattermap"
}
],
"scattermapbox": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scattermapbox"
}
],
"scatterpolar": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scatterpolar"
}
],
"scatterpolargl": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scatterpolargl"
}
],
"scatterternary": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scatterternary"
}
],
"surface": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"type": "surface"
}
],
"table": [
{
"cells": {
"fill": {
"color": "#EBF0F8"
},
"line": {
"color": "white"
}
},
"header": {
"fill": {
"color": "#C8D4E3"
},
"line": {
"color": "white"
}
},
"type": "table"
}
]
},
"layout": {
"annotationdefaults": {
"arrowcolor": "#2a3f5f",
"arrowhead": 0,
"arrowwidth": 1
},
"autotypenumbers": "strict",
"coloraxis": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"colorscale": {
"diverging": [
[
0,
"#8e0152"
],
[
0.1,
"#c51b7d"
],
[
0.2,
"#de77ae"
],
[
0.3,
"#f1b6da"
],
[
0.4,
"#fde0ef"
],
[
0.5,
"#f7f7f7"
],
[
0.6,
"#e6f5d0"
],
[
0.7,
"#b8e186"
],
[
0.8,
"#7fbc41"
],
[
0.9,
"#4d9221"
],
[
1,
"#276419"
]
],
"sequential": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"sequentialminus": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
]
},
"colorway": [
"#636efa",
"#EF553B",
"#00cc96",
"#ab63fa",
"#FFA15A",
"#19d3f3",
"#FF6692",
"#B6E880",
"#FF97FF",
"#FECB52"
],
"font": {
"color": "#2a3f5f"
},
"geo": {
"bgcolor": "white",
"lakecolor": "white",
"landcolor": "#E5ECF6",
"showlakes": true,
"showland": true,
"subunitcolor": "white"
},
"hoverlabel": {
"align": "left"
},
"hovermode": "closest",
"mapbox": {
"style": "light"
},
"paper_bgcolor": "white",
"plot_bgcolor": "#E5ECF6",
"polar": {
"angularaxis": {
"gridcolor": "white",
"linecolor": "white",
"ticks": ""
},
"bgcolor": "#E5ECF6",
"radialaxis": {
"gridcolor": "white",
"linecolor": "white",
"ticks": ""
}
},
"scene": {
"xaxis": {
"backgroundcolor": "#E5ECF6",
"gridcolor": "white",
"gridwidth": 2,
"linecolor": "white",
"showbackground": true,
"ticks": "",
"zerolinecolor": "white"
},
"yaxis": {
"backgroundcolor": "#E5ECF6",
"gridcolor": "white",
"gridwidth": 2,
"linecolor": "white",
"showbackground": true,
"ticks": "",
"zerolinecolor": "white"
},
"zaxis": {
"backgroundcolor": "#E5ECF6",
"gridcolor": "white",
"gridwidth": 2,
"linecolor": "white",
"showbackground": true,
"ticks": "",
"zerolinecolor": "white"
}
},
"shapedefaults": {
"line": {
"color": "#2a3f5f"
}
},
"ternary": {
"aaxis": {
"gridcolor": "white",
"linecolor": "white",
"ticks": ""
},
"baxis": {
"gridcolor": "white",
"linecolor": "white",
"ticks": ""
},
"bgcolor": "#E5ECF6",
"caxis": {
"gridcolor": "white",
"linecolor": "white",
"ticks": ""
}
},
"title": {
"x": 0.05
},
"xaxis": {
"automargin": true,
"gridcolor": "white",
"linecolor": "white",
"ticks": "",
"title": {
"standoff": 15
},
"zerolinecolor": "white",
"zerolinewidth": 2
},
"yaxis": {
"automargin": true,
"gridcolor": "white",
"linecolor": "white",
"ticks": "",
"title": {
"standoff": 15
},
"zerolinecolor": "white",
"zerolinewidth": 2
}
}
},
"title": {
"text": "FAMD Decomposition — Wholesale Customer Segments"
},
"xaxis": {
"anchor": "y",
"domain": [
0,
1
],
"title": {
"text": "Dim1 (63.4%)"
}
},
"yaxis": {
"anchor": "x",
"domain": [
0,
1
],
"title": {
"text": "Dim2 (36.6%)"
}
}
}
}
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import plotly.express as px\n",
"\n",
"print(\"Running FAMD decomposition — synthesises all 8 features into 2 components.\")\n",
"\n",
"reduced_data, explained_var, method_used = auto_decompose(df, n_components=2)\n",
"method_label = method_used.upper()\n",
"\n",
"print(f\"Method selected : {method_label}\")\n",
"print(f\"Explained variance — Component 1: {explained_var[0]:.1%} | Component 2: {explained_var[1]:.1%}\")\n",
"print(f\"Total variance captured by 2D projection: {sum(explained_var):.1%}\")\n",
"\n",
"decomp_df = reduced_data.copy()\n",
"decomp_df[\"cluster\"] = labels.astype(str)\n",
"\n",
"fig = px.scatter(\n",
" decomp_df,\n",
" x=reduced_data.columns[0],\n",
" y=reduced_data.columns[1],\n",
" color=\"cluster\",\n",
" title=f\"{method_label} Decomposition — Wholesale Customer Segments\",\n",
" labels={\n",
" reduced_data.columns[0]: f\"{reduced_data.columns[0]} ({explained_var[0] * 100:.1f}%)\",\n",
" reduced_data.columns[1]: f\"{reduced_data.columns[1]} ({explained_var[1] * 100:.1f}%)\",\n",
" \"cluster\": \"Cluster\",\n",
" },\n",
")\n",
"fig.update_traces(marker=dict(size=8, line=dict(width=0.5, color=\"white\")))\n",
"fig.update_layout(plot_bgcolor=\"white\", hovermode=\"closest\")\n",
"fig.show()"
]
},
{
"cell_type": "markdown",
"id": "mdaabc6a1a",
"metadata": {},
"source": [
"## 12. Cluster Size Distribution"
]
},
{
"cell_type": "code",
"execution_count": 18,
"id": "cdb0362bd8",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.plotly.v1+json": {
"config": {
"plotlyServerURL": "https://plot.ly"
},
"data": [
{
"marker": {
"color": [
"#0B4F91",
"#2E86DE",
"#4A7DB5",
"#1976D2",
"#5DA3E8",
"#616161"
]
},
"text": [
"22 (5.0%)",
"7 (1.6%)",
"80 (18.2%)",
"3 (0.7%)",
"224 (50.9%)",
"104 (23.6%)"
],
"textposition": "auto",
"type": "bar",
"x": [
"Cluster 0",
"Cluster 1",
"Cluster 2",
"Cluster 3",
"Cluster 4",
"Cluster 5"
],
"y": {
"bdata": "FgAHAFAAAwDgAGgA",
"dtype": "i2"
}
}
],
"layout": {
"plot_bgcolor": "white",
"template": {
"data": {
"bar": [
{
"error_x": {
"color": "#2a3f5f"
},
"error_y": {
"color": "#2a3f5f"
},
"marker": {
"line": {
"color": "#E5ECF6",
"width": 0.5
},
"pattern": {
"fillmode": "overlay",
"size": 10,
"solidity": 0.2
}
},
"type": "bar"
}
],
"barpolar": [
{
"marker": {
"line": {
"color": "#E5ECF6",
"width": 0.5
},
"pattern": {
"fillmode": "overlay",
"size": 10,
"solidity": 0.2
}
},
"type": "barpolar"
}
],
"carpet": [
{
"aaxis": {
"endlinecolor": "#2a3f5f",
"gridcolor": "white",
"linecolor": "white",
"minorgridcolor": "white",
"startlinecolor": "#2a3f5f"
},
"baxis": {
"endlinecolor": "#2a3f5f",
"gridcolor": "white",
"linecolor": "white",
"minorgridcolor": "white",
"startlinecolor": "#2a3f5f"
},
"type": "carpet"
}
],
"choropleth": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"type": "choropleth"
}
],
"contour": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"type": "contour"
}
],
"contourcarpet": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"type": "contourcarpet"
}
],
"heatmap": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"type": "heatmap"
}
],
"histogram": [
{
"marker": {
"pattern": {
"fillmode": "overlay",
"size": 10,
"solidity": 0.2
}
},
"type": "histogram"
}
],
"histogram2d": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"type": "histogram2d"
}
],
"histogram2dcontour": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"type": "histogram2dcontour"
}
],
"mesh3d": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"type": "mesh3d"
}
],
"parcoords": [
{
"line": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "parcoords"
}
],
"pie": [
{
"automargin": true,
"type": "pie"
}
],
"scatter": [
{
"fillpattern": {
"fillmode": "overlay",
"size": 10,
"solidity": 0.2
},
"type": "scatter"
}
],
"scatter3d": [
{
"line": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scatter3d"
}
],
"scattercarpet": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scattercarpet"
}
],
"scattergeo": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scattergeo"
}
],
"scattergl": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scattergl"
}
],
"scattermap": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scattermap"
}
],
"scattermapbox": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scattermapbox"
}
],
"scatterpolar": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scatterpolar"
}
],
"scatterpolargl": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scatterpolargl"
}
],
"scatterternary": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scatterternary"
}
],
"surface": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"type": "surface"
}
],
"table": [
{
"cells": {
"fill": {
"color": "#EBF0F8"
},
"line": {
"color": "white"
}
},
"header": {
"fill": {
"color": "#C8D4E3"
},
"line": {
"color": "white"
}
},
"type": "table"
}
]
},
"layout": {
"annotationdefaults": {
"arrowcolor": "#2a3f5f",
"arrowhead": 0,
"arrowwidth": 1
},
"autotypenumbers": "strict",
"coloraxis": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"colorscale": {
"diverging": [
[
0,
"#8e0152"
],
[
0.1,
"#c51b7d"
],
[
0.2,
"#de77ae"
],
[
0.3,
"#f1b6da"
],
[
0.4,
"#fde0ef"
],
[
0.5,
"#f7f7f7"
],
[
0.6,
"#e6f5d0"
],
[
0.7,
"#b8e186"
],
[
0.8,
"#7fbc41"
],
[
0.9,
"#4d9221"
],
[
1,
"#276419"
]
],
"sequential": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"sequentialminus": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
]
},
"colorway": [
"#636efa",
"#EF553B",
"#00cc96",
"#ab63fa",
"#FFA15A",
"#19d3f3",
"#FF6692",
"#B6E880",
"#FF97FF",
"#FECB52"
],
"font": {
"color": "#2a3f5f"
},
"geo": {
"bgcolor": "white",
"lakecolor": "white",
"landcolor": "#E5ECF6",
"showlakes": true,
"showland": true,
"subunitcolor": "white"
},
"hoverlabel": {
"align": "left"
},
"hovermode": "closest",
"mapbox": {
"style": "light"
},
"paper_bgcolor": "white",
"plot_bgcolor": "#E5ECF6",
"polar": {
"angularaxis": {
"gridcolor": "white",
"linecolor": "white",
"ticks": ""
},
"bgcolor": "#E5ECF6",
"radialaxis": {
"gridcolor": "white",
"linecolor": "white",
"ticks": ""
}
},
"scene": {
"xaxis": {
"backgroundcolor": "#E5ECF6",
"gridcolor": "white",
"gridwidth": 2,
"linecolor": "white",
"showbackground": true,
"ticks": "",
"zerolinecolor": "white"
},
"yaxis": {
"backgroundcolor": "#E5ECF6",
"gridcolor": "white",
"gridwidth": 2,
"linecolor": "white",
"showbackground": true,
"ticks": "",
"zerolinecolor": "white"
},
"zaxis": {
"backgroundcolor": "#E5ECF6",
"gridcolor": "white",
"gridwidth": 2,
"linecolor": "white",
"showbackground": true,
"ticks": "",
"zerolinecolor": "white"
}
},
"shapedefaults": {
"line": {
"color": "#2a3f5f"
}
},
"ternary": {
"aaxis": {
"gridcolor": "white",
"linecolor": "white",
"ticks": ""
},
"baxis": {
"gridcolor": "white",
"linecolor": "white",
"ticks": ""
},
"bgcolor": "#E5ECF6",
"caxis": {
"gridcolor": "white",
"linecolor": "white",
"ticks": ""
}
},
"title": {
"x": 0.05
},
"xaxis": {
"automargin": true,
"gridcolor": "white",
"linecolor": "white",
"ticks": "",
"title": {
"standoff": 15
},
"zerolinecolor": "white",
"zerolinewidth": 2
},
"yaxis": {
"automargin": true,
"gridcolor": "white",
"linecolor": "white",
"ticks": "",
"title": {
"standoff": 15
},
"zerolinecolor": "white",
"zerolinewidth": 2
}
}
},
"title": {
"text": "Cluster Sizes"
},
"xaxis": {
"title": {
"text": "Cluster"
}
},
"yaxis": {
"title": {
"text": "Number of Samples"
}
}
}
}
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig = plot_cluster_sizes(labels)\n",
"fig.show()"
]
},
{
"cell_type": "markdown",
"id": "mdbcc0eef2",
"metadata": {},
"source": [
"## 13. Comprehensive Dashboard"
]
},
{
"cell_type": "code",
"execution_count": 19,
"id": "cd5291fca0",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.plotly.v1+json": {
"config": {
"plotlyServerURL": "https://plot.ly"
},
"data": [
{
"marker": {
"color": "#0B4F91",
"line": {
"color": "white",
"width": 0.3
},
"size": 4
},
"mode": "markers",
"name": "Cluster 0",
"type": "scatter",
"x": {
"bdata": "UKgAAF/bAAARnwAAAakAABLbAADSjAAAzSkBAEilAACskAAASLIAABe2AQCFuQAAE9sAANXPAADRjwAAp78AAFcNAQA+nQAAIqcAAP+aAACJlwAAPJkAAA==",
"dtype": "i4"
},
"xaxis": "x",
"y": {
"bdata": "NAgrAkwPoROwDWoGkQ2eA/AbLhu7cwcK0xFfE+ULfQ87EYACHgFoD1IMlwU=",
"dtype": "i2"
},
"yaxis": "y"
},
{
"marker": {
"color": "#2E86DE",
"line": {
"color": "white",
"width": 0.3
},
"size": 4
},
"mode": "markers",
"name": "Cluster 1",
"type": "scatter",
"x": {
"bdata": "sq0AAGaMAABVAAAA9T4AAI1ZAABXLwAAdSEAAA==",
"dtype": "i4"
},
"xaxis": "x",
"y": {
"bdata": "89MAAOGVAADfUQAAdbQAABofAQCmbgAAdBMAAA==",
"dtype": "i4"
},
"yaxis": "y"
},
{
"marker": {
"color": "#4A7DB5",
"line": {
"color": "white",
"width": 0.3
},
"size": 4
},
"mode": "markers",
"name": "Cluster 2",
"type": "scatter",
"x": {
"bdata": "dhcmDfwDERBAO+8RYip2Aj0UHwxnE+sBAhApFbQkrS/bAO4j+hVKLYwFrgVdIn4FIzEXVsUH9g5jAZsV/zwEAcgAAgInCbYCaB9CA7QA+wuEEVMErhU6CfYK5AkSAPYL9hcxBBUXPAKELpwPoxQnCqEA8wBEGZYDWQjHBR8m1yuZBtMKXRe6BHUAJQBADLspoxHCHCURlAJoEU4zGQzDOA==",
"dtype": "i2"
},
"xaxis": "x",
"y": {
"bdata": "VSsbFXAiBFA8KXE9gx1XKxxW9TakU+koxHTNJlEtmTFEJVBrvC9jHjoqwRiWKVlBaivAIMIpqxQYHm49bTHjIQZl/R2lHlUh1x05LZ0NuDM/OL8tuTGXGQ0q10BQHQoYXVrPJedbIyZ1H18rBDRoDiQdizJDMq9QmQ6GOu9hITo0GxsbMTk8J3gY+wS2IWJV1y4sMrwqLiGSFIMkhhCAPA==",
"dtype": "i2"
},
"yaxis": "y"
},
{
"marker": {
"color": "#1976D2",
"line": {
"color": "white",
"width": 0.3
},
"size": 4
},
"mode": "markers",
"name": "Cluster 3",
"type": "scatter",
"x": {
"bdata": "BWcAAO+PAADNfwAA",
"dtype": "i4"
},
"xaxis": "x",
"y": {
"bdata": "R44AAK6rAACQQQAA",
"dtype": "i4"
},
"yaxis": "y"
},
{
"marker": {
"color": "#5DA3E8",
"line": {
"color": "white",
"width": 0.3
},
"size": 4
},
"mode": "markers",
"name": "Cluster 4",
"type": "scatter",
"x": {
"bdata": "fTGRG9EY0TPFJF4vmx1LF1ozDSj0FmQevxWqJjQK3gWwAsYl/yx9GBMNkBTTNfkXjiGPHpgSCQCOCaAgRBH+H80CDipoBl0beihbLrgejSzSMQMAFwCTAfcBuiV0C/sFKi5+K6UrThtCILQPtC+iK4wA7Rs1CNok3BycGBESDwzhNAsVpShZHvMjJBcJBYcNbgItC70GkjBoFNYSbguxFiYVuwMeAdcx+ipVDEQwRwHqH8ELhgk4NYUVwxt7CaYtxiVHAqQH5RjtCQEGexz1DDsQFBWxE+YKahyIMcoPTQfQIUArKAnEAy4HuyHDHMorOhi1IgE1aB93DN8ZiyhUKxsh6SOyHmkIcBIjCAICfgOoAmUjrS0mDc4v7RuUCoYXFgukHZofZhq8AUYLSxt6GzgmeSnXG54EGC7uBsMjMDQ+ER4C+RM+JpI2hyQDADkKfQEQCf8A4wuuBGQNwQ1gAr4A9wIcA34SSQgTEjcKVBJZJZUNQxgsD8IY0RaZDNAPHQdzLbYEOSapJBgNVwoGAlkwgiUPLbIsjCVeEeQaQSAEIukZTghhAHcTUReiHskTnSLrK+cLnyFVIb4HMijjCg==",
"dtype": "i2"
},
"xaxis": "x",
"y": {
"bdata": "uCVSJmgirARDIH8MXBNADmQEWgQNGL8JZwPBA/MQuwdzFXMbCBhHBNMPYw6yB/AU5QtlGMsE/gVcHAQLExTHGAMOlwS7DD0DECT/DB4CVALKCmgLOAr+AHAAhgg7Gc0gcAYZA9kJKA8oCaIMyQARKo8ifAlNAhIEWgcJBYMhkB+hEHMTPAaQBy0NSAIADSIkNwCqGUMOHAKzHUEaewzfAs0CZxW4BKIcoxsYE5QXlgMwGQkCQh8nAbUF9AO5G2oI6AitAnsDDAOBEqQO9APKGW8BTx1bBN8JkwKrDJwIQQK6CmUXtil4E+wYNAPbAfgNXx58CVoB0w7JB0QHNEaQE4sHFRNWBFsECASPE4MgpwZKBj0DDQlEC8QbxwhwCBoNDgxpB38M0BFvA7YU/APUBZ0DAwdfBRAMmQpwDmkHsANKBoMDzgX6BucFQwVNAaQEuQ+DFn4WlAQqCkwJSwRSBNcC6Ej2Fl8CQQblA2kD8BepCH4DUQHZDtAIqgXeDCwUVAWaAyQOUAP6BZ0EyQpUEGEDJAWCBggEQQKKAxYEKA8yDjAI2QwVDvsSxgeeF3sVxw5oCVIX1gaCFZIMvQeiBg==",
"dtype": "i2"
},
"yaxis": "y"
},
{
"marker": {
"color": "#616161",
"line": {
"color": "white",
"width": 0.3
},
"size": 4
},
"mode": "markers",
"name": "Cluster 5",
"type": "scatter",
"x": {
"bdata": "V1gAAOJ7AADhUgAATWAAAKlIAACKRAAALHoAAHdYAAAlPwAAxDcAAH9JAACAVAAAIXQAAAN1AADZXQAA6EoAAMFqAADJTQAAQUEAAHNHAAC7TQAArk8AAIpRAABIYQAAMiwAABQ3AADjPAAAZkoAAGY4AAB8RgAAUU4AAAhDAAATSwAA2VMAADc6AADXRAAAq3YAAItJAABEfAAAYT8AAJhJAABtRQAASTsAAChCAAB/QgAAoHcAAHNiAACHSAAAfEYAAKM5AAAuUQAAamUAAPM8AAAESQAAUFYAAGFhAAAyRwAANz0AAFZzAAB+ewAA2VoAAJ1RAAByOwAA/WwAANBDAACnZAAA+jsAAIQ/AAAZUwAAj0oAAEBAAACvQwAAw3MAAAk+AAB5ZQAAJUIAADFXAAC3QQAAymkAAPRqAADXNgAAnlgAACJNAAA/VwAAiU4AAOQ6AABhbgAAakUAAJaGAAC2UQAAUFwAAB9qAACrZwAABmQAAJlGAADqYQAAp0IAACBnAACdRAAAVEIAACR5AAB9UgAAW0EAAAd0AAA=",
"dtype": "i4"
},
"xaxis": "x",
"y": {
"bdata": "IhUfMEAY+SS3GKcRfQcwJoYQIwMaDiYFshIKEewQ+QupBWca9QfyBNQUcQQbBvwOEgxUCPYD0gr3CDgEYwewBDAHSxzwB7gQxDNdDpkFIQdbBVYF6AdqGBMUKRzfLGcHwwWDAyEX9AaPCv4O9w0JB5MCnxQZH+kBXAXGBAIBpQ44GB0ONghSAt0HGAVjGEYJHwnJAgMOoQiQDKADoRoQHOEchgA4C6wEXwdxGLAD7xELHXwHShrxCpES/ioFEpIT7xJhBWYORAsvQYoEUg8TLw==",
"dtype": "i2"
},
"yaxis": "y"
},
{
"fill": "tozerox",
"fillcolor": "#0B4F91",
"line": {
"width": 0
},
"name": "C0",
"showlegend": false,
"type": "scatter",
"x": {
"bdata": "mwAPuY7sd78oVRt4SIJ+P9l5EElf+q8/N8XsPOMaxz/DQdfmCcXJP5WIcnyJ2cw/sRfah03BzT8DP7F+ja/PP2eXOZn2TNE/qMhqmIiY0T+0JRpj85jWP3VJjMhFOtc/AvcnsUP62D/HG2HlvabZP4m+jvUVXdo/MX+PGJzB2j/D0+fLXw3cP1mK2fwrGd8/0O64CoM+3z/8RTxVIdPfP40EknViDuA/9CnhL85C4D8=",
"dtype": "f8"
},
"xaxis": "x2",
"y": {
"bdata": "AAECAwQFBgcICQoLDA0ODxAREhMUFQ==",
"dtype": "i1"
},
"yaxis": "y2"
},
{
"fill": "tozerox",
"fillcolor": "#2E86DE",
"line": {
"width": 0
},
"name": "C1",
"showlegend": false,
"type": "scatter",
"x": {
"bdata": "20l5Jc1nzb8+ALOUfyTMv0UmqTNZg7w/au3Ze/mcwz+WlFOpLS3TPyiFqeT7G9g/I+/E3L5/2D8=",
"dtype": "f8"
},
"xaxis": "x2",
"y": {
"bdata": "ICEiIyQlJg==",
"dtype": "i1"
},
"yaxis": "y2"
},
{
"fill": "tozerox",
"fillcolor": "#4A7DB5",
"line": {
"width": 0
},
"name": "C2",
"showlegend": false,
"type": "scatter",
"x": {
"bdata": "wBiE0Agnub/F3GdXIYKyv0fFULQxBa+/9X2eMsASn7/9YHYqLV6bv8cqPqBfV5S/lwiB4jp5k79eoaxTvmKOv7J5RzMHin2/ZfGgC9spkz9tLDiy2TKVPxOXkS630ak/kBXzDmahsD8Qe8PrJn6yP/i1JySp4rg/xBlAe+4cvT8Be9/zRma9P+kQE3rEfb4/1Wylg/y3vj/L9lukGcK+P+BmjMG0h8A/4EUdyynAxD+j3HQ9URXFP377b4RHGsg/Btj8tTNOyD9/72lJdM7JP11cSD8q/8k/wEcxFGePyj/nxztTNkDLP9oVVYIKycw/aGvRFpAvzT+lOiFXa2TQP5UgHM/5uNA/wpATy9To0D/izacSsaLRP11RjPSt/tE/+uCvTI3v0z+ofY9SX/fTP+gD5E/LEtQ/FH6a9MA71D/DZE2qOZrUP9lunrEX6NQ/ujGlm/tX1T985bWfdOLVP0ZLZafI+9Y/fErf15wR1z99k9d9fe3XP0F7eAz5e9g/cxcmHgGM2D+tR3OtYV/ZP5wFdfLUYNk/o7LWPGJk2T903ASkHpXZPz9OgM3P6dk/+bAHg2MY2j+s+Ea70/faPyGPbMjucds/IEPubt6V2z9anFZZ9L3bP0Atpa0rz9s/U6MIAwIb3D9XgrDaeT3cPzOx1TU6sdw/zDuWi4HD3D/ubHiiJGPdP4srzxxQeN0/7ahsOLun3T/hrBuvT7TdP2cEIEwJE94//MdeERXu3j/vyX89fe7eP+8b3NT0od8/V/fGeKS43z+bpEtFG/ffP9rGYHim/N8/BpcxKDIW4D/se4ymbyPgP2zOa/voJ+A/G0iHcwQ94D+n16SYvlngPw==",
"dtype": "f8"
},
"xaxis": "x2",
"y": {
"bdata": "MQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQA+AD8AQABBAEIAQwBEAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgBfAGAAYQBiAGMAZABlAGYAZwBoAGkAagBrAGwAbQBuAG8AcABxAHIAcwB0AHUAdgB3AHgAeQB6AHsAfAB9AH4AfwCAAA==",
"dtype": "i2"
},
"yaxis": "y2"
},
{
"fill": "tozerox",
"fillcolor": "#1976D2",
"line": {
"width": 0
},
"name": "C3",
"showlegend": false,
"type": "scatter",
"x": {
"bdata": "hVMl6Dz/0r8d0yghnsOePyvYH/yT4tI/",
"dtype": "f8"
},
"xaxis": "x2",
"y": {
"bdata": "iwCMAI0A",
"dtype": "i2"
},
"yaxis": "y2"
},
{
"fill": "tozerox",
"fillcolor": "#5DA3E8",
"line": {
"width": 0
},
"name": "C4",
"showlegend": false,
"type": "scatter",
"x": {
"bdata": "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",
"dtype": "f8"
},
"xaxis": "x2",
"y": {
"bdata": "mACZAJoAmwCcAJ0AngCfAKAAoQCiAKMApAClAKYApwCoAKkAqgCrAKwArQCuAK8AsACxALIAswC0ALUAtgC3ALgAuQC6ALsAvAC9AL4AvwDAAMEAwgDDAMQAxQDGAMcAyADJAMoAywDMAM0AzgDPANAA0QDSANMA1ADVANYA1wDYANkA2gDbANwA3QDeAN8A4ADhAOIA4wDkAOUA5gDnAOgA6QDqAOsA7ADtAO4A7wDwAPEA8gDzAPQA9QD2APcA+AD5APoA+wD8AP0A/gD/AAABAQECAQMBBAEFAQYBBwEIAQkBCgELAQwBDQEOAQ8BEAERARIBEwEUARUBFgEXARgBGQEaARsBHAEdAR4BHwEgASEBIgEjASQBJQEmAScBKAEpASoBKwEsAS0BLgEvATABMQEyATMBNAE1ATYBNwE4ATkBOgE7ATwBPQE+AT8BQAFBAUIBQwFEAUUBRgFHAUgBSQFKAUsBTAFNAU4BTwFQAVEBUgFTAVQBVQFWAVcBWAFZAVoBWwFcAV0BXgFfAWABYQFiAWMBZAFlAWYBZwFoAWkBagFrAWwBbQFuAW8BcAFxAXIBcwF0AXUBdgF3AQ==",
"dtype": "i2"
},
"yaxis": "y2"
},
{
"fill": "tozerox",
"fillcolor": "#616161",
"line": {
"width": 0
},
"name": "C5",
"showlegend": false,
"type": "scatter",
"x": {
"bdata": "qZXmHsvGq79hGyYkr8env79i/WQDenW/dgWLEHG+Sz+hJhzOo3iAP677Jnle/5M/H66vxYlfoj8poh+3gtixPyAwhmwXSrI/BDzGZbR8tz/znD3T0uO7P8cwHiSIpL4/48c4fkpswD/rl3r/Y1fBP0VOdZsxW8M/EjXFHNKRxD8Mm0mTFrHEP/mNCb5uc8Y/gPuDWuCWxj+VQUsTACjHP4ZRyV3fWcg/FJNfFssLyj/eH232YpLKPwuhVJfmAsw/CsDb6sBgzT8OOpcFuDXOP7l6PRzvQM8/g2NNZyBbzz9fj1s13CTQPwDZ2N7pvdA/SC5EGkpf0T8DIbURq7TRP3u+Dyay5dE/THfUFc1M0j8yXGm9JJbSP7irsBHk79I/2Vz/U1rx0j8f49B0cvfSP9O9ImxJE9M/3uyht+mK0z8emHCRh+7TP45oqTm/QNQ//xOiQvNA1D+yPYawsGXUP3bII+kgwtQ/jaDTK73Q1D9mLL+AEePUP5P3dybxgtU/rXfLCr2p1T++1C3I0P3VPzNKZQXqSdY/5u2/NRxW1j+AWAGlWG/WP8WP1+mko9Y/WKNxURYY1z9WBypZOyjXP5ghMBKBbtc/QNajo5N21z9Y9D1EqpXXPwWVW1p6odc/9MjID9e62D9+5bbNC+jYP7xGI3ElhNk/fQef/ZWU2T/g/dCItaHZP5OaUp/ME9o/H9/vjaxC2j/jUb1F7EzaP6epeqI5WNo/6/GhpF/i2j/wdekMWAXbP2KROTUtGts/fiMA6odI2z/YrgPos7HbP7M+5SQr7ds/NM5X31s83D96CmMIN5jcP0bGQERTpNw/ac59ZPWl3D8xXOdKLsTcP/v+5zgL4tw/3yd5N5sR3T8KNb3buCrdP5/oEblnUN0/cM060Opx3T/x2QYcy3fdPxPxzwqLg90/pUs8x7TE3T8homwy59DdPyK1yhUvM94/y+dLwNGi3j/rEsAeRNbePzx9ElhS1t4/yfUAE1Il3z8WZwv3wUffP1/6fjO8EuA/XJoccM0z4D8B693LnkXgP3/5B5OOWOA/PFFUfMRi4D9fyHNJ253gPxZmiYpLyOA/jH9ZuiTZ4D/vmCnpySbhPw==",
"dtype": "f8"
},
"xaxis": "x2",
"y": {
"bdata": "ggGDAYQBhQGGAYcBiAGJAYoBiwGMAY0BjgGPAZABkQGSAZMBlAGVAZYBlwGYAZkBmgGbAZwBnQGeAZ8BoAGhAaIBowGkAaUBpgGnAagBqQGqAasBrAGtAa4BrwGwAbEBsgGzAbQBtQG2AbcBuAG5AboBuwG8Ab0BvgG/AcABwQHCAcMBxAHFAcYBxwHIAckBygHLAcwBzQHOAc8B0AHRAdIB0wHUAdUB1gHXAdgB2QHaAdsB3AHdAd4B3wHgAeEB4gHjAeQB5QHmAecB6AHpAQ==",
"dtype": "i2"
},
"yaxis": "y2"
},
{
"marker": {
"color": [
"#0B4F91",
"#2E86DE",
"#4A7DB5",
"#1976D2",
"#5DA3E8",
"#616161"
]
},
"showlegend": false,
"type": "bar",
"x": [
"C0",
"C1",
"C2",
"C3",
"C4",
"C5"
],
"xaxis": "x3",
"y": {
"bdata": "FgAHAFAAAwDgAGgA",
"dtype": "i2"
},
"yaxis": "y3"
},
{
"delta": {
"reference": 7
},
"domain": {
"x": [
0.56,
1
],
"y": [
0,
0.324
]
},
"gauge": {
"axis": {
"range": [
null,
10
]
},
"bar": {
"color": "darkblue"
},
"steps": [
{
"color": "lightgray",
"range": [
0,
5
]
},
{
"color": "gray",
"range": [
5,
7
]
},
{
"color": "lightgreen",
"range": [
7,
10
]
}
],
"threshold": {
"line": {
"color": "red",
"width": 4
},
"thickness": 0.75,
"value": 8
}
},
"mode": "gauge+number+delta",
"title": {
"text": "Good
Quality Score"
},
"type": "indicator",
"value": 6.982978620317818
}
],
"layout": {
"annotations": [
{
"font": {
"size": 16
},
"showarrow": false,
"text": "Cluster Distribution",
"x": 0.22,
"xanchor": "center",
"xref": "paper",
"y": 1,
"yanchor": "bottom",
"yref": "paper"
},
{
"font": {
"size": 16
},
"showarrow": false,
"text": "Silhouette Analysis",
"x": 0.78,
"xanchor": "center",
"xref": "paper",
"y": 1,
"yanchor": "bottom",
"yref": "paper"
},
{
"font": {
"size": 16
},
"showarrow": false,
"text": "Cluster Sizes",
"x": 0.22,
"xanchor": "center",
"xref": "paper",
"y": 0.324,
"yanchor": "bottom",
"yref": "paper"
}
],
"font": {
"size": 9
},
"height": 700,
"margin": {
"b": 70,
"l": 50,
"r": 80,
"t": 80
},
"plot_bgcolor": "white",
"showlegend": true,
"template": {
"data": {
"bar": [
{
"error_x": {
"color": "#2a3f5f"
},
"error_y": {
"color": "#2a3f5f"
},
"marker": {
"line": {
"color": "#E5ECF6",
"width": 0.5
},
"pattern": {
"fillmode": "overlay",
"size": 10,
"solidity": 0.2
}
},
"type": "bar"
}
],
"barpolar": [
{
"marker": {
"line": {
"color": "#E5ECF6",
"width": 0.5
},
"pattern": {
"fillmode": "overlay",
"size": 10,
"solidity": 0.2
}
},
"type": "barpolar"
}
],
"carpet": [
{
"aaxis": {
"endlinecolor": "#2a3f5f",
"gridcolor": "white",
"linecolor": "white",
"minorgridcolor": "white",
"startlinecolor": "#2a3f5f"
},
"baxis": {
"endlinecolor": "#2a3f5f",
"gridcolor": "white",
"linecolor": "white",
"minorgridcolor": "white",
"startlinecolor": "#2a3f5f"
},
"type": "carpet"
}
],
"choropleth": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"type": "choropleth"
}
],
"contour": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"type": "contour"
}
],
"contourcarpet": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"type": "contourcarpet"
}
],
"heatmap": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"type": "heatmap"
}
],
"histogram": [
{
"marker": {
"pattern": {
"fillmode": "overlay",
"size": 10,
"solidity": 0.2
}
},
"type": "histogram"
}
],
"histogram2d": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"type": "histogram2d"
}
],
"histogram2dcontour": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"type": "histogram2dcontour"
}
],
"mesh3d": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"type": "mesh3d"
}
],
"parcoords": [
{
"line": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "parcoords"
}
],
"pie": [
{
"automargin": true,
"type": "pie"
}
],
"scatter": [
{
"fillpattern": {
"fillmode": "overlay",
"size": 10,
"solidity": 0.2
},
"type": "scatter"
}
],
"scatter3d": [
{
"line": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scatter3d"
}
],
"scattercarpet": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scattercarpet"
}
],
"scattergeo": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scattergeo"
}
],
"scattergl": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scattergl"
}
],
"scattermap": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scattermap"
}
],
"scattermapbox": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scattermapbox"
}
],
"scatterpolar": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scatterpolar"
}
],
"scatterpolargl": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scatterpolargl"
}
],
"scatterternary": [
{
"marker": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"type": "scatterternary"
}
],
"surface": [
{
"colorbar": {
"outlinewidth": 0,
"ticks": ""
},
"colorscale": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"type": "surface"
}
],
"table": [
{
"cells": {
"fill": {
"color": "#EBF0F8"
},
"line": {
"color": "white"
}
},
"header": {
"fill": {
"color": "#C8D4E3"
},
"line": {
"color": "white"
}
},
"type": "table"
}
]
},
"layout": {
"annotationdefaults": {
"arrowcolor": "#2a3f5f",
"arrowhead": 0,
"arrowwidth": 1
},
"autotypenumbers": "strict",
"coloraxis": {
"colorbar": {
"outlinewidth": 0,
"ticks": ""
}
},
"colorscale": {
"diverging": [
[
0,
"#8e0152"
],
[
0.1,
"#c51b7d"
],
[
0.2,
"#de77ae"
],
[
0.3,
"#f1b6da"
],
[
0.4,
"#fde0ef"
],
[
0.5,
"#f7f7f7"
],
[
0.6,
"#e6f5d0"
],
[
0.7,
"#b8e186"
],
[
0.8,
"#7fbc41"
],
[
0.9,
"#4d9221"
],
[
1,
"#276419"
]
],
"sequential": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
],
"sequentialminus": [
[
0,
"#0d0887"
],
[
0.1111111111111111,
"#46039f"
],
[
0.2222222222222222,
"#7201a8"
],
[
0.3333333333333333,
"#9c179e"
],
[
0.4444444444444444,
"#bd3786"
],
[
0.5555555555555556,
"#d8576b"
],
[
0.6666666666666666,
"#ed7953"
],
[
0.7777777777777778,
"#fb9f3a"
],
[
0.8888888888888888,
"#fdca26"
],
[
1,
"#f0f921"
]
]
},
"colorway": [
"#636efa",
"#EF553B",
"#00cc96",
"#ab63fa",
"#FFA15A",
"#19d3f3",
"#FF6692",
"#B6E880",
"#FF97FF",
"#FECB52"
],
"font": {
"color": "#2a3f5f"
},
"geo": {
"bgcolor": "white",
"lakecolor": "white",
"landcolor": "#E5ECF6",
"showlakes": true,
"showland": true,
"subunitcolor": "white"
},
"hoverlabel": {
"align": "left"
},
"hovermode": "closest",
"mapbox": {
"style": "light"
},
"paper_bgcolor": "white",
"plot_bgcolor": "#E5ECF6",
"polar": {
"angularaxis": {
"gridcolor": "white",
"linecolor": "white",
"ticks": ""
},
"bgcolor": "#E5ECF6",
"radialaxis": {
"gridcolor": "white",
"linecolor": "white",
"ticks": ""
}
},
"scene": {
"xaxis": {
"backgroundcolor": "#E5ECF6",
"gridcolor": "white",
"gridwidth": 2,
"linecolor": "white",
"showbackground": true,
"ticks": "",
"zerolinecolor": "white"
},
"yaxis": {
"backgroundcolor": "#E5ECF6",
"gridcolor": "white",
"gridwidth": 2,
"linecolor": "white",
"showbackground": true,
"ticks": "",
"zerolinecolor": "white"
},
"zaxis": {
"backgroundcolor": "#E5ECF6",
"gridcolor": "white",
"gridwidth": 2,
"linecolor": "white",
"showbackground": true,
"ticks": "",
"zerolinecolor": "white"
}
},
"shapedefaults": {
"line": {
"color": "#2a3f5f"
}
},
"ternary": {
"aaxis": {
"gridcolor": "white",
"linecolor": "white",
"ticks": ""
},
"baxis": {
"gridcolor": "white",
"linecolor": "white",
"ticks": ""
},
"bgcolor": "#E5ECF6",
"caxis": {
"gridcolor": "white",
"linecolor": "white",
"ticks": ""
}
},
"title": {
"x": 0.05
},
"xaxis": {
"automargin": true,
"gridcolor": "white",
"linecolor": "white",
"ticks": "",
"title": {
"standoff": 15
},
"zerolinecolor": "white",
"zerolinewidth": 2
},
"yaxis": {
"automargin": true,
"gridcolor": "white",
"linecolor": "white",
"ticks": "",
"title": {
"standoff": 15
},
"zerolinecolor": "white",
"zerolinewidth": 2
}
}
},
"title": {
"text": "Clustering Dashboard"
},
"width": 900,
"xaxis": {
"anchor": "y",
"domain": [
0,
0.44
],
"title": {
"font": {
"size": 10
},
"standoff": 6,
"text": "Fresh"
}
},
"xaxis2": {
"anchor": "y2",
"domain": [
0.56,
1
],
"title": {
"font": {
"size": 10
},
"standoff": 2,
"text": "Silhouette Score"
}
},
"xaxis3": {
"anchor": "y3",
"domain": [
0,
0.44
],
"title": {
"font": {
"size": 10
},
"text": "Cluster"
}
},
"yaxis": {
"anchor": "x",
"domain": [
0.6040000000000001,
1
],
"title": {
"font": {
"size": 10
},
"text": "Milk"
}
},
"yaxis2": {
"anchor": "x2",
"domain": [
0.6040000000000001,
1
]
},
"yaxis3": {
"anchor": "x3",
"domain": [
0,
0.324
],
"title": {
"font": {
"size": 10
},
"text": "Count"
}
}
}
}
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig = create_dashboard(df, labels, report, sil_samples)\n",
"fig.show()"
]
},
{
"cell_type": "markdown",
"id": "md2e6a1b1c",
"metadata": {},
"source": [
"## 14. Putting Segments to Work"
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "cd92a91bd5",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Segment labels attached.\n",
"Shape: (440, 10)\n",
"\n"
]
},
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" segment_id | \n",
" segment_name | \n",
" Channel | \n",
" Region | \n",
" Fresh | \n",
" Milk | \n",
" Grocery | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" 4 | \n",
" Moderately Low Fresh · Horeca | \n",
" Retail | \n",
" Other | \n",
" 12669 | \n",
" 9656 | \n",
" 7561 | \n",
"
\n",
" \n",
" | 1 | \n",
" 4 | \n",
" Moderately Low Fresh · Horeca | \n",
" Retail | \n",
" Other | \n",
" 7057 | \n",
" 9810 | \n",
" 9568 | \n",
"
\n",
" \n",
" | 2 | \n",
" 4 | \n",
" Moderately Low Fresh · Horeca | \n",
" Retail | \n",
" Other | \n",
" 6353 | \n",
" 8808 | \n",
" 7684 | \n",
"
\n",
" \n",
" | 3 | \n",
" 4 | \n",
" Moderately Low Fresh · Horeca | \n",
" Horeca | \n",
" Other | \n",
" 13265 | \n",
" 1196 | \n",
" 4221 | \n",
"
\n",
" \n",
" | 4 | \n",
" 5 | \n",
" Moderately High Fresh · Horeca | \n",
" Retail | \n",
" Other | \n",
" 22615 | \n",
" 5410 | \n",
" 7198 | \n",
"
\n",
" \n",
" | 5 | \n",
" 4 | \n",
" Moderately Low Fresh · Horeca | \n",
" Retail | \n",
" Other | \n",
" 9413 | \n",
" 8259 | \n",
" 5126 | \n",
"
\n",
" \n",
" | 6 | \n",
" 4 | \n",
" Moderately Low Fresh · Horeca | \n",
" Retail | \n",
" Other | \n",
" 12126 | \n",
" 3199 | \n",
" 6975 | \n",
"
\n",
" \n",
" | 7 | \n",
" 4 | \n",
" Moderately Low Fresh · Horeca | \n",
" Retail | \n",
" Other | \n",
" 7579 | \n",
" 4956 | \n",
" 9426 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" segment_id segment_name Channel Region Fresh Milk \\\n",
"0 4 Moderately Low Fresh · Horeca Retail Other 12669 9656 \n",
"1 4 Moderately Low Fresh · Horeca Retail Other 7057 9810 \n",
"2 4 Moderately Low Fresh · Horeca Retail Other 6353 8808 \n",
"3 4 Moderately Low Fresh · Horeca Horeca Other 13265 1196 \n",
"4 5 Moderately High Fresh · Horeca Retail Other 22615 5410 \n",
"5 4 Moderately Low Fresh · Horeca Retail Other 9413 8259 \n",
"6 4 Moderately Low Fresh · Horeca Retail Other 12126 3199 \n",
"7 4 Moderately Low Fresh · Horeca Retail Other 7579 4956 \n",
"\n",
" Grocery \n",
"0 7561 \n",
"1 9568 \n",
"2 7684 \n",
"3 4221 \n",
"4 7198 \n",
"5 5126 \n",
"6 6975 \n",
"7 9426 "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"df_segmented = df.copy()\n",
"df_segmented[\"segment_id\"] = labels\n",
"\n",
"label_map = {p.cluster_id: p.suggested_label for p in profiles.cluster_profiles}\n",
"df_segmented[\"segment_name\"] = df_segmented[\"segment_id\"].map(label_map)\n",
"\n",
"print(\"Segment labels attached.\")\n",
"print(f\"Shape: {df_segmented.shape}\\n\")\n",
"display(df_segmented[[\"segment_id\", \"segment_name\", \"Channel\", \"Region\"] + numerical_cols[:3]].head(8))"
]
},
{
"cell_type": "code",
"execution_count": 21,
"id": "cdcac5e1ab",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"════════════════════════════════════════════════════════════════════════════════\n",
" SEGMENT MEANS — ANNUAL SPEND BY PRODUCT CATEGORY (monetary units)\n",
"════════════════════════════════════════════════════════════════════════════════\n"
]
},
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" segment_id | \n",
" segment_name | \n",
" Fresh | \n",
" Milk | \n",
" Grocery | \n",
" Frozen | \n",
" Detergents_Paper | \n",
" Delicassen | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" 0 | \n",
" Moderately High Frozen · Very High Fresh | \n",
" 50050.0 | \n",
" 4447.0 | \n",
" 5225.0 | \n",
" 5896.0 | \n",
" 948.0 | \n",
" 2404.0 | \n",
"
\n",
" \n",
" | 3 | \n",
" 3 | \n",
" Very High Delicassen · Very High Frozen | \n",
" 31979.0 | \n",
" 32386.0 | \n",
" 18605.0 | \n",
" 34186.0 | \n",
" 1949.0 | \n",
" 23358.0 | \n",
"
\n",
" \n",
" | 5 | \n",
" 5 | \n",
" Moderately High Fresh · Horeca | \n",
" 21200.0 | \n",
" 3886.0 | \n",
" 5139.0 | \n",
" 4120.0 | \n",
" 1132.0 | \n",
" 1690.0 | \n",
"
\n",
" \n",
" | 1 | \n",
" 1 | \n",
" Very High Detergents_Paper · Very High Milk | \n",
" 20031.0 | \n",
" 38084.0 | \n",
" 56126.0 | \n",
" 2565.0 | \n",
" 27645.0 | \n",
" 2548.0 | \n",
"
\n",
" \n",
" | 4 | \n",
" 4 | \n",
" Moderately Low Fresh · Horeca | \n",
" 6072.0 | \n",
" 3293.0 | \n",
" 4123.0 | \n",
" 2452.0 | \n",
" 1224.0 | \n",
" 997.0 | \n",
"
\n",
" \n",
" | 2 | \n",
" 2 | \n",
" High Detergents_Paper · Moderately High Milk | \n",
" 4724.0 | \n",
" 11837.0 | \n",
" 18462.0 | \n",
" 1547.0 | \n",
" 8196.0 | \n",
" 1639.0 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" segment_id segment_name Fresh Milk \\\n",
"0 0 Moderately High Frozen · Very High Fresh 50050.0 4447.0 \n",
"3 3 Very High Delicassen · Very High Frozen 31979.0 32386.0 \n",
"5 5 Moderately High Fresh · Horeca 21200.0 3886.0 \n",
"1 1 Very High Detergents_Paper · Very High Milk 20031.0 38084.0 \n",
"4 4 Moderately Low Fresh · Horeca 6072.0 3293.0 \n",
"2 2 High Detergents_Paper · Moderately High Milk 4724.0 11837.0 \n",
"\n",
" Grocery Frozen Detergents_Paper Delicassen \n",
"0 5225.0 5896.0 948.0 2404.0 \n",
"3 18605.0 34186.0 1949.0 23358.0 \n",
"5 5139.0 4120.0 1132.0 1690.0 \n",
"1 56126.0 2565.0 27645.0 2548.0 \n",
"4 4123.0 2452.0 1224.0 997.0 \n",
"2 18462.0 1547.0 8196.0 1639.0 "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"spend_cols = numerical_cols\n",
"\n",
"segment_means = (\n",
" df_segmented.groupby([\"segment_id\", \"segment_name\"])[spend_cols]\n",
" .mean()\n",
" .round(0)\n",
" .reset_index()\n",
" .sort_values(\"Fresh\", ascending=False)\n",
")\n",
"\n",
"print(\"\\u2550\" * 80)\n",
"print(\" SEGMENT MEANS \\u2014 ANNUAL SPEND BY PRODUCT CATEGORY (monetary units)\")\n",
"print(\"\\u2550\" * 80)\n",
"display(segment_means)"
]
},
{
"cell_type": "code",
"execution_count": 22,
"id": "cd4383b9e2",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABc8AAAPZCAYAAADHsdIGAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQABAABJREFUeJzs3X9c1fX9///765wDB0FRQKJMEAFJS41MUtMAXSnZb1PSiiRqvs0frdncdO+3TBfLWq62FqatzMKFOLNZVurcSmcrxdSsofkjkKxMQwN/AeJ5ff/gw+vLOYCCHgHxdr1cuOh5PV4/Hs8XL16vcx7n+Xq+DNM0TQEAAAAAAAAAAIutuRMAAAAAAAAAAKCloXgOAAAAAAAAAIAHiucAAAAAAAAAAHigeA4AAAAAAAAAgAeK5wAAAAAAAAAAeKB4DgAAAAAAAACAB4rnAAAAAAAAAAB4oHgOAAAAAAAAAIAHiucAAAAAAAAAAHigeA4AOK3IyEgZhiHDMDRz5szzuq2kpCRrW2lpaed1W97w4YcfWvkahqHCwsLmTglAK7Nz507dfffduuSSS2S3293ONwsXLnQ7B9V0oZ1Pcf4VFha6HS8ffvhhc6fUoqWlpVn7KikpqUHL8L4AAIDWh+I5ALQCb7/9ttuHtc2bN7vFv/zyS7f4uHHjaq3jhhtusOLJyclNlTrOwmeffabJkycrLi5OwcHBcjqdioiI0A033KDf/e532rNnT5PnRKHuzCorKzV37lwlJCQoODhYPj4+Cg4OVrdu3ZScnKzp06dr69atzZ3mBetcj8GaXxTW/PH19VWnTp10++236+233/Z+4qdx/Phx3XLLLVq2bJkOHjwol8vVpNtvLcrKyhQUFOT2e73hhhuaO60LSnFxsX7961/r6quvVrt27eTr66uwsDBdddVVGjlypH73u9/p4MGDzZ0mPFRWVuqNN97QyJEjFRkZqYCAALVr1049evTQiBEj9MYbb+jYsWPntA2+MAAAtHaO5k4AAHDuqgvfpmlKktatW6c+ffpY8X//+99u83u+Li8vV15entv60PKcOHFCkydP1iuvvFIr9vXXX+vrr7/W+vXr9be//Y0ibAtz8uRJDR06tFZPz8OHD+vw4cPavXu3Vq1apYCAAMXFxTVLjqjbyZMn9d133+mdd97RO++8o5/+9Kd66aWXmmTbGzdu1O7du63Xqamp6t27tyQpODhY8fHxeuaZZ5oklwvZW2+9pR9//NFt2vr167V7927FxMQ0T1IXkMLCQg0aNEjffPON2/QDBw7owIEDys/P15tvvqnExESFhoY2U5bwtG3bNt1zzz3asWNHrdiOHTu0Y8cOvfXWW3ruuef02GOPNX2CAABcICieA0ArEBQUpJ49e+rzzz+XVFU8r/lBaN26dW7z79ixQwcOHNAll1wiSdqwYYPKy8utOMXzlufUqVMaOXKk3nvvPWtahw4dNGLECEVHR+vEiRPaunWr/vGPfzRjlhenI0eOqF27dqed5+WXX3YrnN90000aMGCAbDabioqK9N///tftCyw0r6ioKD3yyCOSpKKiIr322msqLS2VJP3lL3/RLbfcojvuuOOM62nIsXE6RUVFbq9fffVV2e126/VVV12lq6666qzXf7FYuHBhndNfe+01PfHEE02bzAXoV7/6lVU49/X11T333KPY2FgdP35ce/fuVV5ennbt2tXMWaKm7du3KzEx0e1Lo169eik5OVlBQUH6/vvv9eGHH+qzzz5rviQvIGVlZbLb7fLx8WnuVAAAzcEEALQKEydONCWZkszQ0FC3WGRkpCnJvOyyy6x53nzzTSuemZlpTff19TVPnDhhxbp06WLFfvOb35hbtmwxb7nlFjMwMNAMCAgwb7zxRvOzzz6rM6cdO3aY//M//2PGxMSYfn5+pr+/v3nFFVeYkydPNgsKCmrNn5iYaG1r7NixteK7du0yJ0yYYF5xxRVmmzZtzDZt2pg9e/Y0MzIyzB9//LHW/IWFhea4ceOs7TudTrNTp07m9ddfb/785z838/PzrXm///578xe/+IU5ePBgMyIiwmzbtq3p4+NjXnLJJeZNN91kZmdnmy6Xy239H3zwgZWvpFptqqysNBcuXGj+5Cc/MTt27Gg6HA4zNDTUvP32281//etfde6z+rz44otu2xowYID5ww8/1Jrv4MGD5gsvvGC9/s1vfmMt06VLlwbnf/ToUXPWrFnmNddcY7Zt29bK/eqrrzYffvhh8/3336+1/vp+aq732LFj5h/+8AdzwIABZvv27U0fHx/z0ksvNW+77TZzxYoVtdrz6quvuq3rxx9/NCdPnmxeeumlpr+/v5mUlGRu2LDBNE3TLCgoMEeOHGl26NDBbNu2rTls2DDz888/r3N/NvZY8vw7WLNmjZmQkGC2a9fObMjbqbvuustafsiQIXXO8+2339b7t/TWW2+Zt956q3nppZeaPj4+ZlBQkHnjjTe6/R3XdPLkSfPpp582Y2JiTF9fXzMqKsqcNWuWWV5e7rY/X331VWuZlrqvN2zYYCYnJ5vt2rWr85zT2GOwPjW3m5iY6Bb7xz/+4ba+1NTUevM93bGxceNG8/777ze7dOli+vr6mm3btjV79+5tTp8+3Txw4IA1X0FBwWnbU/237Pk7q6k5z6ctyb59+0ybzWbti9jYWOv/ERERtc7rpln7vHn48GHzscceMzt37mz6+vqasbGx5ty5c2st57nPd+zYYY4cOdIMCgoy/fz8zP79+5sffPCB2zKev2vPuOfxVe3EiRPmr3/9a3PYsGFm165dzcDAQNPhcJghISHmDTfcYP75z382T5482aht1ScoKMha5re//W2d83z22Wfmt99+e9r9sX37dnPEiBFmUFCQ6e/vbw4aNMj85z//Wef6Dh8+bD7xxBNm3759zcDAQNPX19fs0qWL+fDDD5u7du2qNf/YsWPd/n6/+eYbMz093bzkkktMp9Np9u7d21y6dGmd21q7dq2ZmJho+vv7m0FBQebIkSPN3bt311pnQ3heV7/66ivzhRdeMK+66irT6XSal19+ufn444+bR44csZaZNWuWNX9kZGStY3Lr1q1u69y6desZ8+jfv7/bMk8++WSdx/pHH31krlq1ynr9j3/8w3zwwQfNuLg4MywszPT19TXbtGljxsTEmA8++KC5bds2t+XPdO71PPds3rzZTEtLM7t27Wo6nU6zbdu2Zt++fc0//OEPbu89a3rrrbfM+Ph408/PzwwNDTUffPBBc//+/Wc8x53re9DNmzebN998s9mhQwdTkrl27VorbhiGuXv3brflKysrzY4dO1rz/OlPf6rntwMAuNBQPAeAVmLx4sVuH1iqCxlff/21Ne13v/ud6evra0oyH3vsMWvZYcOGWfMMHDjQbb01P7gnJCSYTqez1oej4OBgc//+/W7L5ebmmn5+fvV+oGrXrp3bBzbTPH2x58033zTbtGlT7/qio6PNvXv3WvN///33Zmho6Gk/1L344ovW/Hl5eWf8EPjggw+65XS64vOxY8fMwYMHn3Z9v/vd7xr8+73iiius5fz8/MxvvvmmQcudbfE8KSnptLnfc889tdZf30/1er/77jvzqquuOu28//M//+OWo2dx8Nprr621jJ+fn/n222+bISEhtWIhISFuRUnTbPyxZJrufwf9+/c37Xa72zJnctttt1nzxsbG1ioy1efUqVPmvffee9p9Nm7cuFrLjR49us55a+Yhnb543hL29XXXXWc6HI5ay9U85zRF8fzo0aNu67vpppvqXO50x8Zzzz3nVsT1/AkLCzM3b95smub5L56f7/NpS/Lkk09aOfr7+7sVwCSZa9asqbVMzWMqJCTE7N69e51tfumll9yWq7nPe/fubbZt27bWMr6+vuYXX3xhLXO2xfODBw+e8bi/8cYbzcrKygZvqz7VXwRJMlNSUszjx483aLma++Paa681AwMDa+Vot9trfQm4Y8cOMyIiot52BQQE1Hr/ULPQHRUVZV566aW1ljMMo9ZyK1asqPccM2DAgHrPCfXxvK7ecsstdbahf//+ZllZmWmaprl//37rvZmkWjn++te/tmJ9+vQ5Yw4ff/yx27Zuu+22BuVumu4dMer68fX1Nf/xj39Y85/pGKx57vnzn/9c6/xY8yc+Pr7WF3fz5s2rc96uXbu6vZ/wPMed63vQa665xvT393dbpqCgwOzdu7f1evr06W7Lr1692m0/HTx4sMH7HQDQsjFsCwC0EgkJCW6v161bpx49ergN2TJ06FC99957+uijj6zpp06d0n/+8x9rntMN2bJu3Tp16dJFY8aM0X//+1+98847kqRDhw5pwYIFmj59uiRp165deuCBB6yhYEJDQzV27FhVVlZqwYIFKi0t1ZEjRzRq1Cjt3LlTYWFhp23bV199pfvuu09lZWWSpN69e+vOO+9URUWFsrOz9c0332jPnj0aM2aMPvroI0nSm2++aT28LCgoSA8++KBCQkL07bffaseOHbXGfbfZbLrqqqsUHx+vsLAwdejQQWVlZdqyZYveeecdmaapV199VePHj9d111132nwl6bHHHtMHH3wgSXI6nbr33nsVFRWlLVu2aNmyZZKk//3f/1Xfvn01dOjQ067r22+/1Zdffmm9HjZsmDp16nTGHM7W9u3brSFGbDabHnjgAcXGxuqHH35QQUGB2/AjQ4cOVdu2bfXiiy/qq6++kiT17dtX99xzjzVPcHCwJOm+++7Tf//7X2t69a3/7777rvWQ2/nz5ysuLk7jx4+vM7ctW7bo4YcfVrt27fTnP/9ZlZWVKisr0+233y5/f3899thjOnz4sF577TVJVQ+5e+WVVzRt2jRJZ3csefrkk0/Url073XffferUqZM2bdp0xn0aFxdn/b3s3LlTERER6tOnj/r27at+/frpxhtvrPN3+tRTT+mNN96QVPW7GDVqlHr27Kldu3bpr3/9q06dOqWXXnpJ1157rfUg4KVLl2rx4sXWOqKiojR69GgVFRXpr3/96xlzrdYS9vXGjRvPeM5pzDF4tj7++GO315deemmd89V3bKxdu1ZTpkyxnkvRtWtXjR49WocOHdKrr76qiooKff/997rrrrv05ZdfKjg4WM8884w2bdqk3Nxca/3V45u3b9/+rNvSFOfTlqT6+JSkW2+9VQkJCYqJibHGkl+4cKF+8pOf1Lt8cXGxfvzxR6WnpyskJERZWVk6fvy4JGnOnDn66U9/Wudy27ZtU8eOHTV+/Hh9//33ys7OliRVVFTo+eef1/z588+pXYZhKCYmRv369VOnTp0UFBSkkydPaseOHfrb3/6myspKrVmzRm+++aZSUlLOaVtxcXHW73jJkiV677331L9/f/Xp00fXX3+9fvKTn6ht27anXcenn36qTp066ZFHHtGRI0f0yiuvqLy8XKdOndLDDz+sG2+8UYGBgTp16pTuuusua8iisLAw3XfffWrfvr1WrFihvLw8HTt2TCkpKdq1a1edY6x/9dVX8vf31+TJk+VyuTRv3jydOnVKpmnqD3/4g3XNPX78uNLT01VZWSlJ8vHxUXp6uoKCgrRo0aJaf/dn491339Udd9yhq6++Wu+//741PNcnn3yiZ555Rv/3f/+nsLAwjRw50jrXv/zyy27vC/72t79Z/3/wwQfPuM1//etfbq/T09MbnG/btm01ePBgXXXVVQoODlabNm1UXFysd999V9u3b1dFRYUeffRR5efnS6o6J+3Zs0fz5s2z1vHrX/9aQUFBkqSePXtKkj766CM9+uij1jlw0KBBuvHGG/Xjjz/qtdde0+HDh5WXl6dHHnnE2g/79u1zG4IwICBADz/8sGw2m1555RUVFBTU2QZvvAfdsmWLfHx8lJaWpujoaP33v/+Vj4+PJk2aZF1rFy5cqCeeeMIaSqvm7+m2225Tx44dG7zfAQAtXPPW7gEA3hQTE2P1ern33ntN0zTN8ePHm5LMtm3bmpWVlea0adOs3l6lpaXmpk2b3HrWvPvuu27rrNnrrW3btuZ3331nxa655horNmLECGv6z372M2u6zWZzu51/3bp1btvLzMy0YvX1lPz5z39uTe/Vq5dZXl5uxXbs2OG2vo8++sg0TdN89tlnrWmevZlNs6onqWdvedM0zb1795pLly41X3jhBXPOnDnmM888Y15++eXWumresl5fz+3i4mK33lVvvPGG2zZq9gqu2YO1Phs3bnTbzq9+9aszLlPtbHqeb9682ZrWo0ePWrd6V1ZWmoWFhW7TznT79JYtW9y2VbPHVnl5udmjRw8rFhMTY8U8e9bWPF48e1fn5ORYsfj4+DqPzbM5lkzT/e/A4XDUunX9TA4dOuR2HHn+2Gw2c8SIEW490k+dOuXWw/vJJ590W2f137Iks1u3btb0oUOHuv3N1uwN7tlL+3Q9z1vCvm7oOcc0z3wMnknN7UZFRZnPPPOM+cwzz5iPPvporR6zb731Vp3L1Xds3HHHHW49Hmv2SHz99dfd1r1o0SIrdrqe5WeKt4TzaXP7z3/+U+fv7X//93+taf7+/mZpaanbcp5/JzWHwvrjH//oFqu5bM19brPZ3IYXuvPOO61Yzd7DZ9vzvNr3339vLl++3Jw7d651zerZs6e1THp6eoO3VZ/169ebPj4+9Z6//P39zV/+8pdux5Ln/vDx8XG7A+Svf/2r2zpeeeUV0zRNc/ny5dY0X19ft2tNeXm5W4/0mndv1ex5LsltGLDHHnvMmh4cHGxNz8nJcVvm5ZdfdttXNdt8tj3Pf/rTn1qxiooKt97SnTt3tmI1j1VfX1/rvF3z2unr62sWFxefMYcJEya45bB9+/YG5V7t1KlT5oYNG8yFCxeaf/zjH81nnnnGnDJlits6i4qK6m1zXXf61By6bNiwYW7vK1auXGnFDMMwv/76a9M03e8akWQNF1fXNmue47zxHlSS+d5779Vqx7Fjx9yGMVq+fLlpmlVDpdUcsqWuYegAABcuep4DQCtyww03WL3pqnuJVf97/fXXy263KyEhQU899ZTV43z79u3W8jabTQMHDqx3/XfccYdbj8vY2Fht2bJFknT48GFres2e7H379lWPHj3ccuzatavVY6jmvPWp2Sv1888/l9PprHfe//znP7r++us1cOBAGYYh0zT10ksvKS8vT1deeaWuuOIK9e3bV4MHD3brbVRcXKyxY8fq3XffPW0u+/btO2O+GzZs0KlTp6zX9957r+6999568z0T8//11GoqPXr0UEhIiIqLi7V9+3bFxMTommuuUWxsrHr37q0bb7xRXbp0adQ6PduZmppq/d/X11ejR4/Wb37zG0nS7t27dfDgwTp7FN53333W/yMjI63/+/j4aOTIkdbr2NhYq4dfzWPzbI4lT7fccot69epV73J1CQoK0saNGzVz5kwtXrxYR44ccYu7XC4tW7ZMRUVF+uSTT2S32/Xll1+quLjYmufXv/61fv3rX9e5/l27dumHH35Qx44d9emnn1rTb775Zrf9+OCDD2rWrFkNyrkl7OuGnnO87auvvtLUqVPrjKWnp+vOO++sM1bfsVHz+L/55pvdeiTee++9euihh3Ty5Elr3pr73tua4nxan6+//tqtJ/3ZGjdunAIDA884X80HhbZv314333yzJGn06NH63e9+J6mq9/GSJUv00EMP1bkOu93uFrviiivc4ocPH67zobADBgxQ796961zOG8fuiRMnNGHCBL3++utyuVz1zteQa9aZDBw4UB999JFmzpyp1atXWz21qx0/fly///3vVVFRoeeee67Oddxwww1u55F77rlHaWlp1nG/adMmpaenux2fFRUVbst4qu/6efnll+uWW26xXte37z3vGqp5nY6MjNSgQYOsO8jOVs1rnY+Pj1JSUqxr3b59+6yHtw8YMEDXXnutPv30U1VUVOj111/X448/7tab+Y477mjQXTTn8p7hH//4hx5++OFaDyv2tG/fPoWHhzd4vTV/r6tWrZLNZqtzPtM09cknn2jkyJFu17LQ0FAlJydbr5OSkhQZGanCwsJa6/DGe9Crr77aOl/U5O/vr/T0dP3hD3+QVPUA6dtvv10ffPCBfvjhB0nSZZdd5pYrAODCR/EcAFqRhIQEvfrqq5KqihSffvqpdWtt9XAsAwcOlN1u16lTp7Ru3Tq34nnv3r1POxyAZ8G0ZtGl5of3mh9OL7nkklrrCQsLsz64NKSIcOjQoTPOU616aIHrrrtOzz77rGbMmKGjR49q8+bN1tAgktSxY0f97W9/U1JSkiTpoYceOmPhXJJ1G7C38j127JhOnDihNm3a1DtP586d3V7v2LGjweuvyfMDdX1t8fPz05IlS/Tggw+qqKhIX331lTUchlRV7H7qqaf085//vMHb9vw9ex4XnoW3w4cP11k8v/zyy63/1zz+LrnkEjkc///bmpr/r3lsns2x5Ck2NrbB66ipU6dOeumllzR37lxt2bJFGzZs0D//+U+tWLHCKkZt2rRJ69evV2JiYqNyrc63Y8eO+vHHH61pnsOL1DfcSF1awr5u6DnnfHI4HOrYsaP69u2r9PR03XXXXfXOW9+xcbpzot1uV0hIiPbv319r3vOhKc6n9dmzZ0+9X0o0xsiRI89YPC8rK9OSJUus13feead1/PTs2VNXXXWVNYzUwoUL6y2eh4WFyc/Pz3rt+WVDfcfh2R67DT1PT58+3e3Lgfo05JrVEPHx8Xr33Xd19OhRbdy4UR9//LHeffddt6FNsrKy9Mwzz7idE6o19Lg/3+eNmvu35rmyXbt2ta7DDflC6Ewacq2rnmfSpEnWsCyvvPJKreJ5Q4Zskep+z9C9e/czLvftt9/qzjvvtIYlOp3GHldn83s93bWselpdxXNvvAc93XV+4sSJeu655+RyufT+++/r22+/dTvXpKamWkO5AABaB4rnANCKeI57/uSTT1ofFKuL54GBgerdu7e2bNmidevWuY2lfbrxzqWqXlM1GYZR53zVY11K0oEDB2rFv//++zrnrU/Nea6++mrdf//99c4bHx9v/f+xxx7TuHHj9Mknn+i///2vdu3apZUrV1q9dNPS0lRYWKhjx45pxYoV1nKjR4/WM888o06dOslms+m6666zetY2hGebpk6dWucHuGp1FRpq6tSpk6644grrd7Vq1Sp99913uuyyy86YS83eXSdOnHCL7dq1q97lhgwZooKCAm3evFlbt27V7t279Z///Ef//ve/VVFRoV/84he6/fbbFR0dfcYcpNr75MCBAwoJCbFe1zwm6pq/mucxWO1M+7Cu9TbmWKrJ39+/Qduqj8PhUHx8vOLj4zVp0iS99dZbGjFihBXfvXu3EhMTa+2Dhx9+uFav15qqj7EOHTpYPdY9//6qC1UN0RL2dUPPOd6WmJjoNrZ/Q9V3bAQFBVkFIc/fyalTp9zuMGjIOfFcnO/zaUvx1ltvuRXfXnvtNbfxz2tav369du/erZiYmFqxsz0GG7qcZw/cmufpI0eO1Do3VqvZg3/w4MF66aWX1LVrV9ntdqWkpLgVXb2pbdu2GjJkiIYMGaL//d//1c9+9jM9//zzkqSTJ09q7969dV4XznTcd+jQQZL78dm2bVurl3Zd6vsysKH7vnqbUtW+9vwiu7593xgHDhxwO297rrNmDmPGjNHUqVP1ww8/aPv27XrhhRes63SnTp3O+HyUakOGDHF7vXDhwnrvlqnpnXfesQrnhmFo0aJFuu2229SuXTvl5+frqquuatD261LzHDh48GANHz683nkHDBggyX3f1PVesr7rmTfeg57uOt+1a1cNHz5cK1as0KlTp/SXv/xFf//73614WlpavcsCAC5MFM8BoBWJiorS5Zdfrm+++UZSVfFAquop3K9fP2u+hIQEbdmyRR999JFbL6wzFc8b6vrrr7eKzZs2bdL27dut22b//e9/uz3kqa6hGk63vu+++073339/rQ/NZWVl+tvf/qbExERJVT2o7Ha7wsLCrA/6UtVDoPr06SNJ2rt3r4qLi62HllUbNWqU1XNr+/bt+uyzzxrV/n79+lm9+yWpTZs2+sUvflFrvvz8fB06dKjeImVNjz76qCZOnGi1ddSoUXr77bdr3cL9ww8/KDc315q35ofPgwcP6quvvlJUVJSOHDmiF198sc5tlZWVqaCgQD169FDfvn3Vt29fSVU99oKCglRSUiKXy6WtW7daRZKabair15rn7zk7O1tPPvmkpKpb82s+4DImJqbOXufecDbHkjc8++yzuuyyy3TXXXe59WKVVOtBe9W/s+7du1vD50hVPf3qOo6Kioq0fft268uI+Ph4rVy5UlLVFy0//vijtc7qO1OaQlPv6zMdg83p+uuv1/LlyyVJK1eutIbYkaQ33njDGrqiet7zncv5PJ/W/FLMU1JSUpMNQ9WQXtk1vfbaa3riiSfOTzKn4Xm314YNG6zC4jPPPFPv/qpZeL711lutwv+BAwfOeagRT5MnT9bIkSOVkJBQqxBd3/nL07///W8VFhZaw7Dk5ua6HffV15max//Ro0fVp0+fWsVg0zT1r3/9S1FRUWfbJLdtVnvjjTesOxAKCwu1fv36c1q/VHWtq35vdfLkSbceyp07d3brie50OvXwww/rqaeekiS3uzQeeOCBBvdm7t+/v/r166cNGzZIkpYvX65nnnmmzrs+Pv74Yx09elQ33XST2zHVvn17jR492vpyp+Y12pPne5j63gNUnwP379+vRx55RAEBAW7zlJaW6v3331dcXJykqmvZm2++Kamq4P3hhx9ad7esXbu23i/rvP0etC6TJk2yOl089dRT1gOY+/fv7zZMDACgdaB4DgCtzA033GB9yKn+0B0fH+9WsEtISNCf/vSnWh/KBw0a5JUcJkyYoBdffFEVFRVyuVxKTEzU2LFjVVlZqQULFljztWvXTg8//PAZ1zd58mTNmzdP5eXlOnDggK6++mqlpKSoU6dOKi0t1eeff661a9fq6NGj1vii69at03333adBgwapR48e6tSpk06dOqVly5ZZ6/X19VWbNm3Uvn17dejQweql+LOf/UxbtmzR0aNHtXDhQlVUVDSq/SEhIUpLS9Mrr7wiSfrtb3+rTz75RP3795ePj4+Kior00UcfKT8/X7/5zW8atN/HjRunt99+W6tWrZJUNX5oTEyMRowYoejoaB0/flyfffaZVq9ere7du1vFc8/iwKBBg5SUlKRPPvnE7QNkTT/++KOuvPJKXXXVVbruuuvUqVMntWnTRuvXr1dJSYk1X80iSc0hPt59911NmzZNHTt2VMeOHZWWlqa4uDglJSVZvXlnz56tgoICxcbGasWKFW7DBzVmOJjGOptjyRu2bdumxx9/XO3atVNiYqJ69eqldu3a6euvv1ZOTo41n5+fn1WwtNlseuyxxzRjxgxJVUWYXbt2aciQIQoICNC3336rTz75RJs3b9YDDzygYcOGSZJ++tOfWsXzH3/8Uf369dOoUaNUVFSkRYsWea1NZ9LU+/pMx2Bzeuyxx6zCUWlpqa677jqNHj1ahw8fdjsnhoeH6+677z6vuZzv82lL8M0332jNmjXW6169eunKK6+sNd9//vMfff3115Kk119/Xb/97W+b7O6Gau3bt1e3bt2sHsaZmZnatm2bSkpKTlsEv+KKK/TFF19Yy3z//fcyDEPZ2dnW2Mve8s477+iFF17Q5ZdfrsTERHXr1k0+Pj76/PPPtXTpUmu+vn371vvlycmTJzVw4EClpqbqyJEj1vVRqrqWjBo1SlLVFwE177S65ZZbdPfdd6t79+6qrKzUzp079eGHH+q7777TBx98oK5du551u26//XaFhoZaPaInTJigvLw8BQUFadGiRW7F/bP1l7/8RQcPHlTv3r31/vvvW0MFSVXnak+PPPKInnnmGZ06dcoqyEqN7838yiuvaODAgdY1+5e//KX++te/Kjk5WR06dND+/fu1du1abd26Vc8995xuuukmtx7yP/74o26++WbdcMMN+vTTT916Vnuqee6VqvZjcnKyHA6Hbr/9dsXGxurxxx/X22+/LdM0tX37dvXs2VMjRoxQx44ddejQIW3dulX//ve/demll+qee+6RJN1///2aOXOmtR/uvPNOpaenW+2rj7ffg9Zl6NChio2N1c6dO91+Tw0dWgcAcIFp8keUAgDOq7lz55qS3H6mTZvmNs+BAwdqzRMTE1Pn+rp06WLN85vf/MYtNnbsWCuWmJjoFsvJyTGdTmet7VT/BAQEmO+9957bMomJiVZ87NixbrGlS5eabdq0qXd91T81t3+meadMmWLN/9RTT9U5T8+ePc1rr722zrw++OADt3kLCgqs2NGjR83BgwefMQfPfXo6R48eNdPS0s64zquvvtptueuvv77O+YYOHVpn/t99990Zt3HdddeZJ0+etLaxfPnyOue76qqrrHm++eYbs3v37qdd70MPPWS6XC5rmVdffbXO369pmuZvfvMba3qXLl3cYqc7Nht7LJnm6f8OGqJmPvX9GIZhZmVluS1XWVlpjhkz5ozLev69jB49us75br75ZrfXr7322gW1r0+3rYYcg6dTc7ue627ocqc7NubMmWPabLZ690FoaKi5adMmt2VO9zs5U7w5z6fN7cknn3TL7ZNPPqlzvqysLLf51qxZY5rm6Y/30533T7fPT7fO+fPn17lP4+LizNDQ0DqPr/p+J5dddpl500031XksFxQUuM37wQcfNGh/1jzG6/tp166duWHDBrflau6P/v37m8HBwbWWs9ls5t/+9je35bZv325GRESccZs18z/dueF0fyfLly837XZ7ne3p06dPo88JnsdHUlJSnbnHx8ebJ06cqHMdd911l9u8119/fYO27Wnz5s1mbGzsGffjc889Z5qmaVZUVJi9evWqcx7Pa5jnsVNzX9X8qfm7ff755+vc1zV/PP82XnzxxXrn69Gjh/X6wQcfdFvO2+9B6/KnP/3JbZ1t2rQxf/zxxwb/fgAAF466H3MNALhgeY57LtUejiU0NLTWw6O8NWRLtdGjR2vLli366U9/qujoaPn5+cnPz0+xsbGaOHGitm3bpptvvrnB67v77rv1+eef69FHH9WVV16pgIAA+fn5KSoqSoMHD9bs2bPdHqQ5aNAg/e53v9Mtt9yi6OhotWvXTg6HQ6GhofrJT36ihQsXas6cOdb8v/rVr5SVlaXY2Fj5+Pjo0ksv1U9/+lOtXbu21m3pDREQEKA1a9bo9ddf19ChQxUaGiofHx917NhRV199tdLS0vTWW2/pV7/6VaPW+eqrr+rTTz/VxIkTrQe8+vj4qHPnzho4cKCeeOIJ6zbnau+8847S0tIUEhIiPz8/9e3bV0uWLNH06dPr3E5QUJBeeOEFjRkzRldeeaWCg4Nlt9sVGBiovn376oknntA///lPt7Gvb7/9dr3wwgvq0aNHvcPQdOrUSZs2bdLvf/979evXT4GBgXI4HLrkkkt06623avny5Xr55ZfPe8/Pxh5L3vD0009r0aJFevDBB9WnTx9dfvnl8vX1tbZ733336aOPPtKECRPclrPb7XrjjTe0fPly3XHHHerUqZN8fHwUFBSknj176p577tFf//pX/elPf3JbLjs7W0899ZSio6Pl4+OjyMhIzZgxo9ZQPfUNseAtTbmvG3IMNqfHH39c//nPf3TvvfcqPDxcvr6+8vf3V69evfSrX/1Kn3/+ua699tomyeV8n0+bW82xza+88kq3YctqGjNmjNtdWY0d6sVbxo0bp7lz51rXn86dO+sXv/iF/v3vf9c79vLo0aO1ZMkSXX311fLx8VFISIjuueceffLJJ+rUqZNX81u1apX+/Oc/a8SIEerZs6dCQ0PlcDjUtm1b9erVS4899pi++OILXXfddfWu44orrtDGjRs1cuRIBQUFqU2bNho4cKBWrVqlkSNHus3bvXt3bdu2TU8++aT69etnXecuv/xy9evXT48//rj+/e9/1/l+p7Fuv/12rVmzRgkJCWrTpo06dOigO+64Qxs2bFCvXr3Oef0vv/yynn32WXXv3l2+vr7q1KmTfv7zn+uf//xnrSG8qk2ePNntdXVv68a65ppr9MUXXyg7O1t33XWXIiIi1KZNG7Vt21ZXXHGF7rzzTi1atMjqfe3j46N//etf1vsFp9Opnj176qWXXtLMmTNPu60333xTd911l4KDg+u9hk+ePFmbNm3SQw89pJiYGPn5+SkgIEDdunVTcnKy/vSnP2ndunVuy4wfP17Lli1T37595XQ61bFjR6Wmpurjjz92e/Cu57XM2+9B65KWlub2/vDuu++uNQwTAKB1MEyziQYeBAAAQJPwfPBdtRdeeMGtMPPNN994vdAGAFLVGPdr166VJI0dO7bZvpy40Hz77bfWUCj+/v7av3+/2rVr18xZNY/6rmVbt25V3759rWfL/PWvf9W9997b1Onpiiuu0M6dOyVJ//znP2uNzw8AaB0Y8xwAAKCVSU1NVXl5uYYOHaouXbro2LFjWrdunds4sXfffTeFcwBoIT788EMdPXrU7U6iBx544KItnEvSSy+9pOzsbI0cOVLR0dGy2+36/PPP9cILL1iF886dO+uuu+5qspy2bt2qgwcP6p133rEK5z169NDgwYObLAcAQNOieA4AANDKVFZWasWKFVqxYkWd8euuu05/+ctfmjgrAEB9PIuvISEhysjIaKZsWgbTNPXpp5/q008/rTMeFham5cuXN+nDih977DHrjgpJMgxDzz77bJM/bBgA0HQY8xwAAKCVGTt2rO68805FRETI39/fGsc/OTlZCxYs0EcffaSgoKDmThMA4CEoKEi33nqr1q5dq8suu6y502lWSUlJSktLU2xsrNq3by+73a6goCANGDBAmZmZys/PV58+fZolN39/f8XHx2v58uVKTk5ulhwAAE2DMc8BAAAAAAAAAPBAz3MAAAAAAAAAADxQPAcAAAAAAAAAwAPFcwAAAAAAAAAAPFA8BwAAAAAAAADAA8VzAAAAAAAAAAA8UDwHAAAAAAAAAMADxXMAAAAAAAAAADxQPAcAAAAAAAAAwAPFcwAAAAAAAAAAPFA8B9Ak0tLSZBiGkpKSmjsVAAAuKoWFhTIMQ4Zh6MMPP5QkzZw5U4ZhKDIy0povMjJShmFo5syZzZInAAAA0NJQPAcuEklJSdYHZ8+fv//9782dHgAAaKCa1/Srr77aLVZcXKw2bdpY8WnTpsnpdKpfv37q16+fAgMDmylrAABah4qKCmVlZSkhIUHBwcHy9fXV5ZdfrhtuuEGZmZk6evRoc6cIwIsczZ0AgKbl6+ura665xm1acHBwnfNWVFTI19e3KdICAABnYdu2bVq3bp0SEhIkSS+//LLKysrc5rnsssv0ySefNEd6AAC0Kj/++KNuvPFGffrpp5IkPz8/xcbG6sSJE9q4caPWr1+vkSNHqnv37rWWNU1TlZWV8vHxaeq0a+GzPtBw9DwHLjLVH6Br/rhcLquH2t/+9jddd9118vX11RtvvCFJ2rFjh0aNGqXQ0FA5nU716NFDL774ott633vvPQ0YMEAdOnRQmzZt1LVrV40aNUqHDx+ulcNf/vIXde3aVe3atdOtt96q/fv3N0nbAQBoTao/fP/5z3+WJJ06dUpz586t9aG8rmFbGuLjjz9W27ZtZRiG/ud//kemaXotdwAALkSTJk2yCucTJ05UcXGxvvjiC+3Zs0c//vijli5dqo4dO2rhwoXWtXflypW66qqr5OPjo48++kiStH79eg0dOlTt27e3PmPPmTNHp06dsrZlmqbmzp2ra665Rm3atFG7du103XXXaevWrdY877//vhITE9WuXTu1adNGN9xwgz744AMrXvM9wMsvv6yf/OQn8vPz069+9SvrGv/yyy9b82/bts2any/egSoUzwG4uf/++/X1118rOjpahmFo165d6t+/v5YuXSqXy6XY2Fh9+eWXmjBhgn77299Kkg4ePKi77rpLn3zyidq3b6/Y2FjrjUNJSYnb+jdu3KhHH31UPj4+Onr0qN599109/vjjzdFUAAAuaHFxcYqKitLf//537du3T2+//baKioo0cuTIc173li1bdPPNN+vYsWMaP3685s2bJ8MwvJA1AAAXppKSEuXm5kqSevfureeff17+/v5WvE2bNrr77rvVsWNHt+XuuOMOHTt2TF26dJEkffjhhxo8eLD+8Y9/yG63q0uXLtqxY4emTp2q8ePHW8s9+uijmjhxorZu3aqAgAB16dJFn332mQoLCyVJubm5uuWWW7Ru3TqFhITosssu0/r163XTTTe5FdCrVa+rW7duCg4O1r333itJWrBggTXPsmXLJEmxsbHq37+/F/YacOGjeA5cZPbu3VtrzPMff/zRit91113at2+ftm/frvvvv19PPvmkSkpK1LNnT3399df6/PPP9dxzz0mSnnrqKR05ckRFRUWqqKiQv7+/tm/frs8++0yHDh1SXl6eQkND3bZfXl6ujz/+WDt37tRdd90lSfrnP//ZZO0HAKC1sNlsmjhxoiorK/Xiiy9aPdAnT558Tuvdvn27hg4dqpKSEk2YMEFz586lcA4AuOjt3LlTlZWVkqSEhATZbFUltfHjx7t9vp42bZrbco8++qgKCwu1Z88e3XDDDfrNb36jyspKdenSRV999ZV27typn/3sZ5KkV155RV999ZUKCwuVlZUlSRoxYoS+/fZbffHFF9q3b5+uvfZaSdK0adNkmqbS09NVUFCgPXv2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HlFaWpokKSEhQf/973+VlpamunXr6txzz/VbG0oCfaN4Z5xxhp5++mndeuutatu2rRYuXKjNmzfrhRdeUK9evbRkyRK9+eabuuOOO3Tw4EHt379f+/bt04YNG1SnTh3nOFbE7UNlTf5VXo/Ho9zcXD311FOaPXu2AgIC1KFDB7Vs2VIul0uTJ09W9erVndui7rnnHs2cOVOSNGDAADVr1sxvbShp+beAPf/882rZsqWuvfZajR49WvXr19fUqVM1b948rV+/XoGBgZKkvXv36plnntG6deskSW3atPFb3VE2MD4XRuzOQ98oHrH7KGJ3YcRunGyMz4URu/PQN4pH7D6K2F0YsfvEkDz/B4KCgtSyZUtt375dX3/9tXN7z9dff62DBw+qZcuWSkxMdG6BqV27tjp37qwffvhB27dvV+vWrVW/fv1yMRjltyH/lo5nnnlGF1xwgR555BHFxsYqJydHU6dO1ezZs7Vjxw5dfPHF6tSpk6644gpJ0r/+9S/df//9Cg4O9lsbShJ9w1vB9eSys7Plcrk0Z84cTZ8+Xdddd52aNm2q8847T6effrpeffVVNWvWTOvWrVNMTIy+++471alTR/fdd59q1KjhHLPgLWVlTcEvu5J0+PBhBQQEqF69evr888/16KOP6oYbbtD+/fvVt29fVa5cWc8++6yWL18uKW8ttptuuslv9S9JBfu4mWn16tUaNGiQDh06pA0bNui1117T/PnztWLFCrVp00a9evXStGnTNH36dA0ZMkQHDx7UPffcowEDBvixFShLGJ+PInZ7o294I3Z7I3YfRexGaWN8PorY7Y2+4Y3Y7Y3YfRSx+58heX4CMjMztXDhQu3cudN574YbbpDb7dY777yjnJwcXXHFFUpPT9frr7+uUaNGqWbNmpo0aZIGDBigu+66S+eee6727NmjqlWrOscoy4PRH3/8Icm7DbNmzdLGjRu1du1aXX755Zo3b54++ugjXXTRRbr00kt1xx13SJJeeeUVud1uZWVlKSQkRJUrVy6zT+2lbxTNd0bEzp07VblyZT355JM655xztHr1amfbxx57TN9//71uvPFGXXPNNbrxxhs1YMAA56E3BY9X1uX/uy5cuFAdO3bUDTfcoDFjxmjYsGF68MEHNXv2bM2bN09nn3220tLS9H//93/q1q2b9u/fL0mKioqSy+Uq8+cjNzfXORf5/123bl0tXbpUZqY6deqocePGuv322zVp0iRJ0n//+1+dddZZWrlypW644QY1adJEVapU8WczcIpjfC6M2J2HvlE0YnfRiN15iN0oDYzPhRG789A3ikbsLhqxOw+xuwSclMVgyqlffvnFWrRoYYsWLXLee/nll61BgwZ2wQUX2Ouvv25mZs8884zFxsbaL7/8YmZmX3zxhVM2f/58GzRokKWnp5d+A0rQxo0bbdCgQTZgwAAbNGiQjR8/3szy1sm6/vrrbenSpTZ27Fjr1KmTvfPOO85+mzZtMpfLZV9++aW/qn5S0De85a+Xlu/pp5+2Fi1a2PXXX2/XXnutmZmtXr3awsPDnTWzzMw2b95sS5cutWeeecYyMjKKPV55sGzZMuvQoYN9/PHHlpSUZM2bN7eJEyeamdl7771n3bp1s2rVqtlnn31mZnnri5VHBw4csFtvvdUefvhhW716tZmZjRs3zi688EKv7Ro3bmzTpk0zM7OsrKxSryfKLsbno4jd3ugb3ojdf43YnYfYjZON8fkoYrc3+oY3YvdfI3bnIXb/MyTPj1P+IDJlyhQbOXKkvfzyy9a9e3e74oorLDk52R5//HEbPXq0bdu2zbZs2WLXXHON3XPPPc7+69evt06dOln//v3L9EMGsrOz7fbbb7cOHTrYtGnTbMeOHRYfH29169a1+++/37KysmzcuHFWvXp1e+WVV5z9EhMT7YsvvjAzc/4//5z6PuSkrKFvHLV79+5C773yyis2evRoS0tLs2XLlpnb7bZly5aZmdkVV1xhAwcOtJUrV9rQoUMLBeuy3jcyMjIsISHB64tKvptvvtnr4T3ffvut1alTx/kS9+mnn9oFF1xgy5cv99qvLJ+Tgg8lMTN78803rX379vbss8/aCy+8YA0aNLBPP/3UPB6PVatWzZYuXepsO2/ePJsyZcoxjwf4YnzOQ+wujL5xFLHbG7HbG7EbpY3xOQ+xuzD6xlHEbm/Ebm/E7pJH8vw45Q8u6enp1qtXLzvzzDPtjTfecMo3bNhgV155pT377LNmZvb22297PX02OTnZ60pwWZSdnW1PPvmkhYSE2NatW73K3n77bbvgggvsnXfesbfeesu6du1qn3zyiZmZzZo1y1q0aOE85TpfebmqSd/4+zMi9u/fb3369LGePXs6swfyz2d56B+//PKLnXXWWbZo0SLnKdX5QfiZZ56xgQMHem1/4YUXegXt8nAOzPLaUVRbnn76adu8ebP98MMP1rdvXxs2bJjz5PvnnnvOTjvttNKuKsoZxmdid3HoG8Tu4hC78xC74S+Mz8Tu4tA3iN3FIXbnIXafPCTPT0D+1ZYFCxZY3759LTk52cyO/lE++uijdsMNN9iePXv8VcWTbu3atXbDDTfY888/b2bmDExmZv3797cxY8aYmdmzzz5rHTp0sO7du9uAAQNs/fr1fqlvaamofeOfzIgo77dF5Qet//u//7OrrrrKfv31V6/yzz77zIYMGeLcErV48WK7+OKLLS0tzWu7sn6Vt2D9d+3aZePHj3f+Ps477zxr27atXXLJJZaQkOBst3fvXjMz69Gjh23atKnY4wHHo6KOzwURu4tWUfsGsbt4xO48xG74W0UdnwsidhetovYNYnfxiN15iN0nF8nzY3j99dedq7a+HWfIkCH24IMPWkpKivPewYMH7fDhw6Vax9KWmZlpr7zyig0YMMC51SkzM9PM8gJY69atnXOVkZFhP//8s7NvcVfByiL6xj+fEZE/IyBfWb4tqigFZ0b07NnTXnjhBTt06JDXNh9//LFFR0dbv379rEOHDs5tdeVBwb/1zMxMu/vuu+2WW26xgIAAGz16tJnlfdmPiIjw2mfkyJE2ffr0Uq8vyg/G58KI3XnoG8Tuv0LsJnbDPxifCyN256FvELv/CrGb2F0a3P5+YOmpLD09XR988IEkye3OO1W5ubmSpNtuu03vvvuu1qxZ42xfvXp1Va1atcw+ubqg4toQFBSkzp07q2HDhnr55Zed9yTpu+++U//+/eV2u+XxeFSlShWdeeaZko4+0besP8U6X0XuG/kqVaqkTp06afDgwXr33XclSTk5OZKkfv366fTTT9f777+v/v37a8iQIZowYYJ69OihJUuWaP78+Ro7dqzX8QICAkq9DSeTy+WSx+NRjRo1dM011+itt97Shg0bnPJDhw7J7XZrxYoVmjJlir788kv16tXLjzUuGfl9PP9vPScnR3fffbe2bNmiiRMnatasWYqPj9fXX3+tq666Sg0aNNDQoUN1//3367zzzlOVKlU0cuTIQscDjldFHp+J3cdWkftGPmL3sRG7id3wj4o8PhO7j60i9418xO5jI3YTu0tDhU+e33vvvXr44YclSXv37tVb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zC655BL75ptvLDMz01q1amUtWrTweuLu66+/bn/++aeZmdf7n376qb3//vulXveSlN+eTZs2mcfjcdY5eu6552zgwIHOdjt37rS6devaypUrzcxs2LBh1q1bt0LHKw9X9OgbRavIMyLyMTPiKN9b/x5//HGrUqWKde7c2bnCP3/+fOvYsaMtX77c2e7FF1+0O++808wK32II/BXG5zzE7sLoG0UjdhO7CyJ2wx8Yn/MQuwujbxSN2E3sLojYXTaUm+S57xWVlJQUO/vss61Vq1a2Zs0aM8tb92fq1Kl2ySWXWFZWlu3fv99uv/12a926tX399df+qPZJ9fbbb1unTp1s/fr1Zmb26KOPWp8+fczM7L333rMBAwbY9u3bzczs4MGD1rFjR+vSpYuZmR04cMB+/fVX/1S8hNE3CmNGRGHMjDiq4CyGPXv2mJnZqlWrbOTIkXbHHXc4Qfzrr7+2O+64w9q3b29Lly61AQMGWOfOnW316tXO/uVh/T2cPIzPhRG789A3CiN2F0bsPorYjdLC+FwYsTsPfaMwYndhxO6jiN1lR7lJnudbuHChff3115abm2v79u2zxx57zK6//nrLzMw0s7zgFBMTYwMGDLCzzz7bxo0b56wjVN78/PPPdu+99zpXL9esWWMdOnSwVatW2W+//WY33XST3X///WZmtnnzZrv//vutZcuWtmTJEucY5elWIPoGMyKOhZkR3tLT0+22226z7t272+TJk23t2rW2a9cuu/baa+2///2vs92hQ4fsueees9tvv93i4uL8WGOUZYzPRxG7vdE3iN3HQuz2RuxGaWJ8PorY7Y2+Qew+FmK3N2J32VBmk+e+V1Xef/9969y5sw0ZMsSuv/56u+++++zIkSO2evVqu/zyy+311183s7wn9JqZpaWl2bZt25z9y8NaQAsXLiy05lP+E5tXrVplZmaTJ092roKvXr3aWrZsaX369LGmTZvam2++aTfeeKO9++67pV73kkTfKBozIrwxM6J4mzdvtn79+tlzzz1nW7dutYsvvth69OhhZnlX/WNjY23t2rW2aNGiIseL8vI3g5LH+FwYsTsPfaNoxG5vxO7iEbtxsjA+F0bszkPfKBqx2xuxu3jE7rLDrTLI4/HI5XLJ5XJpz549Sk9P13PPPaenn35aCxYs0M8//6z3339fc+bMUefOnXXhhRfqmWee0YABA3TvvfcqJSVFNWrUUEREhDwej8xMAQEB/m7WP3L48GGtWbNGK1eu1OHDhyVJc+fO1aRJk+TxePTiiy8qOztb1113nbKzs/Xiiy+qc+fOWrZsmSZOnKiff/5Zp512mr755hs1btzYv435B+gbxWvWrJkuuugizZkzR5LUo0cP/fnnn1q9erXOPPNM1a1bVzNmzJAk7dmzRz169FBKSoqWLl2qmjVrKioqSh6Px48tKFn5/66vv/661q9fr1q1aumjjz7S1VdfrZdeeklZWVmqXbu2/v3vf6tWrVoaOnSounXrJrfbrTVr1qhdu3Z+bsE/9/7772v48OG67bbb9OSTT+qXX36RJO3du1dnn322unXrpjFjxqh27dp6/vnnJUkDBgxQkyZNNGzYMMXHx6tNmzbO8cxMksrN3wxKFuNzYcTuPPSN4hG7vRG7id0oXYzPhRG789A3ikfs9kbsJnaXC35L2/9DHo/HHn/8cWvXrp3t3bvXDh48aIsWLbLWrVvbww8/bE8++aT169fPfv/9dzMze+GFF2z69Ol+rvXJkX+197PPPrNRo0bZrbfeapdeeqn179/fvv/+e/vll1/sqquusldeecXM8h4sEBUV5dw6tHXrVrvqqqvsX//6l9etMGUVfSMPMyK8MTPiqN9++82uvPJK69Chg8XHx9szzzxjl112mbVp08YOHTpky5cvt+joaOvQoYMtXbrU2e/DDz90brf86aef/FV9lGGMz0cRu73RN/IQu70Ru48idsNfGJ+PInZ7o2/kIXZ7I3YfRewuP8pE8tx3/a/Vq1fbmDFj7NZbb3WeKuvxeGz48OH20UcfmZnZs88+axERETZu3Li/PF5ZVNyaV88++6ydeeaZNmXKFOe9tLQ0e+GFF6xv3762bds2O3TokH3xxRdOeXp6urPGVllD3yjaoUOHbNy4cXbTTTc568e99tpr1qZNG+vUqZNdffXVlpWVZdu2bbOePXs6T7Xevn27ffnll5adnW0rVqyw8847z3788Ud/NqVEFPx3/eOPPywtLc369u1r69ats5ycHOvUqZOdc8459tJLL5mZ2X//+1/r3Lmz9e/f36644grbt2+f8zeXm5tbptec++abbywiIsJuu+02r/dTUlLsoosuslGjRllaWpp17tzZ5s6d65TfcccdNnjwYNuyZYvXfmX5ywxO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SHp6uk2dOtWqV69eaGD+8MMPbdCgQVa1alWbN2+emZWfPzr6xl+ryDMi8jEz4qiC5yIlJcXuv/9+GzJkiHMl/Msvv7R///vfXg+vMTs65mzZssV5z+PxlMu/GZQMxufCiN156Bt/jdhN7C6I2I3SwvhcGLE7D33jrxG7id0FEbsrtlJNnvt2kKysLDPLu4p1xRVX2HvvveeUTZ061fr06WPbt2+3Q4cO2bfffmsvvvii8yRns7I/QGdnZ9uBAwec14cOHbJHHnnEVqxYYXv37rV9+/ZZr1697MEHHzQz7wH58OHDFhMTYyNGjCjtap8U9I3CmBFxbBV9ZoRvH//www9t79699tVXX9n555/vPL08KyvLZs+ebVdeeaWtXbu2yH3NyscMAJwcjM/eiN1H0TcKI3YfG7Gb2I3Swfjsjdh9FH2jMGL3sRG7id0wK9VV6PMXvt+wYYOuueYajR07Vm+++aaqVaum7OxsffbZZ862ffv21aeffqqZM2cqOztbZ599tm688UY1adJEHo+nzD+J948//lC3bt2chyjMnTtXF154obKzs7VixQr17NlToaGhuvrqq/Xtt9/qhx9+kMvlUm5ursxMVatW1fDhw3XGGWf4uSUlg77hLTc31+uBGQcPHtQ777yjV199Vddff71CQ0Pldrt13XXX6dFHH9Urr7yijz76SFWqVJFU/EMryqr8h20UbNcjjzyi/fv3680339TTTz+tQ4cOacGCBRo6dKg6duyoyy+/XNddd506d+6sBg0a6N577y10vLIsv4+//fbb+ve//6177rlHixcvVvv27XX55Zfr8OHD+umnn1S5cmV17txZtWrV0ssvv+y1b0H5TwQHfDE+H0Xs9kbf8Ebs9kbsLozYjdLC+HwUsdsbfcMbsdsbsbswYjck6aSOdJmZmXrooYe0YsUK5733339f11xzjXr06KHo6GjNnj1bTz75pKZNm6YXX3xRixYt0s6dO7Vs2TINHDhQvXr1Uq1atZz98wfosvok3nzh4eE6dOiQvvvuO0nSt99+q9WrV2v48OH65ptvVK9ePeXm5urCCy9UVFSUnn32WUl5f2hmpi1btujWW29VnTp1/NmMv42+UdiRI0eUmpoqKe/f+fDhw5oyZYo++ugjZWZm6sYbb1Tnzp21dOlSSUcDWs+ePTV//nz179/febJ3WT0HvszM6ynmR44ckZT3FPidO3fq6quvliT17t1bPXr00OLFi7Vjxw7Fx8dr6tSpuvDCC/XWW2/pscceU2BgoBO8y+KXvN27d2v+/Pn6888/JUnZ2dkaO3asnnjiCfXr10/BwcH68MMP9dNPP2nw4MHKzc3Vu+++K0mKiorS4MGDdcstt/izCSgjGJ+LR+ymb/gidhdG7D6K2I3SwvhcPGI3fcMXsbswYvdRxG4U6WROa3/11VfN5XLZqFGj7Pfffzczs0ceecS5rSE3N9e+/PJL69atmx04cMBeeuklu/7666158+Z25513Ord/lAfp6elOe44cOWJHjhyx8ePH29NPP22///67devWzXr37m0XXnihJSQkmNnRW6iWLFliN954o9fTeP/44w97//33S78hJYS+4W337t124YUX2jfffGNmeQ/YOPvss23ixIl277332tlnn21meeuMXXbZZfb999+bWd4tP/m3mb355pt27733+qP6J90PP/xgI0aMsBtvvNEWL15sZmaDBg2y++67z9nm+++/t2rVqtkDDzxg+/fv99o/Nze3zK5Dl7+W4Lfffuvc/mWWNz4MGDDA6TMbNmywW2+91R566CEzM3vppZdswIAB5fKBNTi5GJ+PInZ7o294I3YfG7Gb2I3Sw/h8FLHbG33DG7H72IjdxG4U7aReBnK73erQoYOCg4P1xhtvSMq7clWzZk0dPHhQbrdbderUUaVKlbRlyxbdcMMNeumll/TRRx9p2rRpqlq1arm4zWPnzp0aNGiQpk6dKkkKDAxUYGCg9u7dq02bNqlmzZqqUaOG6tWrp88//1wxMTGSpHvuuUdr165Vv3799OKLL+r00093jnn66aerd+/efmlPSaBveKvoMyLyMTPC2++//67+/fvr/fffV5s2bVSrVi2NHz9eGzZs0O+//6709HS5XC5lZWWpZcuWqlKlipYsWaK1a9fqsssu09VXX60LLrjA381AGcP4nIfYXRh9wxuxOw+x2xuxG/7A+JyH2F0YfcMbsTsPsdsbsRt/pcSS53/88Yd69+6tmTNnKiMjQ5LUvn177d+/XzVq1NAPP/ygXbt2qW3btkpKStLnn38uKW8Q8ng8Cg8Pl5R320v9+vXl8Xi8bhspy8444wzdc889eueddzR+/Hht27ZNkjR48GCtW7dOVatWVc+ePfXnn3/qkUce0csvv6xzzz1XGRkZatWqlbMmUlkNWvSNwg4ePOici5ycHOXk5OiSSy7RgQMHtHv3bq1fv14xMTG64YYbFBsbq/fff1+5ublq2rSpLrroIknSnj17JOV9IapWrZpefPFF3XnnnX5rU0lYuHChHn74Yb3xxhvavXu3JOnrr79W9+7dNXLkSI0bN0733Xef3n77bYWGhmrq1KlatmyZevbsqT/++EMvv/yyOnfu7HXMshi889WrV08NGjTQe++9p9TUVOXm5mrjxo368ssv1ahRIwUHB+vNN99Uenq6pLzbxJo1a6aVK1cqJCREQ4cOVaVKlfzcCpzKGJ+LR+ymb/gidheN2O2N2I2TjfG5eMRu+oYvYnfRiN3eiN34KyU2Cn733Xdavny5FixYoEmTJmnr1q1q1KiRhgwZopYtW8rMFB8fr5iYGLVo0UJTp07VlVdeqUsuuURDhgxR3bp1vSvmdpfpQdpXz5499eqrr2rTpk269dZblZycrJCQEDVs2FBpaWm64YYbdOuttyorK0uffPKJZsyYoRkzZqh69erOMcrq+aBveGNGRPEq+syI33//3Vk/Lzs7W5L07LPPKjExUe+9955atGih3r17a9WqVdq4caMef/xxrV27VmPGjFHfvn21fPly1atXTz/88IMzOwI4FsbnYyN20zfyEbuLR+wmdqN0MT4fG7GbvpGP2F08YjexGyemxEbCSy65REOHDlW9evUUFBSk2267Td9++60+//xzdenSRV26dNF3332nxMREPfjgg5oxY4b69eunNWvWaNSoUSVVjVNa69at9fzzz6tevXq6+eab9cMPP+jzzz/XkSNHVL16dfXo0UNTpkzR/Pnz1b59e+ehDWUdfcNbRZ8RkY+ZEYWtWrVK1157rXbs2KHKlSsrOztb06dPV1JSkubPn6/t27frqquuUkBAgN544w01bdpUc+fO1eWXX64bbrhBr7/+umrWrKnIyEhJZfvqP0oH4/NfI3bTNyRidz5id2HEbpQ2xue/Ruymb0jE7nzE7sKI3ThRJdrbJ0yYoHXr1umqq65S69attWTJEn366adau3atevfurRo1amj27Nk6fPiwmjdvriuvvFKhoaHKzc2tMFdq6tWrpxdeeEHnn3++VqxYoV27dumzzz4rtJ3H45HL5SrTA1JB9A1vFXlGRD5mRhR2xRVXqF27dnrxxRf1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C9uSJUvUpUsXVa1aVc2bN9c777xTmqcJAFBBnHfeeXrmmWckSTk5OZo1a5Z+/fVXdejQQYsWLZLH41F0dLR++eUXjR49Wg8//LAk6ZxzzlGdOnUkSaeddppzQTo4OFj79u1Thw4dNHv2bB08eFAtWrTQ9u3bNWnSpCITswsXLtQzzzyj8PBw1apVS5J0ww03aOHChcrIyFC1atU0fvx4r4RzvsGDB+vhhx9WcnKymjdvrqysLM2ePVtdu3Z14nS+nTt36uqrr5bL5VJGRoZWr16t2NhYSVJkZKSaNm3qbJvfngYNGui7777TyJEj9d1336lu3bpq2rSpfv/9d82fP/+f/wMU8Omnn2rTpk2qW7eumjdvrj///FNvvvmmevbsqczMzELb9+vXT9nZ2XK73frhhx/Ut29f7dq1S5L02Wef6aKLLtL777+vqlWrqnHjxvrmm280dOhQJ1lf0MSJE7VixQpFRUUxExAAUCIX2otS3LItH374oXr27KmaNWuqSpUqat68uebNmydJ2rp1qy699FJFRESoatWqqlq1qlq1aqWnn35aZuYc47333lPHjh1Vq1YtVa1aVU2aNNHQoUO1f/9+SdIvv/yiAQMG6PTTT1flypVVt25d9erVS1999ZVzjONpU/5SNPfcc4/Gjh2r0NBQnX766brtttu8JgkA5ZYBKJe6du1qkqxRo0aFyj755BOTZJKscuXKVrduXWvevLnNmTPHkpKSrEaNGibJatSoYS1atDCXy2WS7OKLLzYzs127dtkFF1zg/K9JkybO8R577DEzM3v88ced96Kjo61+/fomyapXr25JSUmF6lGpUiVr1qyZVa1a1STZaaedZikpKaV2vgAA5U9xsTAlJcWJP3369LGRI0eaJGvVqpUdOnTIzMyefvppk2RVq1a1tLQ0MzO79tprTZJ17drV63gPPfSQSbLw8HDbs2ePmZktWbLEJJnL5bJff/3Vqz6VKlWy9evXm5lZTk6Obdq0yanPXXfdZWZmP/30kwUGBnp93qeffupst3LlSjPLi8n5sfPll182M7MHH3zQ2e6tt94yM7M77rjDee/w4cNmZjZ79mznvYIWLVpkkqxp06aWm5vr1DP/M/9K/nmSZBdccIGde+65Th0l2aJFi8zMbMOGDZadne3s9+GHHzrbrFixolAdZ8yY4eyXf27uueceMzPr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lJWVpaysLOd1WlqapLxlYTwez99pJv6CeTxymeQq+jl0ZZLL8tpFnwHgT4xBAAAAAAD4399Knr/22muSpFdffVXjx4/X3Llz5XK5vLYx886oFiwvqbKCpk6dqsmTJxd6f+/evcrMzCx2P/x9B3Oy1CS7srItwN9VKTGVXQFK2btPWYFB/q4KgAosPT3d31UAAAAAAKDC+1vJ83zXXnutRo0a5bzeu3evM/t869atatiwoSSpYcOG2rJli1dZnz59vMrat29f7H75Cpb5mjBhgsaNG+e8TktLU0REhMLCwhQcHPxPmoliBB3JUPLWbGV4jvi7KiWmqruSQsPqqGalqv6uCoAKrEqVKv6uAgAAAAAAFd4JJc/T0tJ08OBB1a9fX5L05ptvKjQ0VCEhIRo6dKji4uL00EMPKTExUbt371bnzp0lySmbM2eOkpOTtXLlSs2YMcMpmzlzpgYPHqzU1FQlJCRo2bJlTtnYsWM1evRoBQYGatasWZoyZUqRdQsKClJQUOHZwm6321mXHSXL5XbLXJK5/nrbssJcee2izwDwJ8YgAAAAAAD874R+naempmrgwIFq3bq1zj77bMXFxemdd96Ry+XS448/ri+++ELNmjXTyJEjNXfuXAUG5uXmx48fr4yMDEVFRalXr16Ki4tTSEiIJGnEiBE688wzFR0drfbt22v8+PFq0aKFJKlbt26KiYlR69at1aJFC11yySXq3bt3CZ8CAAAAAABODZmZmRo4cKCio6PVtm1b9e7d27kje8+ePerdu7eaNWumVq1a6bPPPnP2O3z4sIYPH66oqChFR0dr8eLFTpnH49Ett9yiyMhIRUVF6fnnn/f6zClTpigyMlKRkZGaOHFiqbQTAICy4IRmnkdEROirr74qsiw8PFzLly8vsqx69epKSEgosiwgIEBxcXHFfuakSZM0adKkE6kmAAAAAABl1k033aRLL71ULpdLzz33nG666SYtX75c9957rzp06KBly5YpMTFRQ4YM0W+//abAwEBNmzZNQUFB2rRpk5KTk9WxY0d1795dtWvX1rx585SUlKSNGzcqNTVV7dq1U48ePdS8eXOtWrVK8fHx+v777xUYGKhOnTqpc+fO6tWrl79PAwAAfsd94QAAAAAAnCKqVKmiPn36yOXKWx+zQ4cO2rx5syRp4cKFGjNmjCSpffv2Cg8Pd2af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SHvuuefMzOzQoUP24osvWt++fW337t1mZpaYmGgPP/xwYCZdQVwul+d/Z2ZmWmpqqhUUFJiZWceOHe2ee+4xM7MVK1ZYrVq1LCMjw8zMFi5caJMnT/b8XFVQG/527dplr732mufnw4cPm5nZ9OnTLT093ZYuXWrnnXeePfnkk2ZWXFNJSUmWkpJS6fOtSEV/G4WFhVZQUGBPPvmkvfTSS5aXl2ePPvqo9erVy+bOnWu9e/e2u+++2z799FMzM7vnnnts1qxZAZx5xUtISLCIiAi77LLL7Pbbbzczs++++84iIyPtyy+/9Dxv3759NmXKFEtKSgrUVBGkWJ+Lkd3eqA1/ZHcxsrt0ZDcqGutzMbLbG7Xhj+wuRnaXjuw+MTTP/4KcnBwbN26cTZo0yTIyMiw7O9smTJhgc+bMMTOzW2+91V544QXLzs42M7N3333XoqKi7N///reZmX3//ff222+/BWz+5enY8DYze+qpp6xVq1Z2yy232I033mj5+fm2Zs0aa9iwoe3cudPMzK644grr0aOHmbnDLjc3t9LnXVGojT/Wrl07GzNmjLVt29bmzJlj27ZtsyZNmtiFF15oN954o23ZssXMzLKysiw9Pd3S0tLs0UcftaysLM97+NZcMPGde9F2LViwwIYOHWpTpkyxvXv32qWXXmoHDhyw/v37W82aNe3+++83M7OffvopqLf/WMduh8vlsjVr1ljfvn3t8ccft7S0NEtJSbG6devaRx99ZGZmt912mw0cONCefvppGzBggP3666929OjRQE0fQYj1uRjZ7Y3a+GNkN9ldhOxGZWN9LkZ2e6M2/hjZTXYXIbv/Gi7b8heEhYXpvPPO086dO/X11197Tu/5+uuvdfjwYZ133nlKTk72nAJz+umnKzY2Vj/88IN27typNm3a6Oyzzw7qGzHs3btXkvfpLHPmzNGWLVv05ZdfasCAAZo3b55Wrlypyy67TP/85z911113SZJeeeUVOZ1O5ebmKjw8XDVr1qwyN+6gNrwdez25vLw8ORwOvfbaa3rmmWd08803q3nz5rrwwgt1xhln6PXXX1fLli21YcMGxcfH67vvvlODBg30wAMP6NRTT/W857E1F2yK5r5o0SJdcsklGjFihEaNGqXrrrtODz30kF599VXNmzdPbdu2VWZmph599FF17txZBw8elCRFRUXJ4XAEfX0UFhZ6nTbncDh05plnKikpSWamBg0aKDIyUuPGjdPkyZMlSU888YT+/ve/a/Xq1RoxYoSaNWumWrVqBXIzEGRYn8nu0lAb3shub2S3G9mNQGB9JrtLQ214I7u9kd1uZHc5CEDDPmgdPXrUEhMTbdeuXV6PDxs2zMaPH2+HDx+2DRs22I033mhz5syx3Nxcu+uuu6xz587Wp08f69Chgz377LPWo0cPS0tLC9BWlI8tW7ZYv3797Oqrr7Z+/frZhAkTzMz9Ddbw4cMtKSnJRo8ebR07drT33nvP87qtW7eaw+GwL774IlBTrxDURsl8TycsOvrh008/tU6dOtm0adM841u2bLFGjRrZiBEjbMiQIdauXTt74YUXSn2/YLds2TLr0KGDffLJJ7Z582Y799xzbdKkSWZm9sEHH1jnzp3tlFNOsXXr1pmZ2cGDBwM424pz6NAhGzt2rD388MO2du1aMzMbP368XXrppV7Pi4yMtJkzZ5qZVamjZVDxWJ+Lkd3eqI2Skd2lI7vdyG5UNNbnYmS3N2qjZGR36chuN7L7r6F5XgY///yztWrVyhYvXux57OWXX7ZGjRrZxRdfbG+++aaZmT399NM2bNgw+/nnn83M7PPPP/eMzZ8/3/r16+d1GkwwycvLs3HjxlmHDh1s5syZtmvXLluwYIGdeeaZNnHiRMvNzbXx48dbnTp17JVXXvG8Ljk52T7//HMzM8//LVqQi64/FcyoDW+lnU44fPhwu+mmm8zMbO3atRYREeF1mtyvv/5qSUlJ9vTTT3udEhSs4V304a6kUwFvu+02e/TRRz0/f/vtt9agQQPPf/9Vq1bZxRdfbCtWrPB6XTD/vRQWFnr9/NZbb1lMTIw9++yz9sILL1ijRo1s1apV5nK57JRTTvG6ntq8efO8PvSV9H5ASVifye7SUBveyG43stsb2Y1AYH0mu0tDbXgju93Ibm9kd/mjeX6CihaRadOm2dChQ+3ll1+2Ll262LXXXmspKSk2Y8YMu+OOOyw1NdW2b99uN954o917772e13/zzTfWsWNH69Onj+e6UsEmLy/PnnzySQsPD7cdO3Z4jb377rt28cUX23vvvWfvvPOOXX755Z6bLMyZM8datWrluVFHkWBdmH1RG8X27Nnj99grr7xid9xxh2VmZtqyZcvM6XTasmXLzMzs2muvtb59+9rq1att4MCBfjURzIFl5v5w9/e//90WL17suWlN0TY9/fTT1rdvX6/nX3rppV6hXZX+Rkralqeeesp+/fVX++GHH6xXr1523XXXeW7e89xzz9n//M//VPZUUcWwPpPdpaE2ipHd3shuN7IbgcL6THaXhtooRnZ7I7vdyO6KQ/P8BBUVYFZWll111VV2zjnn2JIlSzzjmzZtsuuvv96effZZM3OH2nfffecZT0lJ8TqNKlh9+eWXNmLECHv++efNrPgu1mZmffr0sVGjRpmZ2bPPPmsdOnSwLl262NVXX23ffPNNQOZbGaiNP3864cGDB61nz57WrVs3z9EDRfsz2AOsaP6PPvqoDR482H755Rev8XXr1llcXJznlKilS5falVdeaZmZmV7PC/ZveY+d/+7du23ChAmeu7dfeOGF1q5dO+vevbslJiZ6nld0CmXXrl1t69atpb4fcDysz25ktz9qg+wuCdntRnYjkFif3chuf9QG2V0SstuN7K5YNM/LoKh4Fi5caL169fIUYtE3Wo899piNGDHC9u3bF6gpVricnBx75ZVX7Oqrr/Z8W5uTk2Nm7v3Spk0bz346evSo/fTTT57XlvYtWFVQXWvjr5xOWNWvKXbsh7tu3bp53eW9yCeffGLR0dHWu3dv69Chg+fIgKrg2L/1nJwcu+eee2zMmDEWEhJid9xxh5m5P+w3btzY6zVDhw61Z555ptLni6qruq7PxyK7S1Zda4PsLh3ZTXbj5FBd1+djkd0lq661QXaXjuwmuysDzfM/8Oabb3pOefL91iUuLs4eeughS09P9zx2+PBhO3LkSKXOsaL80bdMP//8s40ePdruuecer8fvv/9+e+CBB0p8fbCfBuSrOtdGkb96OmHREQFFqlqNmBXXxhtvvGH//Oc/7csvv/SMHT582FatWmWpqan27bffBmqK5c737yE/P9/Gjh1r8fHxtm/fPnv99dft9NNPtw0bNtiBAwfskksusbi4OHvggQesffv2NnLkSK+jAPjGG2VVnddnsvuPVefaKEJ2Hx/ZTXaj8lXn9Zns/mPVuTaKkN3HR3aT3RXNKZQqKytLy5cvlyQ5ne5dVVhYKEm688479f7772v9+vWe59epU0e1a9eWy+Wq/MmWo8LCQs/2FjEzz/+Ojo7WFVdcoZ9//lnffvutJGnevHlavXq1unfvLkl+rw8JCanYSVey6lobx6pRo4Y6duyo/v376/3335ckFRQUSJJ69+6tM844Qx9++KH69OmjuLg43X///eratavefvttzZ8/X6NHj/Z6v6pQI4sXL1ZCQoIkyeVyeWpjyJAhOvXUU7V27Vrl5+frxRdfVPPmzbV48WKdffbZatu2raTiGgpmRdv89ddf67bbbtNnn32mzz//XDNnzlTDhg114403qn///po0aZJOP/10LV26VEOGDJHD4dCcOXP0wgsv6H/+5388a47vWgIcT3Vdn8nu46uutXEsstsf2U12I/Cq6/pMdh9fda2NY5Hd/shusrvSBbJzfzK49957berUqWZmtm/fPq+7zM6ePdvGjh1rZiV/CzN58uQqc02xvLw869Onj3388cdmZrZ69Wq76667bOnSpZ7nHHv61+7du23KlCl2xRVXWK9evaxbt26e04GqCmrj+Did0NucOXOsT58+Xo8VfbO/Zs0aO//8861p06Z22WWX2YYNGwIxxQpx7H/Hw4cP28SJE23MmDGeaxB2797d6w7nn3zyiYWEhNj7779f4nvxrTeOh/XZjez2R20cH9ntjewmu1E5WJ/dyG5/1Mbxkd3eyG6yu7JV++b54sWL7cwzz7TDhw9bUlKSxcTE2Pjx483MbOPGjRYVFeX3mqpWYEV/gBMnTrT27dvb22+/bZdddplNmDDB2rZt6wmyY29SYmb20Ucf2VVXXeV1Ta2qtDBTG8U4nbDYX/lwN3PmTM8NWoqeE8w1U9J/xy1bttg555xj/fv3NzP3Nr7zzjsWHR1t33//vZmZJSQkWNeuXa1z585er60qawcqHusz2V0aaqMY2V2M7C5GdiNQWJ/J7tJQG8XI7mJkdzGyO/CqXfO8sLDQr1D69OljI0eONDP3HZgHDRpk119/vb399ts2bNgw+/HHH0t9v2AuOt/F4+jRoxYTE2NdunSx/fv3m5nZqlWrrEaNGnbo0CHPa4q2OS8vz2v7g3lhNqM2SlPSf1ffbXvrrbfsmmuusY0bN5qZ2dy5c+3SSy+1VatWVcYUK1V5fbgL9r+XY73++uv25JNP2ieffGJm7iMBWrZsaRkZGZ7n/Otf/7Lu3btbZGSkPfLII/bVV19Z7969LSsrK1DTRhBhfS5GdnujNkpGdnsju/2R3ahorM/FyG5v1EbJyG5vZLc/sjtwqlXz/Ng/pG3btllaWpqZmW3atMkaNmxoycnJZmaWlpZmzz77rDVp0sQiIiI8gVZVFmUz732xcuVKe/LJJ83MbMGCBVajRg2vGwf07dvX4uLizKzkhSeYv8ErQm1443TCYny4K+Y79507d9qVV15pAwcOtOXLl5vD4bAPPvjA9u3bZzfccIP961//8nr+gQMH7Pfff7fdu3fbP//5T88REsAfYX0uRnZ7oza8kd3FyO5iZDcCgfW5GNntjdrwRnYXI7uLkd0nn2rVPDdzL8K33HKLXXLJJdavXz+bNWuWmblPCbnsssu8nrtixQq76KKLbP78+YGYaoX75ptvbPz48XbDDTdYzZo1bffu3WZmdvnll3tOgTEz++2338zhcNimTZsCNdVKQW24cTphMT7cuRUWFtp///tf27Ztm5mZZWdnm5lZUlKSLViwwMzMHnnkEYuKirLPP//czNzXVzv//PM9dzp3uVyWm5tr8+fPt/PPP9+rToDjYX0uRnZ7ozbcyO5iZLcb2Y1AY30uRnZ7ozbcyO5iZLcb2X3yqtLN87179/o9dvPNN9vs2bPNzGzQoEHWrl0727Fjh+3fv9+io6M9BVlk+PDhVeIUmJdeeslefPFFz88bNmyw8847z1555RX74IMPrFOnTtavXz8zM/vqq6/s7LPP9rrJxBdffFHpc65I1IY/TicsGR/uzLKysuyVV17xXHdu+PDhlp6ebo888oi1adPGLrroIvvXv/7l+WCXkZFhBQUFduedd9p//vMfr/f65ZdfqkxtoGKwPhcju71RG/7I7pKR3WQ3KhfrczGy2xu14Y/sLhnZTXafzKps83zz5s02Y8YMS09Pt7Vr19onn3xiaWlpNmDAAPv000+tW7duFh8fbzt27PC85umnn7b69et7fl6/fr2ddtpp9umnnwZgC8pH0Z2Ft27dai6Xy3Odo+eee8769u3red5vv/1mZ555pq1evdrMzK677jq/mwqYVY1v9KgNf5xO6MaHu2K+Ry/MmDHDatWqZbGxsZ4PdfPnz7dLLrnEVqxY4Xneiy++aHfffbeZ+R8lARwP67Mb2e2P2vBHdruR3cXIbgQC67Mb2e2P2vBHdruR3cXI7uBQZZvnv//+u11zzTXWsmVL6969u23cuNFycnKsdevW1qpVK0+4mZm9+eabduDAATMzr8dXrVplH374YaXPvby8++671rFjR/vmm2/MzOyxxx6znj17mpnZBx98YFdffbXt3LnTzMwOHz5sl1xyiXXq1MnMzA4dOmS//PJLYCZewaiNklX30wn5cFfs2A9i+/btMzOzNWvW2NChQ+2uu+7yhPjXX39td911l8XExFhSUpJdffXVFhsba2vXrvW8PthPIUTlYn0mu0tDbZSM7Ca7i5DdCBTWZ7K7NNRGychusrsI2R08qkzz3PebuPT0dGvbtq21bt3a1q9fb2bui+ZPnz7dunfvbrm5uXbw4EEbN26ctWnTxr7++utATLtC/fTTT3bfffd5FuD169dbhw4dbM2aNbZt2za79dZbbeLEiWZm9uuvv9rEiRPtvPPOs7ffftvzHsH8bWYRasMfpxP648Odt6ysLLvzzjutS5cuNnXqVPvyyy9t9+7ddtNNN9kTTzzheV52drY999xzNm7cOEtISAjgjBGMWJ/9kd1u1IY/stsf2e2N7EZlYH32R3a7URv+yG5/ZLc3sjs4VJnmeZFFixbZ119/bYWFhbZ//3773//9Xxs+fLjl5OSYmfub3fj4eLv66qutbdu2Nn78eM9F+IPdokWL/K75VHTTiTVr1piZ2dSpUz3fgq9du9bOO+8869mzpzVv3tzeeustu+WWW+z999+v9LlXhupcG0U4nbAYH+5K9+uvv1rv3r3tueeesx07dtiVV15pXbt2NTP3t/7Dhg2zL7/80hYvXlziesG11VBW1Xl9Jrv/WHWujSJkdzGyu3RkNypbdV6fye4/Vp1rowjZXYzsLh3ZHTyCtnnue0rChx9+aLGxsRYXF2fDhw+3Bx54wPLz823t2rU2YMAAe/PNN83MLCUlxczMMjMzLTU11fP6YC+67OxsGz9+vN16662e4HnjjTfs/PPPt44dO9oNN9xgubm5lpqaat26dfNcS2rnzp32xRdfWF5enn388cd24YUX2n//+99AbspfRm2UjNMJS1adP9x98MEHdt1119nYsWPtiSee8Bzl8OWXX9rEiRNt06ZN1rt3b4uPj/eMpaSk2COPPGLNmjWzAQMGeGrGLLg/1KFysD57I7uLURslI7tLRnaT3ag8rM/eyO5i1EbJyO6Skd1kdzALyub5sac07d271zIzM61Xr162YcMGKygosI4dO9oFF1xgL730kpmZPfHEExYbG2t9+vSxa6+91vbv3+8ptmPvWhysiua/bt06GzlypI0dO9b++c9/Wp8+fez777+3n3/+2QYPHmyvvPKKmblvLBAVFeX59nPHjh02ePBgu+KKK7xOhQlG1EbpqvvphHy4K7Zt2za7/vrrrUOHDrZgwQJ7+umn7ZprrrHzzz/fsrOzbcWKFRYdHW0dOnSwpKQkz+s++ugjz4ebH3/8MVDTR5BiffZGdhejNkpHdpPdRchuBALrszeyuxi1UTqym+wuQnZXHUHZPDdz/0HOmDHD2rdvb2lpaXb48GFbvHixtWnTxh5++GF78sknrXfv3vb777+bmdkLL7xgzzzzTIBnXX5KC5dnn33WzjnnHJs2bZrnsczMTHvhhResV69elpqaatnZ2fb55597xrOysjynCVUF1b02inA6YTE+3BXbuHGjNW7c2O68806vx9PT0+2yyy6zkSNHWmZmpsXGxtrcuXM943fddZf179/ftm/f7vW6YP4wg8pX3ddnsrt01b02ipDdxcjuYmQ3Aqm6r89kd+mqe20UIbuLkd3FyO6qJSia577fuq1du9ZGjRplY8eOtfz8fDNzL9yDBg2ylStXmpk7zBo3bmzjx48/7vtVBUXbtGXLFhs1apQ98cQTXgvNt99+a7fccoutWrXK63XBvBiZURul4XRCf3y4K9azZ0+bNWuW32lwq1evttNPP9327dtnCxYssB49etjVV19tbdq0sdtvv93S09MDNGMEI9bn4yO73agNN7LbH9ldjOxGZWB9Pj6y243acCO7/ZHdxcjuquOkb54fu6gWne70/fff29///ne7/vrrPWO7du2yfv362SOPPGLffPONxcXF2ezZs+3XX3/1er9gDS3fcPn222/t7rvvtiNHjviNvf7663bzzTd73X3Y5XJ5TvuoKqiNknE6IR/uSlP0bfX7779vXbt29TvyZc+ePdalSxf77LPPzMzs4MGDtmbNGtu0aZPnOVVlX6BisT67kd3+qI2Skd1kd2nIblQW1mc3stsftVEyspvsLg3ZXfU4dZJzOp367bffNGzYMN1555168803de655+r2229XYWGhUlJSJEkRERGKi4vT+vXrNWzYMMXFxenWW29Vs2bNZGae93M4HIHalD+laO5Op/d/qho1amj+/PlyOp2esaLnXnXVVapbt66WLFmiw4cPS3Jvd1hYmNe+CHbVvTaOVdJ2dOzYUeedd56WL1+ujh076p133lGbNm101llnKTY2VkuXLtXOnTs1ePBgvfHGGzr11FMlSeHh4br11lv18ccf6x//+EdAtuevcLlcnr+JovqvV6+ePv30U+3fv1+hoaGSpN27dysnJ0eff/65Nm7cqNWrV+vBBx/U6NGjvd7PzPz+/oJVSEiIJKlnz55q1qyZ3n77be3Zs8czfuTIEaWkpOj000+XJJ122mm67LLLdN5558nMvPYt8Eeq+/pMdpeuutfGscjuYmR36chuVJbqvj6T3aWr7rVxLLK7GNldOrK7Cqq8Pv2Jeeutt+zjjz/2/PzOO+9Yx44dbeHChbZkyRJr1aqVvfTSS5aVlWVdu3a1l156yQ4fPux5/r59+7zeL5i/1Tz2m6ajR4/alClTLDMz08zcdyK+9tprPXdw9rVixQpbu3ZtpcyzslAbJ666nk5YZNeuXXbzzTfbsGHDbNGiRZaXl2fPPvusXXvttZ4jH/Lz823+/PnWq1cva9eunS1cuNDz+qqwH0rbhqLa+OGHH+yyyy7zujHNvffea3fddRfXU0OZsT4XI7u9URsnjuwmu8luVCbW52Jktzdq48SR3WQ32V09nFTN8+zsbIuPj7cHHnjAdu3aZWZmr776qq1cudKSk5Pt8ssvt9tuu83S0tLMzH0tqY4dO1pycrLfe1WlInziiSfs7bfftvj4eLvuuuts2bJllpuba61bt7atW7eaWfEfbFVYfEpCbXjjdMJifLgr9s0339jjjz/u+Xnp0qWWlJTk+fBfpGgbH3roIRs+fLg98cQT1qFDB7v++utt7969lTpnBD/W55KR3dSGL7K7GNldjOxGILA+l4zspjZ8kd3FyO5iZHf1c1I0z49ddObOnWvDhg2zxYsXm5lZfHy8tWrVyvr06WMfffSR53mbN282M7MJEybYzp07K3fCFcR38fjhhx/sjjvusFGjRtn+/futsLDQ5syZYzExMfbee+9Z79697eWXXw7QbCsHteGttID573//a2eeeaZXMBc9d8+ePXbnnXfaiBEjPNdXO977BQs+3Hl7+eWXLT4+3l5//XW78cYb7eKLL7auXbvamDFjPPunsLDQ83d18OBBa9++vdf11syCvy5QOVif3chuf9SGN7LbG9ntjexGZWJ9diO7/VEb3shub2S3N7K7+jkpmudm7mIaNWqU9e3b18455xzr27evHT582BYtWmQNGza0I0eOmJn7tKnBgwfbI488EuAZly/fBSQrK8umT59uderU8TtF7KOPPrJ+/fpZ7dq1bd68eWZWtf/oqnttFOF0wmJ8uCt27L5IT0+3iRMnWlxcnOeb8C+++MJuv/12mzZtmtfritac7du3ex5zuVzcmARlUt3XZ7K7dNW9NoqQ3cXI7mJkNwKpuq/PZHfpqnttFCG7i5Hdxcju6i0gV6B3uVxF11v3PPbII4/o4MGDeuutt/TUU08pOztbCxcu1MCBA3XJJZdowIABuvnmmxUbG6tGjRrpvvvu83u/YJOfn6+MjAxJ7hsKHDlyRNOmTdPKlSuVk5OjW265RbGxsUpKSpJUvL+6deum+fPnq0+fPlq+fLmk4L7pxrGojdIV3TDiySef1PLly7V582bdeuutWr58uWrXrq3//ve/qlu3rqTi/Vf0f6+88krFxsYGZuIVwOl06tChQxo9erSWLFmizz77TPPmzVN2drbi4uK0f/9+JSYmqlu3bsrIyNANN9ygJUuWSJIef/xxNWrUKMBb8NcV1XZRXXz88cdyuVy65pprlJqa6rkhSfv27XXRRRdp8+bN+uqrrzyvLbqJSdOmTSVJhYWFcjgc3JgEpWJ9diO7/VEbpSO7i5HdZDcqH+uzG9ntj9ooHdldjOwmu+FWqf+1zOeusfn5+ZLcd5r97bffdMMNN0iSevTooa5du2rp0qXatWuXFixYoOnTp+vSSy/VO++8o//93/9VaGioXxEHk71796pz586eO1PPnTtXl156qfLy8vTxxx+rW7duql+/vm644QZ9++23+uGHH+RwOFRYWCgzU+3atTVo0CD97W9/C/CWlA9qw5/53KF906ZNGjVqlH799VfFxsZqwYIF6t69uyZNmqSPPvpIkZGRWrVqlaTiD3V8uKu6H+6Kavvdd9/V7bffrnvvvVdLly5VTEyMBgwYoCNHjujHH39UzZo1FRsbq9NOO00vv/yy12uPVRTqgC/W52Jktzdqwx/ZXYzs9kd2o7KwPhcju71RG/7I7mJktz+yG1IlN8+Lvl3ZtGmTbrzxRo0ePVpvvfWWTjnlFOXl5WndunWe5/bq1UurVq3S7NmzlZeXp7Zt2+qWW25Rs2bN5HK5ZGZBvUBHREQoOztb3333nSTp22+/1dq1azVo0CBt3LhRZ511lgoLC3XppZcqKipKzz77rCT3H5qZafv27Ro7dqwaNGgQyM0oN9SGt6JvI4scPnxY7733nl5//XUNHz5c9evXl9Pp1M0336zHHntMr7zyilauXKlatWpJ8v8AEKz4cFdsz549mj9/vg4cOCBJysvL0+jRo/X444+rd+/eqlu3rj766CP9+OOP6t+/vwoLC/X+++9LkqKiotS/f3+NGTMmkJuAIMX6XIzs9kZteCO73cjuYmQ3AoX1uRjZ7Y3a8EZ2u5HdxchulKRCKzknJ0dTpkzRxx9/7Hnsww8/1I033qiuXbsqOjpar776qp588knNnDlTL774ohYvXqzffvtNy5YtU9++fXXVVVfptNNO87y+aIEOtm/2Dh8+rKNHj0qSCgoKVFBQoO7du+vQoUPas2ePvvnmG8XHx2vEiBEaNmyYPvzwQxUWFqp58+a67LLLJEn79u2T5F6ATjnlFL344ou6++67A7ZNfwW14Y/TCf3x4c69Xkjuo2Zatmyp8PBwz9jOnTv17LPPqlevXnruued09tlna9GiRYqKitJFF12ktWvXevbRFVdcoTZt2gRkGxBcWJ+Lkd3eqA1/ZLc/spvsRuVjfS5GdnujNvyR3f7IbrIbx1FuV08vweuvv24Oh8NGjhxpv//+u5mZPfLIIzZ+/Hgzc19w/4svvrDOnTvboUOH7KWXXrLhw4fbueeea3fffbfnhhTBbteuXdatWzebNGmS1+NDhw610aNH25EjR6x379528803e42PGzfO1q9fXyXuRuyL2vC2Z88eu/TSS23jxo1m5r47ddu2bW3SpEl23333Wdu2bc3MfZOOa665xr7//nszc998ouimNW+99Zbdd999gZh+uTl69Kg99NBDXjcc+eCDD+yCCy6wV1991f79739bnz597IknnrBt27ZZgwYN7M0337Rdu3bZ448/btdff73fDVqC+aY+u3fvth49etgHH3xgLpfLfv75Z/vXv/5lP/zwg23fvt26dOli3377redu7/fcc4+1a9fO1q9fb/v27bNFixZZXl5egLcCwYb12Y3s9kdteCO73chub2Q3AoH12Y3s9kdteCO73chub2Q3jqdCvw5yOp3q0KGD6tat67lpwJEjR1SvXj0dPnxYTqdTDRo0UI0aNbR9+3aNGDFCL730klauXKmZM2eqdu3aVeIaSX/7299077336r333tOECROUmpoqSerf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",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"n_cols, n_rows = 3, (len(spend_cols) + 2) // 3\n",
"\n",
"fig, axes = plt.subplots(n_rows, n_cols, figsize=(15, 5 * n_rows))\n",
"fig.suptitle(\"Wholesale Customer Segment Profiles \\u2014 Annual Spend by Category\",\n",
" fontsize=14, fontweight=\"bold\")\n",
"\n",
"palette = [\"#2563EB\", \"#10B981\", \"#F59E0B\", \"#DC2626\", \"#8B5CF6\", \"#EC4899\"]\n",
"segment_order = segment_means[\"segment_name\"].tolist()\n",
"short_names = [name[:14] + \"..\" if len(name) > 14 else name for name in segment_order]\n",
"\n",
"for idx, (ax, col) in enumerate(zip(axes.flat, spend_cols)):\n",
" values = segment_means.set_index(\"segment_name\")[col].reindex(segment_order)\n",
" ax.bar(range(len(values)), values.values, color=palette[:len(values)], alpha=0.85,\n",
" edgecolor=\"white\", linewidth=0.8)\n",
" ax.set_xticks(range(len(values)))\n",
" ax.set_xticklabels(short_names, rotation=30, ha=\"right\", fontsize=8)\n",
" ax.set_title(col, fontweight=\"bold\", fontsize=10)\n",
" ax.grid(axis=\"y\", alpha=0.3)\n",
" ax.yaxis.set_tick_params(labelsize=8)\n",
"\n",
"for ax in axes.flat[len(spend_cols):]:\n",
" ax.set_visible(False)\n",
"\n",
"plt.tight_layout()\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"id": "md885fb7e5",
"metadata": {},
"source": [
"---\n",
"\n",
"## What You Built\n",
"\n",
"| You Wrote | BitBullet Handled |\n",
"|-----------|-------------------|\n",
"| Called `generate_feature_stats(df)` | Full audit — skewness, kurtosis, cardinality, nulls |\n",
"| Mapped integer Channel/Region to strings | Correct categorical type detection by `detect_column_types` |\n",
"| Called `auto_cluster(df)` | Algorithm selection, K search, fitting, evaluation |\n",
"| Defined a `clusterer_factory` and local-peak rule | Silhouette scores across candidate K values |\n",
"| Declared a `ClusterConfig` | Cao initialisation, Huang gamma, categorical distance weighting, resolved per-column metadata |\n",
"| Called `evaluate_clustering(df[num], labels)` | Silhouette, Calinski-Harabász, Davies-Bouldin, quality score |\n",
"| Called `profile_clusters(df, labels)` | Per-cluster statistics, suggested labels, feature importance |\n",
"| Called `auto_decompose(df)` | FAMD selection for mixed data, explained variance |\n",
"| Called `create_dashboard(...)` | Multi-panel visualisation assembly |\n",
"\n",
"### Key Takeaways\n",
"\n",
"1. **Algorithm selection matters.** The Channel and Region columns carry real discriminative information. Converting integers to strings ensures they are treated as categoricals, not as ordered numerical variables.\n",
"\n",
"2. **Gamma and categorical weights have different jobs.** Gamma controls the total scale of categorical distance relative to numerical distance; categorical weights allocate that categorical contribution across categorical columns.\n",
"\n",
"3. **Small datasets need compact K searches.** With 440 rows, K > 7 risks fitting noise. A global silhouette maximum can over-prefer K = 2 when a coarse binary split dominates. Looking for a post-2 local peak asks whether a richer segmentation improves separation despite the extra cluster.\n",
"\n",
"4. **Spending distributions are always right-skewed.** A handful of very large accounts inflate centroids. `auto_cluster` normalises internally; for manual configuration, consider log-transforming spend features before calling `find_optimal_k`.\n",
"\n",
"5. **Segments are only valuable when activated.** Attaching labels and computing per-segment spend means is the step that turns a mathematical result into a procurement or sales planning artefact.\n",
"\n",
"---\n",
"\n",
"**Continue the Academy:**\n",
"- `04_Data_Transformations.ipynb` — deep dive into every transform in `bitbullet.transform`\n",
"- `05_Model_Management.ipynb` — versioning, comparison, and model governance"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "bitbullet",
"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.11.13"
}
},
"nbformat": 4,
"nbformat_minor": 5
}