{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "4bc0afa8",
   "metadata": {},
   "source": [
    "### Kolesa Group"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "fcb748a5",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[almaty] catalog page 1: https://kolesa.kz/cars/new/almaty/\n",
      "[almaty] catalog page 2: https://kolesa.kz/cars/new/almaty/?page=2\n"
     ]
    }
   ],
   "source": [
    "import requests\n",
    "from bs4 import BeautifulSoup\n",
    "import pandas as pd\n",
    "import time\n",
    "import random\n",
    "import re\n",
    "from urllib.parse import urljoin\n",
    "\n",
    "headers = {\n",
    "    \"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) \"\n",
    "                  \"AppleWebKit/537.36 (KHTML, like Gecko) \"\n",
    "                  \"Chrome/118.0.0.0 Safari/537.36\",\n",
    "    \"Accept-Language\": \"ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7\",\n",
    "}\n",
    "\n",
    "BASE = \"https://kolesa.kz\"  # ИСПРАВЛЕНО: добавлено двоеточие\n",
    "\n",
    "\n",
    "def clean_text(s: str) -> str:\n",
    "    return re.sub(r\"\\s+\", \" \", s).strip() if s else None\n",
    "\n",
    "\n",
    "def get_soup(session: requests.Session, url: str) -> BeautifulSoup:\n",
    "    r = session.get(url, timeout=(10, 30))\n",
    "    if r.status_code in (403, 429):\n",
    "        time.sleep(random.uniform(8, 15))\n",
    "        r = session.get(url, timeout=(10, 30))\n",
    "    if r.status_code != 200:\n",
    "        raise RuntimeError(f\"HTTP {r.status_code} for {url}\")\n",
    "    return BeautifulSoup(r.text, \"html.parser\")\n",
    "\n",
    "\n",
    "def collect_model_links_from_catalog(session: requests.Session, city: str, max_pages: int = 10) -> list:\n",
    "    links = set()\n",
    "\n",
    "    for page in range(1, max_pages + 1):\n",
    "        url = f\"{BASE}/cars/new/{city}/\" + (f\"?page={page}\" if page > 1 else \"\")\n",
    "        print(f\"[{city}] catalog page {page}: {url}\")\n",
    "\n",
    "        soup = get_soup(session, url)\n",
    "\n",
    "        cards = soup.select(\"ul.models-list li.models-list__item a.model-card__overlay[href]\")\n",
    "        if not cards:\n",
    "            print(f\"[{city}] no model cards found -> stop\")\n",
    "            break\n",
    "\n",
    "        before = len(links)\n",
    "        for a in cards:\n",
    "            links.add(urljoin(BASE, a[\"href\"]))\n",
    "\n",
    "        if len(links) == before:\n",
    "            break\n",
    "\n",
    "        time.sleep(random.uniform(1.2, 2.4))\n",
    "\n",
    "    return sorted(links)\n",
    "\n",
    "\n",
    "def parse_specs_from_model_page(soup: BeautifulSoup) -> dict:\n",
    "    specs = {}\n",
    "    rows = soup.select(\"div.new-auto-specs__table .new-auto-specs__item\")\n",
    "\n",
    "    for row in rows:\n",
    "        key_el = row.select_one(\".new-auto-specs__key\")\n",
    "        val_el = row.select_one(\".new-auto-specs__value\")\n",
    "        if not key_el or not val_el:\n",
    "            continue\n",
    "\n",
    "        key_name = clean_text(key_el.get_text(\" \", strip=True))     \n",
    "        val_text = clean_text(val_el.get_text(\" \", strip=True))     \n",
    "        data_name = key_el.get(\"data-name\") or val_el.get(\"data-name\")\n",
    "\n",
    "        if data_name:\n",
    "            specs[data_name] = val_text\n",
    "        if key_name:\n",
    "            specs[key_name] = val_text\n",
    "\n",
    "    colors = []\n",
    "    for li in soup.select(\"ul.new-auto-specs__colors-list li\"):\n",
    "        t = clean_text(li.get_text(\" \", strip=True))\n",
    "        if t:\n",
    "            colors.append(t)\n",
    "        else:\n",
    "            dc = li.get(\"data-color\")\n",
    "            if dc:\n",
    "                colors.append(dc)\n",
    "    if colors:\n",
    "        specs[\"colors\"] = \", \".join(list(dict.fromkeys(colors)))\n",
    "\n",
    "    return specs\n",
    "\n",
    "\n",
    "def parse_embedded_ads_from_model_page(soup: BeautifulSoup) -> list:\n",
    "    ads = []\n",
    "\n",
    "    candidates = soup.select('a[href^=\"/a/show/\"], a[href^=\"/cars/\"]')\n",
    "\n",
    "    price_block = None\n",
    "    for h2 in soup.select(\"h2, .new-auto-show__title, .new-auto-show__subtitle\"):\n",
    "        if \"Цены\" in h2.get_text():\n",
    "            price_block = h2.find_parent()\n",
    "            break\n",
    "\n",
    "    if price_block:\n",
    "        candidates = price_block.select('a[href]')\n",
    "\n",
    "    for a in candidates:\n",
    "        href = a.get(\"href\")\n",
    "        if not href:\n",
    "            continue\n",
    "\n",
    "        name = clean_text(a.get_text(\" \", strip=True))\n",
    "        if not name or len(name) < 3:\n",
    "            continue\n",
    "\n",
    "        card = a.find_parent([\"article\", \"div\", \"li\"])\n",
    "        if not card:\n",
    "            continue\n",
    "\n",
    "        card_text = clean_text(card.get_text(\" \", strip=True)) or \"\"\n",
    "\n",
    "        price = None\n",
    "        m = re.search(r\"(\\d[\\d\\s]+)\\s*₸\", card_text)\n",
    "        if m:\n",
    "            price = m.group(1).replace(\" \", \"\")\n",
    "\n",
    "        desc = None\n",
    "        m2 = re.search(r\"(\\d{4}\\s*г\\..+?)(?:₸|просмотр|$)\", card_text)\n",
    "        if m2:\n",
    "            desc = clean_text(m2.group(1))\n",
    "\n",
    "        city = None\n",
    "        date = None\n",
    "        views = None\n",
    "\n",
    "        if \"Алматы\" in card_text:\n",
    "            city = \"Алматы\"\n",
    "        if \"Астана\" in card_text:\n",
    "            city = \"Астана\"\n",
    "\n",
    "        mv = re.search(r\"(\\d+)\\s*просмотр\", card_text)\n",
    "        if mv:\n",
    "            views = mv.group(1)\n",
    "\n",
    "        full_url = urljoin(BASE, href)\n",
    "\n",
    "        ads.append({\n",
    "            \"ad_title\": name,\n",
    "            \"ad_price_kzt\": price,\n",
    "            \"ad_desc\": desc,\n",
    "            \"ad_city\": city,\n",
    "            \"ad_views\": views,\n",
    "            \"ad_url\": full_url\n",
    "        })\n",
    "\n",
    "    uniq = {}\n",
    "    for x in ads:\n",
    "        key = (x.get(\"ad_url\"), x.get(\"ad_title\"))\n",
    "        uniq[key] = x\n",
    "    return list(uniq.values())\n",
    "\n",
    "\n",
    "def parse_model_page(session: requests.Session, model_url: str, city: str) -> list:\n",
    "    soup = get_soup(session, model_url)\n",
    "\n",
    "    h1 = soup.select_one(\"h1\")\n",
    "    model_title = clean_text(h1.get_text(\" \", strip=True)) if h1 else None\n",
    "\n",
    "    specs = parse_specs_from_model_page(soup)\n",
    "    ads = parse_embedded_ads_from_model_page(soup)\n",
    "\n",
    "    rows = []\n",
    "    if not ads:\n",
    "        rows.append({\n",
    "            \"catalog_city\": city,\n",
    "            \"model_url\": model_url,\n",
    "            \"model_title\": model_title,\n",
    "            **specs\n",
    "        })\n",
    "        return rows\n",
    "\n",
    "    for ad in ads:\n",
    "        rows.append({\n",
    "            \"catalog_city\": city,\n",
    "            \"model_url\": model_url,\n",
    "            \"model_title\": model_title,\n",
    "            **specs,\n",
    "            **ad\n",
    "        })\n",
    "\n",
    "    return rows\n",
    "\n",
    "def scrape_city_newcars(city: str, catalog_pages: int = 3, max_models: int = 50):\n",
    "    session = requests.Session()\n",
    "    session.headers.update(headers)\n",
    "\n",
    "    model_links = collect_model_links_from_catalog(session, city, max_pages=catalog_pages)\n",
    "    print(f\"[{city}] models collected: {len(model_links)}\")\n",
    "\n",
    "    if max_models is not None:\n",
    "        model_links = model_links[:max_models]\n",
    "\n",
    "    all_rows = []\n",
    "    for i, model_url in enumerate(model_links, 1):\n",
    "        try:\n",
    "            print(f\"[{city}] model {i}/{len(model_links)}: {model_url}\")\n",
    "            rows = parse_model_page(session, model_url, city)\n",
    "            all_rows.extend(rows)\n",
    "            time.sleep(random.uniform(1.5, 3.2))\n",
    "        except Exception as e:\n",
    "            print(\"Error:\", e)\n",
    "            continue\n",
    "\n",
    "    df = pd.DataFrame(all_rows)\n",
    "    out = f\"kolesa_new_{city}_embedded_ads.csv\"\n",
    "    df.to_csv(out, index=False, encoding=\"utf-8-sig\")\n",
    "    print(f\"Saved: {out} rows={len(df)}\")\n",
    "    return df\n",
    "\n",
    "# Скрапим данные для Алматы (ИСПРАВЛЕНО)\n",
    "# df_almaty = scrape_city_newcars(\"almaty\", catalog_pages=40, max_models=None)\n",
    "print(\"⚠️ Ячейка 1 (скрапинг) закомментирована для быстрого запуска\")\n",
    "print(\"📁 Используйте существующие CSV файлы и выполняйте ячейку 2\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "6764ca03",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>catalog_city</th>\n",
       "      <th>model_url</th>\n",
       "      <th>model_title</th>\n",
       "      <th>year</th>\n",
       "      <th>Год производства</th>\n",
       "      <th>country</th>\n",
       "      <th>Страна производства</th>\n",
       "      <th>generation</th>\n",
       "      <th>Поколение</th>\n",
       "      <th>body</th>\n",
       "      <th>...</th>\n",
       "      <th>model</th>\n",
       "      <th>Класс</th>\n",
       "      <th>rudder</th>\n",
       "      <th>Руль</th>\n",
       "      <th>nbSeats</th>\n",
       "      <th>Количество мест</th>\n",
       "      <th>nbDoors</th>\n",
       "      <th>Количество дверей</th>\n",
       "      <th>colors</th>\n",
       "      <th>Год</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>almaty</td>\n",
       "      <td>https://kolesa.kz/cars/new/aito-m5-1-pokolenie...</td>\n",
       "      <td>AITO M5</td>\n",
       "      <td>2024 - н.в.</td>\n",
       "      <td>2024 - н.в.</td>\n",
       "      <td>Китай</td>\n",
       "      <td>Китай</td>\n",
       "      <td>1 поколение (рестайлинг)</td>\n",
       "      <td>1 поколение (рестайлинг)</td>\n",
       "      <td>кроссовер</td>\n",
       "      <td>...</td>\n",
       "      <td>SUV</td>\n",
       "      <td>SUV</td>\n",
       "      <td>слева</td>\n",
       "      <td>слева</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>Белый, Голубой, Красный, Серый</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>almaty</td>\n",
       "      <td>https://kolesa.kz/cars/new/aito-m7-1-pokolenie...</td>\n",
       "      <td>AITO M7</td>\n",
       "      <td>2022 - н.в.</td>\n",
       "      <td>2022 - н.в.</td>\n",
       "      <td>Китай</td>\n",
       "      <td>Китай</td>\n",
       "      <td>1 поколение</td>\n",
       "      <td>1 поколение</td>\n",
       "      <td>кроссовер</td>\n",
       "      <td>...</td>\n",
       "      <td>SUV</td>\n",
       "      <td>SUV</td>\n",
       "      <td>слева</td>\n",
       "      <td>слева</td>\n",
       "      <td>5-6</td>\n",
       "      <td>5-6</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>Голубой, Зеленый, Золотистый, Серебристый, Син...</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>almaty</td>\n",
       "      <td>https://kolesa.kz/cars/new/aito-m9-1-pokolenie...</td>\n",
       "      <td>AITO M9</td>\n",
       "      <td>2023 - н.в.</td>\n",
       "      <td>2023 - н.в.</td>\n",
       "      <td>Китай</td>\n",
       "      <td>Китай</td>\n",
       "      <td>1 поколение</td>\n",
       "      <td>1 поколение</td>\n",
       "      <td>кроссовер</td>\n",
       "      <td>...</td>\n",
       "      <td>SUV</td>\n",
       "      <td>SUV</td>\n",
       "      <td>слева</td>\n",
       "      <td>слева</td>\n",
       "      <td>5-6</td>\n",
       "      <td>5-6</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>Зеленый, Оранжевый, Серый, Синий, Черный</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>almaty</td>\n",
       "      <td>https://kolesa.kz/cars/new/audi-a6/almaty/</td>\n",
       "      <td>Ауди А6 2026 года в Алматы</td>\n",
       "      <td>2023 - н.в.</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Германия</td>\n",
       "      <td>Германия</td>\n",
       "      <td>5 поколение</td>\n",
       "      <td>5 поколение</td>\n",
       "      <td>седан</td>\n",
       "      <td>...</td>\n",
       "      <td>E</td>\n",
       "      <td>E</td>\n",
       "      <td>слева</td>\n",
       "      <td>слева</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>Черный</td>\n",
       "      <td>2023 - н.в.</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>almaty</td>\n",
       "      <td>https://kolesa.kz/cars/new/audi-a7/almaty/</td>\n",
       "      <td>Ауди А7 2026 года в Алматы</td>\n",
       "      <td>2017 - н.в.</td>\n",
       "      <td>2017 - н.в.</td>\n",
       "      <td>Германия</td>\n",
       "      <td>Германия</td>\n",
       "      <td>2 поколение</td>\n",
       "      <td>2 поколение</td>\n",
       "      <td>лифтбек</td>\n",
       "      <td>...</td>\n",
       "      <td>E</td>\n",
       "      <td>E</td>\n",
       "      <td>слева</td>\n",
       "      <td>слева</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>Бронза, Белый, Красный, Серый, Синий, Черный</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>193</th>\n",
       "      <td>almaty</td>\n",
       "      <td>https://kolesa.kz/cars/new/zeekr-001-1-pokolen...</td>\n",
       "      <td>Zeekr 001 2026 года в Алматы</td>\n",
       "      <td>2021 - н.в.</td>\n",
       "      <td>2021 - н.в.</td>\n",
       "      <td>Китай</td>\n",
       "      <td>Китай</td>\n",
       "      <td>1 поколение</td>\n",
       "      <td>1 поколение</td>\n",
       "      <td>лифтбек</td>\n",
       "      <td>...</td>\n",
       "      <td>E</td>\n",
       "      <td>E</td>\n",
       "      <td>слева</td>\n",
       "      <td>слева</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>Белый, Голубой, Оранжевый, Серый, Черный</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>194</th>\n",
       "      <td>almaty</td>\n",
       "      <td>https://kolesa.kz/cars/new/zeekr-007-1-pokolen...</td>\n",
       "      <td>Zeekr 007</td>\n",
       "      <td>2023 - н.в.</td>\n",
       "      <td>2023 - н.в.</td>\n",
       "      <td>Китай</td>\n",
       "      <td>Китай</td>\n",
       "      <td>1 поколение</td>\n",
       "      <td>1 поколение</td>\n",
       "      <td>седан</td>\n",
       "      <td>...</td>\n",
       "      <td>D</td>\n",
       "      <td>D</td>\n",
       "      <td>слева</td>\n",
       "      <td>слева</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>Бронза, Белый, Голубой, Желтый, Зеленый, Серый...</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>195</th>\n",
       "      <td>almaty</td>\n",
       "      <td>https://kolesa.kz/cars/new/zeekr-009-1-pokolen...</td>\n",
       "      <td>Zeekr 009 2026 года в Алматы</td>\n",
       "      <td>2022 - н.в.</td>\n",
       "      <td>2022 - н.в.</td>\n",
       "      <td>Китай</td>\n",
       "      <td>Китай</td>\n",
       "      <td>1 поколение</td>\n",
       "      <td>1 поколение</td>\n",
       "      <td>минивэн</td>\n",
       "      <td>...</td>\n",
       "      <td>М</td>\n",
       "      <td>М</td>\n",
       "      <td>слева</td>\n",
       "      <td>слева</td>\n",
       "      <td>6</td>\n",
       "      <td>6</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>Белый, Серый, Синий, Черный</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>196</th>\n",
       "      <td>almaty</td>\n",
       "      <td>https://kolesa.kz/cars/new/zeekr-7x-1-pokoleni...</td>\n",
       "      <td>Zeekr 7X</td>\n",
       "      <td>2024 - н.в.</td>\n",
       "      <td>2024 - н.в.</td>\n",
       "      <td>Китай</td>\n",
       "      <td>Китай</td>\n",
       "      <td>1 поколение</td>\n",
       "      <td>1 поколение</td>\n",
       "      <td>кроссовер</td>\n",
       "      <td>...</td>\n",
       "      <td>SUV</td>\n",
       "      <td>SUV</td>\n",
       "      <td>слева</td>\n",
       "      <td>слева</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>Белый, Голубой, Зеленый, Серый, Черный</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>197</th>\n",
       "      <td>almaty</td>\n",
       "      <td>https://kolesa.kz/cars/new/zeekr-x-1-pokolenie...</td>\n",
       "      <td>Zeekr X 2026 года в Алматы</td>\n",
       "      <td>2023 - н.в.</td>\n",
       "      <td>2023 - н.в.</td>\n",
       "      <td>Китай</td>\n",
       "      <td>Китай</td>\n",
       "      <td>1 поколение</td>\n",
       "      <td>1 поколение</td>\n",
       "      <td>кроссовер</td>\n",
       "      <td>...</td>\n",
       "      <td>SUV</td>\n",
       "      <td>SUV</td>\n",
       "      <td>слева</td>\n",
       "      <td>слева</td>\n",
       "      <td>4-5</td>\n",
       "      <td>4-5</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>Бежевый, Белый, Зеленый, Серый</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>198 rows × 21 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "    catalog_city                                          model_url  \\\n",
       "0         almaty  https://kolesa.kz/cars/new/aito-m5-1-pokolenie...   \n",
       "1         almaty  https://kolesa.kz/cars/new/aito-m7-1-pokolenie...   \n",
       "2         almaty  https://kolesa.kz/cars/new/aito-m9-1-pokolenie...   \n",
       "3         almaty         https://kolesa.kz/cars/new/audi-a6/almaty/   \n",
       "4         almaty         https://kolesa.kz/cars/new/audi-a7/almaty/   \n",
       "..           ...                                                ...   \n",
       "193       almaty  https://kolesa.kz/cars/new/zeekr-001-1-pokolen...   \n",
       "194       almaty  https://kolesa.kz/cars/new/zeekr-007-1-pokolen...   \n",
       "195       almaty  https://kolesa.kz/cars/new/zeekr-009-1-pokolen...   \n",
       "196       almaty  https://kolesa.kz/cars/new/zeekr-7x-1-pokoleni...   \n",
       "197       almaty  https://kolesa.kz/cars/new/zeekr-x-1-pokolenie...   \n",
       "\n",
       "                      model_title         year Год производства   country  \\\n",
       "0                         AITO M5  2024 - н.в.      2024 - н.в.     Китай   \n",
       "1                         AITO M7  2022 - н.в.      2022 - н.в.     Китай   \n",
       "2                         AITO M9  2023 - н.в.      2023 - н.в.     Китай   \n",
       "3      Ауди А6 2026 года в Алматы  2023 - н.в.              NaN  Германия   \n",
       "4      Ауди А7 2026 года в Алматы  2017 - н.в.      2017 - н.в.  Германия   \n",
       "..                            ...          ...              ...       ...   \n",
       "193  Zeekr 001 2026 года в Алматы  2021 - н.в.      2021 - н.в.     Китай   \n",
       "194                     Zeekr 007  2023 - н.в.      2023 - н.в.     Китай   \n",
       "195  Zeekr 009 2026 года в Алматы  2022 - н.в.      2022 - н.в.     Китай   \n",
       "196                      Zeekr 7X  2024 - н.в.      2024 - н.в.     Китай   \n",
       "197    Zeekr X 2026 года в Алматы  2023 - н.в.      2023 - н.в.     Китай   \n",
       "\n",
       "    Страна производства                generation                 Поколение  \\\n",
       "0                 Китай  1 поколение (рестайлинг)  1 поколение (рестайлинг)   \n",
       "1                 Китай               1 поколение               1 поколение   \n",
       "2                 Китай               1 поколение               1 поколение   \n",
       "3              Германия               5 поколение               5 поколение   \n",
       "4              Германия               2 поколение               2 поколение   \n",
       "..                  ...                       ...                       ...   \n",
       "193               Китай               1 поколение               1 поколение   \n",
       "194               Китай               1 поколение               1 поколение   \n",
       "195               Китай               1 поколение               1 поколение   \n",
       "196               Китай               1 поколение               1 поколение   \n",
       "197               Китай               1 поколение               1 поколение   \n",
       "\n",
       "          body  ... model Класс rudder   Руль nbSeats Количество мест nbDoors  \\\n",
       "0    кроссовер  ...   SUV   SUV  слева  слева       5               5       5   \n",
       "1    кроссовер  ...   SUV   SUV  слева  слева     5-6             5-6       5   \n",
       "2    кроссовер  ...   SUV   SUV  слева  слева     5-6             5-6       5   \n",
       "3        седан  ...     E     E  слева  слева       5               5       4   \n",
       "4      лифтбек  ...     E     E  слева  слева       5               5       5   \n",
       "..         ...  ...   ...   ...    ...    ...     ...             ...     ...   \n",
       "193    лифтбек  ...     E     E  слева  слева       5               5       5   \n",
       "194      седан  ...     D     D  слева  слева       5               5       4   \n",
       "195    минивэн  ...     М     М  слева  слева       6               6       5   \n",
       "196  кроссовер  ...   SUV   SUV  слева  слева       5               5       5   \n",
       "197  кроссовер  ...   SUV   SUV  слева  слева     4-5             4-5       5   \n",
       "\n",
       "    Количество дверей                                             colors  \\\n",
       "0                   5                     Белый, Голубой, Красный, Серый   \n",
       "1                   5  Голубой, Зеленый, Золотистый, Серебристый, Син...   \n",
       "2                   5           Зеленый, Оранжевый, Серый, Синий, Черный   \n",
       "3                   4                                             Черный   \n",
       "4                   5       Бронза, Белый, Красный, Серый, Синий, Черный   \n",
       "..                ...                                                ...   \n",
       "193                 5           Белый, Голубой, Оранжевый, Серый, Черный   \n",
       "194                 4  Бронза, Белый, Голубой, Желтый, Зеленый, Серый...   \n",
       "195                 5                        Белый, Серый, Синий, Черный   \n",
       "196                 5             Белый, Голубой, Зеленый, Серый, Черный   \n",
       "197                 5                     Бежевый, Белый, Зеленый, Серый   \n",
       "\n",
       "             Год  \n",
       "0            NaN  \n",
       "1            NaN  \n",
       "2            NaN  \n",
       "3    2023 - н.в.  \n",
       "4            NaN  \n",
       "..           ...  \n",
       "193          NaN  \n",
       "194          NaN  \n",
       "195          NaN  \n",
       "196          NaN  \n",
       "197          NaN  \n",
       "\n",
       "[198 rows x 21 columns]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>catalog_city</th>\n",
       "      <th>model_url</th>\n",
       "      <th>model_title</th>\n",
       "      <th>year</th>\n",
       "      <th>Год производства</th>\n",
       "      <th>country</th>\n",
       "      <th>Страна производства</th>\n",
       "      <th>generation</th>\n",
       "      <th>Поколение</th>\n",
       "      <th>body</th>\n",
       "      <th>...</th>\n",
       "      <th>model</th>\n",
       "      <th>Класс</th>\n",
       "      <th>rudder</th>\n",
       "      <th>Руль</th>\n",
       "      <th>nbSeats</th>\n",
       "      <th>Количество мест</th>\n",
       "      <th>nbDoors</th>\n",
       "      <th>Количество дверей</th>\n",
       "      <th>colors</th>\n",
       "      <th>Год</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>astana</td>\n",
       "      <td>https://kolesa.kz/cars/new/aito-m9-1-pokolenie...</td>\n",
       "      <td>AITO M9</td>\n",
       "      <td>2023 - н.в.</td>\n",
       "      <td>2023 - н.в.</td>\n",
       "      <td>Китай</td>\n",
       "      <td>Китай</td>\n",
       "      <td>1 поколение</td>\n",
       "      <td>1 поколение</td>\n",
       "      <td>кроссовер</td>\n",
       "      <td>...</td>\n",
       "      <td>SUV</td>\n",
       "      <td>SUV</td>\n",
       "      <td>слева</td>\n",
       "      <td>слева</td>\n",
       "      <td>5-6</td>\n",
       "      <td>5-6</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>Зеленый, Оранжевый, Серый, Синий, Черный</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>astana</td>\n",
       "      <td>https://kolesa.kz/cars/new/audi-a6/astana/</td>\n",
       "      <td>Ауди А6 2026 года в Астане</td>\n",
       "      <td>2023 - н.в.</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Германия</td>\n",
       "      <td>Германия</td>\n",
       "      <td>5 поколение</td>\n",
       "      <td>5 поколение</td>\n",
       "      <td>седан</td>\n",
       "      <td>...</td>\n",
       "      <td>E</td>\n",
       "      <td>E</td>\n",
       "      <td>слева</td>\n",
       "      <td>слева</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>Черный</td>\n",
       "      <td>2023 - н.в.</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>astana</td>\n",
       "      <td>https://kolesa.kz/cars/new/audi-a7/astana/</td>\n",
       "      <td>Ауди А7 2026 года в Астане</td>\n",
       "      <td>2017 - н.в.</td>\n",
       "      <td>2017 - н.в.</td>\n",
       "      <td>Германия</td>\n",
       "      <td>Германия</td>\n",
       "      <td>2 поколение</td>\n",
       "      <td>2 поколение</td>\n",
       "      <td>лифтбек</td>\n",
       "      <td>...</td>\n",
       "      <td>E</td>\n",
       "      <td>E</td>\n",
       "      <td>слева</td>\n",
       "      <td>слева</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>Бронза, Белый, Красный, Серый, Синий, Черный</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>astana</td>\n",
       "      <td>https://kolesa.kz/cars/new/audi-q7/astana/</td>\n",
       "      <td>Ауди Q7 2026 года в Астане</td>\n",
       "      <td>2019 - н.в.</td>\n",
       "      <td>2019 - н.в.</td>\n",
       "      <td>Словакия</td>\n",
       "      <td>Словакия</td>\n",
       "      <td>2 поколение</td>\n",
       "      <td>2 поколение</td>\n",
       "      <td>кроссовер</td>\n",
       "      <td>...</td>\n",
       "      <td>SUV</td>\n",
       "      <td>SUV</td>\n",
       "      <td>слева</td>\n",
       "      <td>слева</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>Белый, Красный, Серый, Синий, Черный</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>astana</td>\n",
       "      <td>https://kolesa.kz/cars/new/audi-q8-e-tron-1-po...</td>\n",
       "      <td>Audi Q8 e-tron</td>\n",
       "      <td>2022 - н.в.</td>\n",
       "      <td>2022 - н.в.</td>\n",
       "      <td>Бельгия</td>\n",
       "      <td>Бельгия</td>\n",
       "      <td>1 поколение</td>\n",
       "      <td>1 поколение</td>\n",
       "      <td>кроссовер</td>\n",
       "      <td>...</td>\n",
       "      <td>SUV</td>\n",
       "      <td>SUV</td>\n",
       "      <td>слева</td>\n",
       "      <td>слева</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>Белый, Красный, Серый, Синий, Черный</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>139</th>\n",
       "      <td>astana</td>\n",
       "      <td>https://kolesa.kz/cars/new/vaz-lada-niva-trave...</td>\n",
       "      <td>Lada Niva Travel 2026 года в Астане</td>\n",
       "      <td>2020 - н.в.</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Россия</td>\n",
       "      <td>Россия</td>\n",
       "      <td>1 поколение (рестайлинг)</td>\n",
       "      <td>1 поколение (рестайлинг)</td>\n",
       "      <td>внедорожник</td>\n",
       "      <td>...</td>\n",
       "      <td>SUV</td>\n",
       "      <td>SUV</td>\n",
       "      <td>слева</td>\n",
       "      <td>слева</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>Белый, Зеленый, Коричневый, Черный</td>\n",
       "      <td>2020 - н.в.</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>140</th>\n",
       "      <td>astana</td>\n",
       "      <td>https://kolesa.kz/cars/new/vaz-vesta-sw/astana/</td>\n",
       "      <td>Lada Vesta SW 2026 года в Астане</td>\n",
       "      <td>2022 - н.в.</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Россия</td>\n",
       "      <td>Россия</td>\n",
       "      <td>1 поколение (рестайлинг)</td>\n",
       "      <td>1 поколение (рестайлинг)</td>\n",
       "      <td>универсал</td>\n",
       "      <td>...</td>\n",
       "      <td>B</td>\n",
       "      <td>B</td>\n",
       "      <td>слева</td>\n",
       "      <td>слева</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>Белый, Коричневый, Серебристый, Серый, Черный</td>\n",
       "      <td>2022 - н.в.</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>141</th>\n",
       "      <td>astana</td>\n",
       "      <td>https://kolesa.kz/cars/new/vaz-vesta/astana/</td>\n",
       "      <td>Lada Vesta 2026 года в Астане</td>\n",
       "      <td>2022 - н.в.</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Россия</td>\n",
       "      <td>Россия</td>\n",
       "      <td>1 поколение (рестайлинг)</td>\n",
       "      <td>1 поколение (рестайлинг)</td>\n",
       "      <td>седан</td>\n",
       "      <td>...</td>\n",
       "      <td>B</td>\n",
       "      <td>B</td>\n",
       "      <td>слева</td>\n",
       "      <td>слева</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>Белый, Коричневый, Серебристый, Серый, Черный</td>\n",
       "      <td>2022 - н.в.</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>142</th>\n",
       "      <td>astana</td>\n",
       "      <td>https://kolesa.kz/cars/new/zeekr-007-1-pokolen...</td>\n",
       "      <td>Zeekr 007</td>\n",
       "      <td>2023 - н.в.</td>\n",
       "      <td>2023 - н.в.</td>\n",
       "      <td>Китай</td>\n",
       "      <td>Китай</td>\n",
       "      <td>1 поколение</td>\n",
       "      <td>1 поколение</td>\n",
       "      <td>седан</td>\n",
       "      <td>...</td>\n",
       "      <td>D</td>\n",
       "      <td>D</td>\n",
       "      <td>слева</td>\n",
       "      <td>слева</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>Бронза, Белый, Голубой, Желтый, Зеленый, Серый...</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>143</th>\n",
       "      <td>astana</td>\n",
       "      <td>https://kolesa.kz/cars/new/zeekr-009-1-pokolen...</td>\n",
       "      <td>Zeekr 009 2026 года в Астане</td>\n",
       "      <td>2022 - н.в.</td>\n",
       "      <td>2022 - н.в.</td>\n",
       "      <td>Китай</td>\n",
       "      <td>Китай</td>\n",
       "      <td>1 поколение</td>\n",
       "      <td>1 поколение</td>\n",
       "      <td>минивэн</td>\n",
       "      <td>...</td>\n",
       "      <td>М</td>\n",
       "      <td>М</td>\n",
       "      <td>слева</td>\n",
       "      <td>слева</td>\n",
       "      <td>6</td>\n",
       "      <td>6</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>Белый, Серый, Синий, Черный</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>144 rows × 21 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "    catalog_city                                          model_url  \\\n",
       "0         astana  https://kolesa.kz/cars/new/aito-m9-1-pokolenie...   \n",
       "1         astana         https://kolesa.kz/cars/new/audi-a6/astana/   \n",
       "2         astana         https://kolesa.kz/cars/new/audi-a7/astana/   \n",
       "3         astana         https://kolesa.kz/cars/new/audi-q7/astana/   \n",
       "4         astana  https://kolesa.kz/cars/new/audi-q8-e-tron-1-po...   \n",
       "..           ...                                                ...   \n",
       "139       astana  https://kolesa.kz/cars/new/vaz-lada-niva-trave...   \n",
       "140       astana    https://kolesa.kz/cars/new/vaz-vesta-sw/astana/   \n",
       "141       astana       https://kolesa.kz/cars/new/vaz-vesta/astana/   \n",
       "142       astana  https://kolesa.kz/cars/new/zeekr-007-1-pokolen...   \n",
       "143       astana  https://kolesa.kz/cars/new/zeekr-009-1-pokolen...   \n",
       "\n",
       "                             model_title         year Год производства  \\\n",
       "0                                AITO M9  2023 - н.в.      2023 - н.в.   \n",
       "1             Ауди А6 2026 года в Астане  2023 - н.в.              NaN   \n",
       "2             Ауди А7 2026 года в Астане  2017 - н.в.      2017 - н.в.   \n",
       "3             Ауди Q7 2026 года в Астане  2019 - н.в.      2019 - н.в.   \n",
       "4                         Audi Q8 e-tron  2022 - н.в.      2022 - н.в.   \n",
       "..                                   ...          ...              ...   \n",
       "139  Lada Niva Travel 2026 года в Астане  2020 - н.в.              NaN   \n",
       "140     Lada Vesta SW 2026 года в Астане  2022 - н.в.              NaN   \n",
       "141        Lada Vesta 2026 года в Астане  2022 - н.в.              NaN   \n",
       "142                            Zeekr 007  2023 - н.в.      2023 - н.в.   \n",
       "143         Zeekr 009 2026 года в Астане  2022 - н.в.      2022 - н.в.   \n",
       "\n",
       "      country Страна производства                generation  \\\n",
       "0       Китай               Китай               1 поколение   \n",
       "1    Германия            Германия               5 поколение   \n",
       "2    Германия            Германия               2 поколение   \n",
       "3    Словакия            Словакия               2 поколение   \n",
       "4     Бельгия             Бельгия               1 поколение   \n",
       "..        ...                 ...                       ...   \n",
       "139    Россия              Россия  1 поколение (рестайлинг)   \n",
       "140    Россия              Россия  1 поколение (рестайлинг)   \n",
       "141    Россия              Россия  1 поколение (рестайлинг)   \n",
       "142     Китай               Китай               1 поколение   \n",
       "143     Китай               Китай               1 поколение   \n",
       "\n",
       "                    Поколение         body  ... model Класс rudder   Руль  \\\n",
       "0                 1 поколение    кроссовер  ...   SUV   SUV  слева  слева   \n",
       "1                 5 поколение        седан  ...     E     E  слева  слева   \n",
       "2                 2 поколение      лифтбек  ...     E     E  слева  слева   \n",
       "3                 2 поколение    кроссовер  ...   SUV   SUV  слева  слева   \n",
       "4                 1 поколение    кроссовер  ...   SUV   SUV  слева  слева   \n",
       "..                        ...          ...  ...   ...   ...    ...    ...   \n",
       "139  1 поколение (рестайлинг)  внедорожник  ...   SUV   SUV  слева  слева   \n",
       "140  1 поколение (рестайлинг)    универсал  ...     B     B  слева  слева   \n",
       "141  1 поколение (рестайлинг)        седан  ...     B     B  слева  слева   \n",
       "142               1 поколение        седан  ...     D     D  слева  слева   \n",
       "143               1 поколение      минивэн  ...     М     М  слева  слева   \n",
       "\n",
       "    nbSeats Количество мест nbDoors Количество дверей  \\\n",
       "0       5-6             5-6       5                 5   \n",
       "1         5               5       4                 4   \n",
       "2         5               5       5                 5   \n",
       "3         5               5       5                 5   \n",
       "4         5               5       5                 5   \n",
       "..      ...             ...     ...               ...   \n",
       "139       5               5       5                 5   \n",
       "140       5               5       5                 5   \n",
       "141       5               5       5                 5   \n",
       "142       5               5       4                 4   \n",
       "143       6               6       5                 5   \n",
       "\n",
       "                                                colors          Год  \n",
       "0             Зеленый, Оранжевый, Серый, Синий, Черный          NaN  \n",
       "1                                               Черный  2023 - н.в.  \n",
       "2         Бронза, Белый, Красный, Серый, Синий, Черный          NaN  \n",
       "3                 Белый, Красный, Серый, Синий, Черный          NaN  \n",
       "4                 Белый, Красный, Серый, Синий, Черный          NaN  \n",
       "..                                                 ...          ...  \n",
       "139                 Белый, Зеленый, Коричневый, Черный  2020 - н.в.  \n",
       "140      Белый, Коричневый, Серебристый, Серый, Черный  2022 - н.в.  \n",
       "141      Белый, Коричневый, Серебристый, Серый, Черный  2022 - н.в.  \n",
       "142  Бронза, Белый, Голубой, Желтый, Зеленый, Серый...          NaN  \n",
       "143                        Белый, Серый, Синий, Черный          NaN  \n",
       "\n",
       "[144 rows x 21 columns]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# ===== ПОЛНЫЙ ЗАПУК С МНОГИМИ ПРИЗНАКАМИ (ИСПРАВЛЕНО) =====\n",
    "import pandas as pd\n",
    "import pickle\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.preprocessing import LabelEncoder\n",
    "from sklearn.ensemble import RandomForestClassifier\n",
    "from sklearn.metrics import accuracy_score, classification_report\n",
    "\n",
    "print(\"🚀 === ЗАПУК С ПОЛНЫМ НАБОРОМ ПРИЗНАКОВ ===\")\n",
    "\n",
    "# 1. Load datasets\n",
    "df_almaty = pd.read_csv(\"kolesa_new_almaty_embedded_ads.csv\")\n",
    "df_astana = pd.read_csv(\"kolesa_new_astana_embedded_ads.csv\")\n",
    "\n",
    "# 2. Merge datasets\n",
    "df_full = pd.concat([df_almaty, df_astana], ignore_index=True)  # ИСПРАВЛЕНО: df_full вместо df\n",
    "\n",
    "# 3. Clean column names\n",
    "df_full.columns = df_full.columns.str.strip()\n",
    "\n",
    "print(\"Columns:\")\n",
    "print(df_full.columns.tolist())\n",
    "\n",
    "# 4. Use fewer columns to avoid losing almost all rows\n",
    "cols = ['catalog_city', 'year', 'country', 'model', 'rudder', 'body']\n",
    "df_model = df_full[cols].copy()  # ИСПРАВЛЕНО: df_model вместо df\n",
    "\n",
    "print(\"\\nMissing values before cleaning:\")\n",
    "print(df_model.isna().sum())\n",
    "\n",
    "print(\"\\nRows before cleaning:\", len(df_model))\n",
    "\n",
    "# 5. Convert numeric column\n",
    "df_model['year'] = pd.to_numeric(df_model['year'], errors='coerce')\n",
    "\n",
    "# 6. Drop rows only where critical columns are missing\n",
    "df_model = df_model.dropna(subset=['catalog_city', 'year', 'country', 'model', 'rudder', 'body'])\n",
    "\n",
    "print(\"\\nRows after cleaning:\", len(df_model))\n",
    "print(\"\\nData after cleaning:\")\n",
    "print(df_model.head())\n",
    "\n",
    "# 7. Encode categorical columns\n",
    "encoders = {}\n",
    "categorical_cols = ['catalog_city', 'country', 'model', 'rudder', 'body']\n",
    "\n",
    "for col in categorical_cols:\n",
    "    le = LabelEncoder()\n",
    "    df_model[col] = le.fit_transform(df_model[col].astype(str))\n",
    "    encoders[col] = le\n",
    "\n",
    "# 8. Features and target\n",
    "X = df_model[['catalog_city', 'year', 'country', 'model', 'rudder']]\n",
    "y = df_model['body']\n",
    "\n",
    "# 9. ПРОВЕРКА РАСПРЕДЕЛЕНИЯ КЛАССОВ ПЕРЕД РАЗДЕЛЕНИЕМ\n",
    "print(\"\\nРаспределение классов перед разделением:\")\n",
    "class_counts = y.value_counts()\n",
    "print(class_counts)\n",
    "\n",
    "# Фильтрация классов с недостаточным количеством данных\n",
    "min_samples_per_class = 2\n",
    "valid_classes = class_counts[class_counts >= min_samples_per_class].index\n",
    "X_filtered = X[y.isin(valid_classes)]\n",
    "y_filtered = y[y.isin(valid_classes)]\n",
    "\n",
    "print(f\"\\nПосле фильтрации классов с < {min_samples_per_class} образцов:\")\n",
    "print(f\"Осталось классов: {len(valid_classes)}\")\n",
    "print(f\"Осталось строк: {len(X_filtered)}\")\n",
    "\n",
    "# 10. Split data (ИСПРАВЛЕНО)\n",
    "try:\n",
    "    X_train, X_test, y_train, y_test = train_test_split(\n",
    "        X_filtered, y_filtered, test_size=0.2, random_state=42, stratify=y_filtered\n",
    "    )\n",
    "    print(f\"\\n✅ Разделение с stratify успешно\")\n",
    "except ValueError as e:\n",
    "    print(f\"\\n⚠️ Ошибка с stratify: {e}\")\n",
    "    print(\"Используем разделение без stratify\")\n",
    "    X_train, X_test, y_train, y_test = train_test_split(\n",
    "        X_filtered, y_filtered, test_size=0.2, random_state=42\n",
    "    )\n",
    "\n",
    "# 11. Train model\n",
    "model = RandomForestClassifier(\n",
    "    n_estimators=200,\n",
    "    max_depth=12,\n",
    "    random_state=42\n",
    ")\n",
    "\n",
    "model.fit(X_train, y_train)\n",
    "\n",
    "# 12. Predict on test set\n",
    "y_pred = model.predict(X_test)\n",
    "\n",
    "# 13. Evaluate\n",
    "acc = accuracy_score(y_test, y_pred)\n",
    "print(\"\\nTest Accuracy:\", acc)\n",
    "print(\"\\nClassification Report:\")\n",
    "print(classification_report(y_test, y_pred, zero_division=0))\n",
    "\n",
    "# 14. Predict on full dataset\n",
    "all_predictions = model.predict(X_filtered)\n",
    "full_acc = accuracy_score(y_filtered, all_predictions)\n",
    "\n",
    "print(\"\\nAccuracy on FULL dataset:\", full_acc)\n",
    "\n",
    "# 15. Save predictions\n",
    "df_filtered = df_model[df_model['body'].isin(valid_classes)].copy()\n",
    "df_filtered['predicted_body'] = all_predictions\n",
    "\n",
    "print(\"\\nSample predictions:\")\n",
    "print(df_filtered[['body', 'predicted_body']].head(20))\n",
    "\n",
    "# 16. Feature importance\n",
    "feature_importance = pd.DataFrame({\n",
    "    \"feature\": X_filtered.columns,\n",
    "    \"importance\": model.feature_importances_\n",
    "}).sort_values(by=\"importance\", ascending=False)\n",
    "\n",
    "print(\"\\nFeature importance:\")\n",
    "print(feature_importance)\n",
    "\n",
    "# 17. Save model\n",
    "with open(\"body_prediction_model.pkl\", \"wb\") as f:\n",
    "    pickle.dump(model, f)\n",
    "\n",
    "print(\"\\nModel saved as body_prediction_model.pkl\")\n",
    "print(\"\\n🎉 ГОТОВО! Используйте эту ячейку вместо ячеек 2-12\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "4fcf861e",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Almaty rows: 198\n",
      "Astana rows: 144\n",
      "\n",
      "Almaty columns:\n",
      "['catalog_city', 'model_url', 'model_title', 'year', 'Год производства', 'country', 'Страна производства', 'generation', 'Поколение', 'body', 'Кузов', 'model', 'Класс', 'rudder', 'Руль', 'nbSeats', 'Количество мест', 'nbDoors', 'Количество дверей', 'colors', 'Год']\n",
      "\n",
      "Astana columns:\n",
      "['catalog_city', 'model_url', 'model_title', 'year', 'Год производства', 'country', 'Страна производства', 'generation', 'Поколение', 'body', 'Кузов', 'model', 'Класс', 'rudder', 'Руль', 'nbSeats', 'Количество мест', 'nbDoors', 'Количество дверей', 'colors', 'Год']\n",
      "\n",
      "Total merged rows: 342\n",
      "\n",
      "Missing values in RAW merged data:\n",
      "catalog_city    0\n",
      "year            0\n",
      "country         0\n",
      "generation      0\n",
      "model           0\n",
      "rudder          0\n",
      "nbSeats         0\n",
      "nbDoors         0\n",
      "colors          0\n",
      "body            0\n",
      "dtype: int64\n",
      "\n",
      "Rows before dropna: 342\n",
      "Rows after dropna: 342\n",
      "\n",
      "First 10 rows of raw selected data:\n",
      "  catalog_city         year   country                generation model rudder  \\\n",
      "0       almaty  2024 - н.в.     Китай  1 поколение (рестайлинг)   SUV  слева   \n",
      "1       almaty  2022 - н.в.     Китай               1 поколение   SUV  слева   \n",
      "2       almaty  2023 - н.в.     Китай               1 поколение   SUV  слева   \n",
      "3       almaty  2023 - н.в.  Германия               5 поколение     E  слева   \n",
      "4       almaty  2017 - н.в.  Германия               2 поколение     E  слева   \n",
      "5       almaty  2021 - н.в.  Германия               2 поколение   SUV  слева   \n",
      "6       almaty  2020 - н.в.  Германия               2 поколение   SUV  слева   \n",
      "7       almaty  2019 - н.в.  Словакия               2 поколение   SUV  слева   \n",
      "8       almaty  2022 - н.в.   Бельгия               1 поколение   SUV  слева   \n",
      "9       almaty  2020 - н.в.  Германия               1 поколение   SUV  слева   \n",
      "\n",
      "  nbSeats nbDoors                                             colors  \\\n",
      "0       5       5                     Белый, Голубой, Красный, Серый   \n",
      "1     5-6       5  Голубой, Зеленый, Золотистый, Серебристый, Син...   \n",
      "2     5-6       5           Зеленый, Оранжевый, Серый, Синий, Черный   \n",
      "3       5       4                                             Черный   \n",
      "4       5       5       Бронза, Белый, Красный, Серый, Синий, Черный   \n",
      "5       5       5             Белый, Оранжевый, Серый, Синий, Черный   \n",
      "6       5       5                                             Черный   \n",
      "7       5       5               Белый, Красный, Серый, Синий, Черный   \n",
      "8       5       5               Белый, Красный, Серый, Синий, Черный   \n",
      "9       5       5                    Белый, Оранжевый, Синий, Черный   \n",
      "\n",
      "        body  \n",
      "0  кроссовер  \n",
      "1  кроссовер  \n",
      "2  кроссовер  \n",
      "3      седан  \n",
      "4    лифтбек  \n",
      "5  кроссовер  \n",
      "6  кроссовер  \n",
      "7  кроссовер  \n",
      "8  кроссовер  \n",
      "9  кроссовер  \n"
     ]
    }
   ],
   "source": [
    "import pandas as pd\n",
    "\n",
    "# Read raw files again\n",
    "df_almaty_raw = pd.read_csv(\"kolesa_new_almaty_embedded_ads.csv\")\n",
    "df_astana_raw = pd.read_csv(\"kolesa_new_astana_embedded_ads.csv\")\n",
    "\n",
    "print(\"Almaty rows:\", len(df_almaty_raw))\n",
    "print(\"Astana rows:\", len(df_astana_raw))\n",
    "\n",
    "print(\"\\nAlmaty columns:\")\n",
    "print(df_almaty_raw.columns.tolist())\n",
    "\n",
    "print(\"\\nAstana columns:\")\n",
    "print(df_astana_raw.columns.tolist())\n",
    "\n",
    "# Merge raw data\n",
    "df_raw = pd.concat([df_almaty_raw, df_astana_raw], ignore_index=True)\n",
    "df_raw.columns = df_raw.columns.str.strip()\n",
    "\n",
    "print(\"\\nTotal merged rows:\", len(df_raw))\n",
    "\n",
    "cols = ['catalog_city', 'year', 'country', 'generation', 'model', 'rudder', 'nbSeats', 'nbDoors', 'colors', 'body']\n",
    "\n",
    "temp = df_raw[cols].copy()\n",
    "\n",
    "print(\"\\nMissing values in RAW merged data:\")\n",
    "print(temp.isna().sum())\n",
    "\n",
    "print(\"\\nRows before dropna:\", len(temp))\n",
    "print(\"Rows after dropna:\", len(temp.dropna()))\n",
    "\n",
    "print(\"\\nFirst 10 rows of raw selected data:\")\n",
    "print(temp.head(10))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "eaf86888",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "catalog_city             1\n",
       "model_url              198\n",
       "model_title            197\n",
       "year                    15\n",
       "Год производства        11\n",
       "country                 15\n",
       "Страна производства     15\n",
       "generation              27\n",
       "Поколение               27\n",
       "body                    14\n",
       "Кузов                   14\n",
       "model                   11\n",
       "Класс                   11\n",
       "rudder                   2\n",
       "Руль                     2\n",
       "nbSeats                 18\n",
       "Количество мест         18\n",
       "nbDoors                  6\n",
       "Количество дверей        6\n",
       "colors                 116\n",
       "Год                     13\n",
       "dtype: int64"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.nunique()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "8dba2283",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "catalog_city             0\n",
       "model_url                0\n",
       "model_title              0\n",
       "year                     0\n",
       "Год производства        72\n",
       "country                  0\n",
       "Страна производства      0\n",
       "generation               0\n",
       "Поколение                0\n",
       "body                     0\n",
       "Кузов                    0\n",
       "model                    0\n",
       "Класс                    0\n",
       "rudder                   0\n",
       "Руль                     0\n",
       "nbSeats                  0\n",
       "Количество мест          0\n",
       "nbDoors                  0\n",
       "Количество дверей        0\n",
       "colors                   0\n",
       "Год                    126\n",
       "dtype: int64"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.isnull().sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "30809a78",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "body\n",
      "кроссовер            191\n",
      "седан                 60\n",
      "внедорожник           35\n",
      "лифтбек               13\n",
      "пикап                  9\n",
      "универсал              8\n",
      "минивэн                8\n",
      "микроавтобус           4\n",
      "хэтчбек                4\n",
      "седан / универсал      2\n",
      "микровэн               2\n",
      "фургон                 2\n",
      "кабриолет              2\n",
      "купе                   2\n",
      "Name: count, dtype: int64\n",
      "Unique body classes: 14\n"
     ]
    }
   ],
   "source": [
    "print(df_raw['body'].value_counts())\n",
    "print(\"Unique body classes:\", df_raw['body'].nunique())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "5e7aad07",
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "\n",
    "def merge_cols(df, col1, col2):\n",
    "    if col1 in df.columns and col2 in df.columns:\n",
    "        df[col1] = df[col1].fillna(df[col2])\n",
    "    return df\n",
    "\n",
    "to_merge = [\n",
    "    ('year', 'Год производства'),\n",
    "    ('country', 'Страна производства'),\n",
    "    ('generation', 'Поколение'),\n",
    "    ('body', 'Кузов'),\n",
    "    ('rudder', 'Руль'),\n",
    "    ('nbSeats', 'Количество мест'),\n",
    "    ('nbDoors', 'Количество дверей')\n",
    "]\n",
    "\n",
    "for c1, c2 in to_merge:\n",
    "    df = merge_cols(df, c1, c2)\n",
    "\n",
    "cols_to_drop = [c[1] for c in to_merge if c[1] in df.columns] + ['Год']\n",
    "df = df.drop(columns=cols_to_drop, errors='ignore')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "37a8572a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>catalog_city</th>\n",
       "      <th>model_url</th>\n",
       "      <th>model_title</th>\n",
       "      <th>year</th>\n",
       "      <th>Год производства</th>\n",
       "      <th>country</th>\n",
       "      <th>Страна производства</th>\n",
       "      <th>generation</th>\n",
       "      <th>Поколение</th>\n",
       "      <th>body</th>\n",
       "      <th>...</th>\n",
       "      <th>model</th>\n",
       "      <th>Класс</th>\n",
       "      <th>rudder</th>\n",
       "      <th>Руль</th>\n",
       "      <th>nbSeats</th>\n",
       "      <th>Количество мест</th>\n",
       "      <th>nbDoors</th>\n",
       "      <th>Количество дверей</th>\n",
       "      <th>colors</th>\n",
       "      <th>Год</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>almaty</td>\n",
       "      <td>https://kolesa.kz/cars/new/aito-m5-1-pokolenie...</td>\n",
       "      <td>AITO M5</td>\n",
       "      <td>2024 - н.в.</td>\n",
       "      <td>2024 - н.в.</td>\n",
       "      <td>Китай</td>\n",
       "      <td>Китай</td>\n",
       "      <td>1 поколение (рестайлинг)</td>\n",
       "      <td>1 поколение (рестайлинг)</td>\n",
       "      <td>кроссовер</td>\n",
       "      <td>...</td>\n",
       "      <td>SUV</td>\n",
       "      <td>SUV</td>\n",
       "      <td>слева</td>\n",
       "      <td>слева</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>Белый, Голубой, Красный, Серый</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>almaty</td>\n",
       "      <td>https://kolesa.kz/cars/new/aito-m7-1-pokolenie...</td>\n",
       "      <td>AITO M7</td>\n",
       "      <td>2022 - н.в.</td>\n",
       "      <td>2022 - н.в.</td>\n",
       "      <td>Китай</td>\n",
       "      <td>Китай</td>\n",
       "      <td>1 поколение</td>\n",
       "      <td>1 поколение</td>\n",
       "      <td>кроссовер</td>\n",
       "      <td>...</td>\n",
       "      <td>SUV</td>\n",
       "      <td>SUV</td>\n",
       "      <td>слева</td>\n",
       "      <td>слева</td>\n",
       "      <td>5-6</td>\n",
       "      <td>5-6</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>Голубой, Зеленый, Золотистый, Серебристый, Син...</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>almaty</td>\n",
       "      <td>https://kolesa.kz/cars/new/aito-m9-1-pokolenie...</td>\n",
       "      <td>AITO M9</td>\n",
       "      <td>2023 - н.в.</td>\n",
       "      <td>2023 - н.в.</td>\n",
       "      <td>Китай</td>\n",
       "      <td>Китай</td>\n",
       "      <td>1 поколение</td>\n",
       "      <td>1 поколение</td>\n",
       "      <td>кроссовер</td>\n",
       "      <td>...</td>\n",
       "      <td>SUV</td>\n",
       "      <td>SUV</td>\n",
       "      <td>слева</td>\n",
       "      <td>слева</td>\n",
       "      <td>5-6</td>\n",
       "      <td>5-6</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>Зеленый, Оранжевый, Серый, Синий, Черный</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>almaty</td>\n",
       "      <td>https://kolesa.kz/cars/new/audi-a6/almaty/</td>\n",
       "      <td>Ауди А6 2026 года в Алматы</td>\n",
       "      <td>2023 - н.в.</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Германия</td>\n",
       "      <td>Германия</td>\n",
       "      <td>5 поколение</td>\n",
       "      <td>5 поколение</td>\n",
       "      <td>седан</td>\n",
       "      <td>...</td>\n",
       "      <td>E</td>\n",
       "      <td>E</td>\n",
       "      <td>слева</td>\n",
       "      <td>слева</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>Черный</td>\n",
       "      <td>2023 - н.в.</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>almaty</td>\n",
       "      <td>https://kolesa.kz/cars/new/audi-a7/almaty/</td>\n",
       "      <td>Ауди А7 2026 года в Алматы</td>\n",
       "      <td>2017 - н.в.</td>\n",
       "      <td>2017 - н.в.</td>\n",
       "      <td>Германия</td>\n",
       "      <td>Германия</td>\n",
       "      <td>2 поколение</td>\n",
       "      <td>2 поколение</td>\n",
       "      <td>лифтбек</td>\n",
       "      <td>...</td>\n",
       "      <td>E</td>\n",
       "      <td>E</td>\n",
       "      <td>слева</td>\n",
       "      <td>слева</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>Бронза, Белый, Красный, Серый, Синий, Черный</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>193</th>\n",
       "      <td>almaty</td>\n",
       "      <td>https://kolesa.kz/cars/new/zeekr-001-1-pokolen...</td>\n",
       "      <td>Zeekr 001 2026 года в Алматы</td>\n",
       "      <td>2021 - н.в.</td>\n",
       "      <td>2021 - н.в.</td>\n",
       "      <td>Китай</td>\n",
       "      <td>Китай</td>\n",
       "      <td>1 поколение</td>\n",
       "      <td>1 поколение</td>\n",
       "      <td>лифтбек</td>\n",
       "      <td>...</td>\n",
       "      <td>E</td>\n",
       "      <td>E</td>\n",
       "      <td>слева</td>\n",
       "      <td>слева</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>Белый, Голубой, Оранжевый, Серый, Черный</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>194</th>\n",
       "      <td>almaty</td>\n",
       "      <td>https://kolesa.kz/cars/new/zeekr-007-1-pokolen...</td>\n",
       "      <td>Zeekr 007</td>\n",
       "      <td>2023 - н.в.</td>\n",
       "      <td>2023 - н.в.</td>\n",
       "      <td>Китай</td>\n",
       "      <td>Китай</td>\n",
       "      <td>1 поколение</td>\n",
       "      <td>1 поколение</td>\n",
       "      <td>седан</td>\n",
       "      <td>...</td>\n",
       "      <td>D</td>\n",
       "      <td>D</td>\n",
       "      <td>слева</td>\n",
       "      <td>слева</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "      <td>Бронза, Белый, Голубой, Желтый, Зеленый, Серый...</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>195</th>\n",
       "      <td>almaty</td>\n",
       "      <td>https://kolesa.kz/cars/new/zeekr-009-1-pokolen...</td>\n",
       "      <td>Zeekr 009 2026 года в Алматы</td>\n",
       "      <td>2022 - н.в.</td>\n",
       "      <td>2022 - н.в.</td>\n",
       "      <td>Китай</td>\n",
       "      <td>Китай</td>\n",
       "      <td>1 поколение</td>\n",
       "      <td>1 поколение</td>\n",
       "      <td>минивэн</td>\n",
       "      <td>...</td>\n",
       "      <td>М</td>\n",
       "      <td>М</td>\n",
       "      <td>слева</td>\n",
       "      <td>слева</td>\n",
       "      <td>6</td>\n",
       "      <td>6</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>Белый, Серый, Синий, Черный</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>196</th>\n",
       "      <td>almaty</td>\n",
       "      <td>https://kolesa.kz/cars/new/zeekr-7x-1-pokoleni...</td>\n",
       "      <td>Zeekr 7X</td>\n",
       "      <td>2024 - н.в.</td>\n",
       "      <td>2024 - н.в.</td>\n",
       "      <td>Китай</td>\n",
       "      <td>Китай</td>\n",
       "      <td>1 поколение</td>\n",
       "      <td>1 поколение</td>\n",
       "      <td>кроссовер</td>\n",
       "      <td>...</td>\n",
       "      <td>SUV</td>\n",
       "      <td>SUV</td>\n",
       "      <td>слева</td>\n",
       "      <td>слева</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>Белый, Голубой, Зеленый, Серый, Черный</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>197</th>\n",
       "      <td>almaty</td>\n",
       "      <td>https://kolesa.kz/cars/new/zeekr-x-1-pokolenie...</td>\n",
       "      <td>Zeekr X 2026 года в Алматы</td>\n",
       "      <td>2023 - н.в.</td>\n",
       "      <td>2023 - н.в.</td>\n",
       "      <td>Китай</td>\n",
       "      <td>Китай</td>\n",
       "      <td>1 поколение</td>\n",
       "      <td>1 поколение</td>\n",
       "      <td>кроссовер</td>\n",
       "      <td>...</td>\n",
       "      <td>SUV</td>\n",
       "      <td>SUV</td>\n",
       "      <td>слева</td>\n",
       "      <td>слева</td>\n",
       "      <td>4-5</td>\n",
       "      <td>4-5</td>\n",
       "      <td>5</td>\n",
       "      <td>5</td>\n",
       "      <td>Бежевый, Белый, Зеленый, Серый</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>198 rows × 21 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "    catalog_city                                          model_url  \\\n",
       "0         almaty  https://kolesa.kz/cars/new/aito-m5-1-pokolenie...   \n",
       "1         almaty  https://kolesa.kz/cars/new/aito-m7-1-pokolenie...   \n",
       "2         almaty  https://kolesa.kz/cars/new/aito-m9-1-pokolenie...   \n",
       "3         almaty         https://kolesa.kz/cars/new/audi-a6/almaty/   \n",
       "4         almaty         https://kolesa.kz/cars/new/audi-a7/almaty/   \n",
       "..           ...                                                ...   \n",
       "193       almaty  https://kolesa.kz/cars/new/zeekr-001-1-pokolen...   \n",
       "194       almaty  https://kolesa.kz/cars/new/zeekr-007-1-pokolen...   \n",
       "195       almaty  https://kolesa.kz/cars/new/zeekr-009-1-pokolen...   \n",
       "196       almaty  https://kolesa.kz/cars/new/zeekr-7x-1-pokoleni...   \n",
       "197       almaty  https://kolesa.kz/cars/new/zeekr-x-1-pokolenie...   \n",
       "\n",
       "                      model_title         year Год производства   country  \\\n",
       "0                         AITO M5  2024 - н.в.      2024 - н.в.     Китай   \n",
       "1                         AITO M7  2022 - н.в.      2022 - н.в.     Китай   \n",
       "2                         AITO M9  2023 - н.в.      2023 - н.в.     Китай   \n",
       "3      Ауди А6 2026 года в Алматы  2023 - н.в.              NaN  Германия   \n",
       "4      Ауди А7 2026 года в Алматы  2017 - н.в.      2017 - н.в.  Германия   \n",
       "..                            ...          ...              ...       ...   \n",
       "193  Zeekr 001 2026 года в Алматы  2021 - н.в.      2021 - н.в.     Китай   \n",
       "194                     Zeekr 007  2023 - н.в.      2023 - н.в.     Китай   \n",
       "195  Zeekr 009 2026 года в Алматы  2022 - н.в.      2022 - н.в.     Китай   \n",
       "196                      Zeekr 7X  2024 - н.в.      2024 - н.в.     Китай   \n",
       "197    Zeekr X 2026 года в Алматы  2023 - н.в.      2023 - н.в.     Китай   \n",
       "\n",
       "    Страна производства                generation                 Поколение  \\\n",
       "0                 Китай  1 поколение (рестайлинг)  1 поколение (рестайлинг)   \n",
       "1                 Китай               1 поколение               1 поколение   \n",
       "2                 Китай               1 поколение               1 поколение   \n",
       "3              Германия               5 поколение               5 поколение   \n",
       "4              Германия               2 поколение               2 поколение   \n",
       "..                  ...                       ...                       ...   \n",
       "193               Китай               1 поколение               1 поколение   \n",
       "194               Китай               1 поколение               1 поколение   \n",
       "195               Китай               1 поколение               1 поколение   \n",
       "196               Китай               1 поколение               1 поколение   \n",
       "197               Китай               1 поколение               1 поколение   \n",
       "\n",
       "          body  ... model Класс rudder   Руль nbSeats Количество мест nbDoors  \\\n",
       "0    кроссовер  ...   SUV   SUV  слева  слева       5               5       5   \n",
       "1    кроссовер  ...   SUV   SUV  слева  слева     5-6             5-6       5   \n",
       "2    кроссовер  ...   SUV   SUV  слева  слева     5-6             5-6       5   \n",
       "3        седан  ...     E     E  слева  слева       5               5       4   \n",
       "4      лифтбек  ...     E     E  слева  слева       5               5       5   \n",
       "..         ...  ...   ...   ...    ...    ...     ...             ...     ...   \n",
       "193    лифтбек  ...     E     E  слева  слева       5               5       5   \n",
       "194      седан  ...     D     D  слева  слева       5               5       4   \n",
       "195    минивэн  ...     М     М  слева  слева       6               6       5   \n",
       "196  кроссовер  ...   SUV   SUV  слева  слева       5               5       5   \n",
       "197  кроссовер  ...   SUV   SUV  слева  слева     4-5             4-5       5   \n",
       "\n",
       "    Количество дверей                                             colors  \\\n",
       "0                   5                     Белый, Голубой, Красный, Серый   \n",
       "1                   5  Голубой, Зеленый, Золотистый, Серебристый, Син...   \n",
       "2                   5           Зеленый, Оранжевый, Серый, Синий, Черный   \n",
       "3                   4                                             Черный   \n",
       "4                   5       Бронза, Белый, Красный, Серый, Синий, Черный   \n",
       "..                ...                                                ...   \n",
       "193                 5           Белый, Голубой, Оранжевый, Серый, Черный   \n",
       "194                 4  Бронза, Белый, Голубой, Желтый, Зеленый, Серый...   \n",
       "195                 5                        Белый, Серый, Синий, Черный   \n",
       "196                 5             Белый, Голубой, Зеленый, Серый, Черный   \n",
       "197                 5                     Бежевый, Белый, Зеленый, Серый   \n",
       "\n",
       "             Год  \n",
       "0            NaN  \n",
       "1            NaN  \n",
       "2            NaN  \n",
       "3    2023 - н.в.  \n",
       "4            NaN  \n",
       "..           ...  \n",
       "193          NaN  \n",
       "194          NaN  \n",
       "195          NaN  \n",
       "196          NaN  \n",
       "197          NaN  \n",
       "\n",
       "[198 rows x 21 columns]"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "a86bcca9",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Очищенные данные:\n",
      "Всего строк: 342\n",
      "Пропущенных значений в nbSeats_clean: 0\n",
      "Пропущенных значений в nbDoors_clean: 0\n",
      "\n",
      "Оставшиеся классы body:\n",
      "body\n",
      "кроссовер      191\n",
      "седан           60\n",
      "внедорожник     35\n",
      "лифтбек         13\n",
      "пикап            9\n",
      "универсал        8\n",
      "минивэн          8\n",
      "Name: count, dtype: int64\n",
      "Строк после фильтрации: 324\n"
     ]
    }
   ],
   "source": [
    "# Очистка данных и подготовка для моделирования\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "import re  # ДОБАВЛЕНО: импорт модуля re\n",
    "\n",
    "# Используем объединенные данные\n",
    "df_clean = df_raw.copy()\n",
    "\n",
    "# Функция для очистки nbSeats и nbDoors\n",
    "def clean_seats_doors(value):\n",
    "    if pd.isna(value):\n",
    "        return None\n",
    "    if isinstance(value, str):\n",
    "        # Извлекаем первое число из строк типа \"5-6\" или \"5-7\"\n",
    "        match = re.search(r'\\d+', value)\n",
    "        return int(match.group()) if match else None\n",
    "    return int(value) if pd.notna(value) else None\n",
    "\n",
    "# Применяем очистку\n",
    "df_clean['nbSeats_clean'] = df_clean['nbSeats'].apply(clean_seats_doors)\n",
    "df_clean['nbDoors_clean'] = df_clean['nbDoors'].apply(clean_seats_doors)\n",
    "\n",
    "print(\"Очищенные данные:\")\n",
    "print(f\"Всего строк: {len(df_clean)}\")\n",
    "print(f\"Пропущенных значений в nbSeats_clean: {df_clean['nbSeats_clean'].isnull().sum()}\")\n",
    "print(f\"Пропущенных значений в nbDoors_clean: {df_clean['nbDoors_clean'].isnull().sum()}\")\n",
    "\n",
    "# Удаляем редкие классы (менее 5 samples)\n",
    "body_counts = df_clean['body'].value_counts()\n",
    "valid_classes = body_counts[body_counts >= 5].index\n",
    "df_clean = df_clean[df_clean['body'].isin(valid_classes)]\n",
    "\n",
    "print(f\"\\nОставшиеся классы body:\")\n",
    "print(df_clean['body'].value_counts())\n",
    "print(f\"Строк после фильтрации: {len(df_clean)}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "ab4515af",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Пропущенные значения перед очисткой:\n",
      "nbSeats_clean    0\n",
      "nbDoors_clean    0\n",
      "dtype: int64\n",
      "\n",
      "Строк после удаления NaN: 324 (удалено 0 строк)\n",
      "\n",
      "Распределение классов перед разделением:\n",
      "body\n",
      "кроссовер      191\n",
      "седан           60\n",
      "внедорожник     35\n",
      "лифтбек         13\n",
      "пикап            9\n",
      "универсал        8\n",
      "минивэн          8\n",
      "Name: count, dtype: int64\n",
      "\n",
      "После фильтрации классов с < 2 образцов:\n",
      "Осталось классов: 7\n",
      "Осталось строк: 324\n",
      "\n",
      "✅ Разделение с stratify успешно\n",
      "Размер обучающей выборки: 259\n",
      "Размер тестовой выборки: 65\n",
      "\n",
      "Точность модели: 0.769\n",
      "\n",
      "Classification Report:\n",
      "              precision    recall  f1-score   support\n",
      "\n",
      " внедорожник       1.00      0.14      0.25         7\n",
      "   кроссовер       0.77      0.97      0.86        38\n",
      "     лифтбек       0.00      0.00      0.00         3\n",
      "     минивэн       0.00      0.00      0.00         2\n",
      "       пикап       0.00      0.00      0.00         2\n",
      "       седан       0.75      1.00      0.86        12\n",
      "   универсал       0.00      0.00      0.00         1\n",
      "\n",
      "    accuracy                           0.77        65\n",
      "   macro avg       0.36      0.30      0.28        65\n",
      "weighted avg       0.70      0.77      0.69        65\n",
      "\n",
      "\n",
      "Важность признаков:\n",
      "         feature  importance\n",
      "1  nbDoors_clean    0.814042\n",
      "0  nbSeats_clean    0.185958\n"
     ]
    }
   ],
   "source": [
    "# Моделирование (ИСПРАВЛЕНО: проблема с stratify)\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.ensemble import RandomForestClassifier\n",
    "from sklearn.metrics import classification_report, accuracy_score\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "import re\n",
    "\n",
    "# Подготовка данных для модели\n",
    "X = df_clean[['nbSeats_clean', 'nbDoors_clean']].copy()\n",
    "y = df_clean['body'].copy()\n",
    "\n",
    "# Удаление строк с NaN значениями\n",
    "print(\"Пропущенные значения перед очисткой:\")\n",
    "print(X.isnull().sum())\n",
    "\n",
    "mask = ~(X.isnull().any(axis=1) | y.isnull())\n",
    "X_clean = X[mask]\n",
    "y_clean = y[mask]\n",
    "\n",
    "print(f\"\\nСтрок после удаления NaN: {len(X_clean)} (удалено {len(X) - len(X_clean)} строк)\")\n",
    "\n",
    "# Проверка распределения классов\n",
    "print(\"\\nРаспределение классов перед разделением:\")\n",
    "class_counts = y_clean.value_counts()\n",
    "print(class_counts)\n",
    "\n",
    "# Фильтрация классов с недостаточным количеством данных\n",
    "min_samples_per_class = 2\n",
    "valid_classes = class_counts[class_counts >= min_samples_per_class].index\n",
    "X_filtered = X_clean[y_clean.isin(valid_classes)]\n",
    "y_filtered = y_clean[y_clean.isin(valid_classes)]\n",
    "\n",
    "print(f\"\\nПосле фильтрации классов с < {min_samples_per_class} образцов:\")\n",
    "print(f\"Осталось классов: {len(valid_classes)}\")\n",
    "print(f\"Осталось строк: {len(X_filtered)}\")\n",
    "\n",
    "# Проверка достаточности данных\n",
    "if len(X_filtered) < 10:\n",
    "    print(\"Ошибка: Недостаточно данных после очистки!\")\n",
    "else:\n",
    "    # Разделение данных с проверкой на stratify\n",
    "    try:\n",
    "        X_train, X_test, y_train, y_test = train_test_split(\n",
    "            X_filtered, y_filtered, test_size=0.2, random_state=42, stratify=y_filtered\n",
    "        )\n",
    "        print(f\"\\n✅ Разделение с stratify успешно\")\n",
    "    except ValueError as e:\n",
    "        print(f\"\\n⚠️ Ошибка с stratify: {e}\")\n",
    "        print(\"Используем разделение без stratify\")\n",
    "        X_train, X_test, y_train, y_test = train_test_split(\n",
    "            X_filtered, y_filtered, test_size=0.2, random_state=42\n",
    "        )\n",
    "    \n",
    "    print(f\"Размер обучающей выборки: {len(X_train)}\")\n",
    "    print(f\"Размер тестовой выборки: {len(X_test)}\")\n",
    "    \n",
    "    # Обучение модели\n",
    "    model = RandomForestClassifier(\n",
    "        n_estimators=200,\n",
    "        max_depth=12,\n",
    "        random_state=42\n",
    "    )\n",
    "    model.fit(X_train, y_train)\n",
    "    \n",
    "    # Оценка модели\n",
    "    y_pred = model.predict(X_test)\n",
    "    accuracy = accuracy_score(y_test, y_pred)\n",
    "    \n",
    "    print(f\"\\nТочность модели: {accuracy:.3f}\")\n",
    "    print(\"\\nClassification Report:\")\n",
    "    print(classification_report(y_test, y_pred, zero_division=0))\n",
    "    \n",
    "    # Важность признаков\n",
    "    feature_importance = pd.DataFrame({\n",
    "        'feature': X.columns,\n",
    "        'importance': model.feature_importances_\n",
    "    }).sort_values('importance', ascending=False)\n",
    "    \n",
    "    print(\"\\nВажность признаков:\")\n",
    "    print(feature_importance)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "7f74a47c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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ffjhhxavKlasaEOHDj3ZyQAAAACydmCR1uDDv+XPn9+qVq1qXbp0scWLF5/spAEAAABxI8sHFjJ69GjbsmWLrVixwl577TXbs2ePnXvuufb2228f1/c9cuSIHT169Li+BwAAAJAVnNTA4oILLrC7777bHnjgAStatKiVLFnSnnjiiSTbKGC47LLLLG/evFapUiWbMmVKsv0ULlzYvVZDhy699FK3TefOne3OO++0f//9N3G7999/32rVqmW5c+d22z7//PNJ9qNtb7zxRitSpIjly5fPve+aNWsSnx8zZox7r2nTplnNmjXdfjZu3Ghz5syxhg0buh4TPd+kSRPbsGFDmvLg448/tnPOOcfy5MljxYoVsyuvvDLFbXfs2GHdunWz0047zQoWLGgtWrSw5cuXJz6/bt06a9eunZUoUcJOOeUUt98vv/wyyT70uQcMGGA333yzFShQwMqXL29vvfVWmtIKAAAAZNoei7Fjx7oK+XfffWeDBw+2/v3728yZMxOff+yxx+yqq65yFWgFC506dbKVK1emut/evXvb7t27E/eloVHXXHONe/2PP/7oAhjtW8GCT0OoFi1a5AKHb775xjzPs9atW9uhQ4cSt9m3b589++yzNmLECNdDooCoffv21rx5c/vhhx/c63r06OGGZqXm008/dYGE3mPp0qU2a9YsF6CkpGPHjvbXX3/Z559/7j7P2WefbRdddJFt377dPa+eGu1L+9H+WrVqZVdccYULfkIpoGrQoIHb5o477rDbb7/dVq9eneL7HjhwwHbt2pXkBgAAAIRK8FR7Pok9FhpONHfu3MTHVLFWS/ygQYNc5fy2226zYcOGJT5/3nnnuQr166+/7u5rmw8++MBV7kPt37/f9XIoCFCPiIKSv//+22bMmJG4jR5X5V4BgnomqlWrZvPnz7fGjRu757dt22blypVzwY8q9QpCunbtasuWLbMzzzzTbaNK/amnnup6LRRcREPvo16Yd955J+Lz6l2455573G3evHnWpk0bF1iop8RXpUoV9zkUzERSu3Ztl4fqvfH32axZMxs3bpy7r8Ov3p4nn3zSbReJgjA9H+68Lg9bjlx5ovrMAAAASJ+5bz5mJ5oalAsVKmQ7d+50I2YydY9F3bp1k9wvVaqUqzz7GjVqlOR53U9Lj4UfL/k9B3qNhiiF0n0FFApu9HyOHDnc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pSef5s2b5yozy5Yts3iSnrzS2O5Ro0ZZ3bp1XdkaMmSIq+wouChbtqzFqvTklSp9X331lXXu3NlV/tauXWt33HGHawjRj57FoqDXdFWYf/rpJ3c+xrp/0pFX119/vXtd06ZNXWPR4cOH7bbbbrOHH37YsgICCwCZ2qBBg9xk2zlz5sTVBNJoFChQwFWY1cqsHos+ffpYpUqV3IRJmO3evdtuuOEGtyhAsWLFyJJUqAVeN5+Ciho1atibb75pTz31FPkX4ujRo64X7K233nJBff369e3333+35557LmYDi6AUUGiRl4YNG57spGRKc+bMcb1eaiDSRG8Fq7169XLn3mOPPWaZHYEFktCXri6OW7duTfK47pcsWTJibunxaLaP13yKV0HySi2lCiy+/PJL13oa69KbV+par1Klivtbq0KtXLnSBg4cGLOBRbT5tG7dOlu/fr1dccUVSSqEkiNHDjd0rHLlyhaLMuJalTNnTqtXr56r4MSy9OSVVoJS/uh1PgVh6rHXMJhcuXJZrAlSpvbu3esaijQsMR4US0deKXhQQ0i3bt3cfQVhyrcePXrYI4884q73mVnmTh1OOF0E1eKiVs/QL2DdD23BCqXHQ7eXmTNnprh9vOZTvEpvXg0ePNi10EyfPt0tpxoPMqpc6TUaFhWros0nLYX9448/ul4d/9a2bVu78MIL3d+aRxCrMqJMaSiH8k+V6FiWnrxq0qSJC7j8QFV++eUXl1exGFQELVNaml7Xpv/85z8WD3KlI680pzA8ePADVw2NyvRO9uxxZM6l0bTU2ZgxY9wSlj169HBLo/nLDd5www1e3759kyw3myNHDm/IkCFuadB+/frFzXKz0eSTliXU8qm6aek4LT2rv9esWePFumjzatCgQW55vilTpiRZonD37t1erIs2rwYMGODNmDHDW7dundte56HOx+HDh3uxLNp8ChdPq0JFm1dPPvmkW+JSZWrx4sVep06dvDx58rilMmNdtHm1ceNGt7rRnXfe6a1evdr75JNPvOLFi3tPP/20F8vSe/41bdrUu/baa714MinKvFIdSmVKS9P/+uuv7vpeuXJltwJnVkBggYheeeUVr3z58q5yp6XSvv3228Tnmjdv7r6UQ7333ntetWrV3Pa1atXyPv3007jI2WjySetRK5YPv2m7eBBNXmk53kh5pQtuPIgmrx555BGvSpUqruJXpEgRr1GjRu6LLB5Ee52K18Ai2ry65557ErctUaKE+42GJUuWePEi2nK1YMECt8S6Ko9aevaZZ55xSxvHumjzadWqVe46ropyvHklirw6dOiQ98QTT7hgQtf1cuXKeXfccYf377//ellBgv452b0mAAAAALI25lgAAAAACIzAAgAAAEBgBBYAAAAAAiOwAAAAABAYgQUAAACAwAgsAAAAAARGYAEAAAAgMAILAAAAAIERWAAAAAAIjMACAJCpdenSxRISEhJvp556qrVq1cp++OGHk500AEAIAgsAQKanQGLLli3uNmvWLMuRI4ddfvnlJztZAIAQBBYAgEwvd+7cVrJkSXc766yzrG/fvrZp0yb7+++/3fMPPvigVatWzfLly2eVKlWyxx57zA4dOpT4+ueff97Kli1rmzdvdvfXr1/vej+WLVvm7ms/VatWtccffzzxNRUrVrShQ4cm6z1p37594v0DBw7Y3XffbcWLF7c8efJY06ZN7fvvv0/ymhUrVrggqGDBglagQAFr1qyZrVu3zp544okkPTGhtwsuuCDi+wFAZkZgAQDIUvbs2WPvvPOOValSxQ2LElXYx4wZYz///LO99NJLNnz4cHvxxRcTX3PvvffaVVddZZdddpnt3Lkzyf727dvnKv4KCvr37x9VWh544AF7//33bezYsbZkyRKXppYtW9r27dvd87///rudf/75LjD66quvbPHixXbzzTfb4cOH7b777kvshVH6GjVqlHh/6tSpGZJXAHAi5Tih7wYAQDp88skndsopp7i/9+7da6VKlXKPZcv2f+1jjz76aJKeBlXaJ02a5Cr+PgUaHTt2tCuvvNLeeOMN99iRI0esU6dOVrhwYReMREPpGDZsmAtoFLCI9jFz5kwbOXKk3X///fbaa69ZoUKFXFpy5szptlHPis//TPo/V65crkcGALIqeiwAAJnehRde6IYt6bZw4ULXK6DK/IYNG9zz7777rjVp0sRVzFVJV6CxcePGJPtQEKJeidmzZ1uPHj3cY+op+Pjjj+28885z8zbCaYiV9uffxo8fn/ichjNpuJXe16fgoWHDhrZy5Up3X+nV0Cc/qAgSVBUpUsTOPPNMGzVqVLr3BQDHE4EFACDTy58/vxtmpNs555xjI0aMcD0G6iH45ptvrHPnzta6dWtXCV+6dKk98sgjdvDgwST7UKChORTvvfeebd26NXGuxYcffmjPPfecrVq1Ktn7qtfBD2h0a9u2bVTpzps3b4YFVQsWLLAbb7zRunXrlmweBwBkBgQWAIAsRxOc1QPxv//9z1W4K1So4IKJBg0auEnYfk9GqJ49e1qHDh3ccKgJEya4x0aPHm3t2rVzlfVbb73VPM9L8ppixYolBjS6aS6Hr3Llym740vz58xMfUw+GKv01a9Z09+vWrWtz585NMpE8vUFVjRo1XA+L5pUsX7483fsDgOOFwAIAkOlp9aU///zT3TTM6K677nKTuK+44goXSKg3QvMYNDzp5Zdftg8++CDJ69VL8e2339oLL7zg7mtYUej/zzzzjP3666+uJySaCv/tt9/uejWmT5/uJo53797dTQa/5ZZb3DZ33nmn7dq1y83jWLRoka1Zs8bGjRtnq1evTvP7HD161Pbv32+7d+92Q762bdtmtWvXTvPrAeBEYfI2ACDTU8VdE7ZFvQZnnHGGTZ48OXFZ1t69e7tKvAKQNm3auOVmtZyr7Nixw3r16uWCCn8VqXDa5+uvv+6GGmm4U4kSJdKUrkGDBrmK/w033OAq/uox+eKLLxIDFr2fVoNS8NG8eXPLnj27Wy43dF5GajQHREOqNAdEE9NfeeUVNycEADKbBC+83xcAAAAAosRQKAAAAACBEVgAAAAACIzAAgAAAEBgBBYAAAAAAiOwAAAAABAYgQUAAACAwAgsAAAAAARGYAEAAAAgMAILAAAAAIERWAAAAAAIjMACAAAAQGAEFgAAAAAsqP8HD6iejhfO7okAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 800x400 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA5sAAAMWCAYAAAB/RZIWAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjcsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvTLEjVAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAoXtJREFUeJzs3QeYU9X28OE1tKH33qT3jiBNpDdBmhQVBRGkK0VAmoCgVGlSBJEiRYoKigIqVQVEOkiT3kF67+R71r5f8k8mA8yQM3Mmk997n9yZnGSSw84xyTpr7bWDHA6HQwAAAAAAsFAMKx8MAAAAAACCTQAAAABAhCCzCQAAAACwHMEmAAAAAMByBJsAAAAAAMsRbAIAAAAALEewCQAAAACwHMEmAAAAAMBysax/SAAAEF3du3dPLl26JI8ePZL06dPbvTsAgCiMzCYAAHiizZs3y+uvvy4pU6aU4OBgSZcunTRs2JBRAwA8EcEmAMBnM2bMkKCgIHP5888/vW53OBySKVMmc3vt2rUZcT/yww8/SLly5WTPnj3yySefyG+//WYukydPtnvXAABRHGW0AADLxI0bV+bOnWuCE3dr166VkydPmqwY/IeWy7Zq1UqqV68uCxculDhx4ti9SwAAP0JmEwBgmVq1apmg5MGDBx7bNQAtXry4pE2bltH2I9OnT5c7d+6YzDWBJgAgvAg2AQCWee211+TixYumzNK9ocy3335r5vyFZuTIkVKmTBlJkSKFxIsXzwSlen93zhLdx10qVKhg7rdmzRpzff78+dK7d28T3CZIkEBeeeUVOXHihMdj6t84/85p06ZNrscM+fwdO3b02nctCc6SJYvHtp07d0qLFi0kW7ZsJtOr+9CyZUszLmHx33//yTvvvCNp0qQxf1+4cGGZOXOmx32OHj1q9knHzl2BAgW8/k19+/Y1971x44bHv2fAgAEe9xsxYoTHWKq//vpLihQpIp9++qkpg9bMdM6cOWXo0KGmQZA7PcEwaNAgyZ49u7mfjou+Bnfv3vW4n27X8XH37rvvmn+rvn4AgOiDMloAgGU0kChdurR88803UrNmTbNt2bJlcvXqVWnatKmMGzfO62/Gjh1rgsE33njDBKbz5s2TRo0ayU8//SQvv/yyuc+sWbNc9//jjz9kypQpMnr0aNOwRmlg5k7nFmrg1LNnTxO8jRkzRqpUqSLbt283Ae3j6P19pYH24cOH5e233zaB5u7du83+6k8N3kIGsu5u375tgr2DBw+a4DZr1qwmU6zB2ZUrV+T999+XiKCPPWTIEK/tGiDrHFy9aMCsJwJWrlwpvXr1MgHvF1984bqvlttqUPzqq69Kt27dZOPGjeYx9+7dK4sWLXrsc/fv31+++uorc4IgZKAMAPBzDgAAfDR9+nSHfqRs2rTJMX78eEeiRIkct27dMrc1atTIUbFiRfP7c88953j55Zc9/tZ5P6d79+45ChQo4KhUqdITn+vIkSNet61evdrcliFDBse1a9dc2xcsWGC2jx071rXtpZdeMhenpUuXmvvUqFHD/HSn1zt06OD1fPpv0X/Tk/496ptvvjGP8fvvvzueZMyYMeZ+s2fP9hiP0qVLOxImTOj6N+m/Xe83YsQIj7/Pnz+/x79J9enTx9z3+vXrHv+e/v37u6736NHDkTp1akfx4sU9/l5/1/sOGDDA4zFbtGhhtu/atctc3759u7neqlUrj/t98MEHZvuqVatc23S8mjdvbn6fPHmyuf3zzz9/4rgAAPwTZbQAAEs1btzYZOg0M3n9+nXz83EltMo903j58mWTBX3xxRdl69atz7wPb731liRKlMh1XbNtulzH0qVLQ72/xl+ardPlPF544QXxhfu/R+c7XrhwQUqVKmWuP+3fpPun2VAtR3aKHTu2vPfee6YMVhstWe3UqVPy+eefS79+/SRhwoRet8eMGVO6dOnisU0zl+rnn3927bfq2rXrE+8Xsstt+/btpXv37qGWKAMA/B/BJgDAUqlSpTIlq9oU6Pvvv5eHDx+aYO9xNBjVYEzn7CVPntz8/aRJk0zQ+ax0XqE7LV3NkSOHKf0MzZw5c0yZq85NtKKDq5a7ammvBp7679FyWPW0f9OxY8fMvseI4fnxnDdvXtftVtMy1vTp00ubNm28btNx09sSJ07ssT137txmH53jqful13WM3WngnDRpUq/91nJmDaj12NDxAgBET8zZBABYTjOZrVu3lrNnz5q5mxpwhEbnX+p8zfLly8vEiRNN9lEzedoFVYPVyKDzRDWrp015cuXKZUlmd/369SZjp811NFuozXRq1Kjh1VTHbjqfUjvNzp4924x7SE+a3xqaJ81Hdbdjxw5zXFSuXNmMU7NmzZivCQDREMEmAMBy9evXN5kybYij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",
      "text/plain": [
       "<Figure size 1000x800 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABKUAAAJOCAYAAABm7rQwAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjcsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvTLEjVAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAZLVJREFUeJzt3Qd4VGX6P+4XpCtFLGBBxd4b9i6grGvDsvbee8HuqmBXbNjLqrhWLGtd17Ji74i9YEXFVbGjoIBA/tfz/v6TbxICQgwnIbnv6xrCnDkzc+bMZCbzOc/7vE3KysrKEgAAAAAUqGmRdwYAAAAAQSgFAAAAQOGEUgAAAAAUTigFAAAAQOGEUgAAAAAUTigFAAAAQOGEUgAAAAAUTigFAAAAQOGEUgAAAAAUTigFAAAAQOGEUgDwJ3388cdp//33TwsvvHBq1apVateuXVp77bXTxRdfnH777Tf7FwAAqtGsuoUAwLR58MEH09/+9rfUsmXLtNtuu6Vll102jR8/Pj377LPpmGOOSe+880665ppr7E4AAKiiSVlZWVnVhQDAHxs+fHhafvnl0/zzz58ef/zxNM8881S6/KOPPsqh1eGHH253AgBAFYbvAUAN9e/fP40ePTpdd911kwVSYdFFF60USDVp0iQdcsgh6ZZbbklLLLFEHurXrVu39PTTT1e63meffZYOOuigvE7r1q3THHPMkauxPv3000rr3XDDDfk2S6c2bdqk5ZZbLl177bWV1ttjjz3SbLPNNtn23XXXXfl6Tz75ZKXlL730UvrLX/6S2rdvn29z/fXXT88991yldfr165ev+91331Va/sorr+TlsW0V73+hhRaqtN6IESPyY4t1qz6uhx56KK277rpp1llnTW3btk2bbrpprjj7I6X9EfszhlPGfouhlFHB9uOPP1Za97777su3O++88+Yqt0UWWSSdfvrpaeLEiZPdbuyPv/71r2n22WfP2xRBZAzNrPj4Kj4PVU8V9+8GG2yQq+mGDh2a1lprrbwPunbtmq666qrJ7nfcuHGpb9+++XUU29ilS5d07LHH5uVVxX1M6f6r+t///pf22muv1KlTp3y7yyyzTLr++uur3adTemzx/Fc0bNiwtO2226aOHTvm1/Uqq6yS7r///mqfn3iNVBSvoaq3WXp9VRS/a507d672NXvllVfm/Rqv14rbGa/xqanufp544om8Xw444IDJ1o/X8R89x7X52irt2+222y7NNddc+fUS7wt///vfK63z2muvpU022SS/3uN3vUePHunFF1+s0fsFABTJ8D0AqKEHHngg95GKcGFaPfXUU+n2229Phx12WP7CesUVV+QA6OWXX85fqsOQIUPS888/n3bYYYdchRWhTXzpjkDj3XffzV8mK7rooovSnHPOmX7++eccLuy77775y3PPnj2n+zFFxVd8uY2wLAKRpk2bpoEDB6bu3bunZ555Jq222mqpNpxyyilp7Nixky2/6aab0u6775569eqVzj333PTrr7/mx77OOuvkL95Vw63qRPDXoUOHHDi8//77+foR9JWCm9IX9Pjy3qdPn/wzHndsU+zD8847r/y2/vvf/6bNNtssh44RMEYo8t5776V///vflQLHeC6rfrmP5/GSSy6ZbPsiIIsgIoKGHXfcMd1xxx3pwAMPTC1atMhhUZg0aVLaYost8jDQ/fbbLy211FLprbfeys/1Bx98kO69995qH3u8rlZdddX8/xtvvDFvf0UjR45Ma6yxRnlAGkFHhIB77713fuxHHHHEZLcZr62435Jdd9210uURGEYPtfnmmy8df/zxOVyJx9S7d+/0r3/9K2211VapNlxwwQV5+6uK36cIceP349BDD833H8/RWWedNd338cYbb+Ttjufn8ssvr3adCEzjOQnV3U9tvrbefPPNfH/NmzfP9xmv/+hhF+89Z555Zvn+j3UikIrQMta9+uqr8/6I95vVV199hr1fAMCfFsP3AIDpM2rUqBj+XrbllltO83Vi/Ti98sor5cs+++yzslatWpVttdVW5ct+/fXXya77wgsv5OveeOON5csGDhyYlw0fPrx82QcffJCX9e/fv3zZ7rvvXjbrrLNOdpt33nlnXveJJ57I5ydNmlS22GKLlfXq1Sv/v+L2dO3atWyjjTYqX9a3b9983W+//bbSbQ4ZMiQvj22reP8LLrhg+fm33367rGnTpmWbbLJJpe3/5Zdfyjp06FC27777VrrNr7/+uqx9+/aTLa+qtD+6detWNn78+PLlsS9i+X333VfpMVW1//77l7Vp06Zs7Nix+fyECRPy445t//HHHyutW3H/TOv+Deuvv35edsEFF5QvGzduXNmKK65YNvfcc5dv90033ZT30TPPPFPpNq+66qp8/eee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Pjerrlp9EJdH+BINm6OfS+nLasVhR1G9EEPYoupj6aWXzkHWY489luaYY45qtyOqSKJaqTQcJ4Y4xdC/6RVVFddee20Ob6IHzZ577pl7AUU4EqFHfLmtOgRwWn3xxRf5C33FZuNVxe1HgLTrrrvmL+0xXDG+mMcX8gcffDCHE9H/5o/E/o8qlwh2ooIk9nF8OS8FGxE6RF+sqEaL5yEqkWJ/Vw2aYn/E9kRj8AjSYn9Eb6qoQInqkmhOXxMx7PPcc8/NIUIMY7v99ttzk/kI00oN2mMf3HHHHemAAw7I+z4eewR7cd+xPO47qo3itRHBTQQLsa8ilKlafRXLttpqqxygnnPOOfn2onH8vvvum19fMSwtgtJ4jcX/o0dRVBvFfot9FaHH1MRwvNi/MdwwbjMqfCIUiW2L5z2qlmoqmng/99xzU10ntjsadsdzOLWhhtMiXgvxOxDPd+yD/v3758q7+P9tt92W9/XUQp7afm1dcskled/G70M08I8gK1438fsQr5lwxhln5EkCYr0I1WKYa4SEETTF9s+o9wsAqBWFzvUHAA1QTKu+7777li200EJ5avaYin3ttdcuu/TSS8ungA/xsXvwwQeX3XzzzWWLLbZYWcuWLctWWmmlStPJh5giPqadn3POOctmm222sl69epUNGzYsTx+/++67TzbFe+kU973ooouWnXLKKZXuN64z66yzTrbdd95552TT2YfXXnutbOutty6bY4458jbG/W633XZlgwcPLl+nb9+++brffvttpesOGTIkL49tq3j/sezwww+vtG51U9SH2J54zO3bty9r1apV2SKLLFK2xx57lL3yyitTfR5Kt/fUU0+V7bfffmWzzz573n8777xz2ffff19p3eeee65sjTXWKGvdunXZvPPOW3bssceWPfLII9Xuj2effbZso402ys9r7Mfll18+P7c12b/rr79+2TLLLJMfy5prrpkfX+zfyy67bLLrjx8/vuzcc8/N68fzEI+nW7duZaeeemrZqFGjKu3bPzpV3McjR47Mr8MuXbqUNW/evKxz585lPXr0KLvmmmvy5V988UW+7Igjjii/n4ri9uL5r+jjjz8u22233fJtxW3ON998ZZtttlnZXXfdNdnzE6+RiuI1VPU2S6+vLbfcstK6sS8r7tPvvvsuP3877rhjtevFczA1pfupKvZxs2bN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KfW3v/3tT+/jaJx+1FFHpb59+6bvv/9+ssv//e9/54qfkgkTJkwWDEVoVnGd6gKhUaNG5XWiIimG2MXQtgigqnrjjTdy6BJDFituYwQ+w4cPz/uiOrH+fvvtl4ftRZVVxcAmRKVZ3HdJaXhfyWOPPZa3J6qQfv755/w4x44dm9eL4ZHLLrtsuvXWW/M2dO3atdrtjqqlqJSqKG4jqr+mZ3+WnHbaaWnDDTdM66yzTqXlcf9RmRXVYdtuu61+Y1UIpQAAAOBPuOeee9Jrr72W7rjjjmovL1VA/Vk33nhj7tcUVUFnnnnmZJdHKBIVSiV33313OuussyqtE72N7r///vLzL730Utpll10qrRNhzauvvpoDpnfffTeHbVG91bNnz0rrRR+n/fffP/eRqir6Rk3JFltskVZdddUcKh188MF5/0XFVcVKpoqBVvTUKom+T5tttlk68MAD8z6IflAxZHDvvffOQ+8ilIqhcnGbCy+8cO47VVVsd7du3SqFaSVzzTXXdO3PEEMRo+oqwscvvvii0mXxOCOw2nPPPfN+jl5gv/3222S9vRoroRQNY+5WqEte7wAAjVZUGv3973/Pzc3nn3/+atdZfvnlc++kU089tcb3E1VAcT/RtyiCjepEABONtkvmnnvuydaJoWMV16kaooSoUiqtE0PyNtpooxy4VA2lVl555RxaVby9aRGhV5wWX3zxPATxtttuqxRKRfPyirfZrNn/RRdDhw7NlVgXXHBBeTVV1TAwQsCopor+Tr/88kv546i43RF8xf6J4YNTMi37M0SlVwynjHWr258R2kWgGMFZVEtVfKyNnUbnAAAAUEMRfkT/ohNOOGGK68RlQ4YMybPExXC3qBCKCpzvvvtumu8nhqMtssgik80IN6PEULao6IkQKCqRYkhcdWFM9LeKxuYRWkXF0H333TfVRufRuymGz3322We5YisCqZVWWmmatyuCnxgOd+mll6ZPPvkk3XTTTemqq66qdt0YehjrVw3NIhSac84587DEaHQew/yil1SER9WFSlMTwwDjuqecckq1l0e12W677ZaDsBjiGdtSW5VzDYFQCgAAAP5EeBPhzOyzzz7FdaIi6NFHH81hTMw+F82+I7ypWAE0LZVSUR1UhOgpFcFJVArFULmtttoq9enTp9oKsKeeeip98MEHad11183hUoQz88477xRv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48ePT99++23+3Y3f2ZoSSgEAAFBn4ktt165d01dffZWDKWDm0KZNm7TAAgvk3+GaEkoBAABQp6LSIr7cTpgwIU2cONGzAfXcLLPMkpo1a/anqxqFUgAAANS5+HLbvHnzfAIaB43OAQAAACicUAoAAACAwgmlAAAAACicUAoAAACAwgmlAAAAACicUAoAAACAwgmlAAAAACicUAoAAACAwgmlAAAAACicUAoAAACAwgmlAAAAACicUAoAAACAwgmlAAAAACicUAoAAACAwgmlAAAAACicUAoAAACAwgmlAAAAACicUAoAAACAwgmlAAAAACicUAoAAACAwgmlAAAAACicUAoAAACAwgmlAAAAACicUAoAAACAwgmlAAAAACicUAoAAACAwgmlAAAAACicUAoAAACAwgmlAAAAACicUAoAAACAxhtKnXPOOalJkybpiCOOKF82duzYdPDBB6c55pgjzTbbbGmbbbZJI0eOrNPtBAAAAKCBhFJDhgxJV199dVp++eUrLT/yyCPTAw88kO6888701FNPpS+//DJtvfXWdbadAAAAADSQUGr06NFp5513Tv/4xz/S7LPPXr581KhR6brrrksXXnhh6t69e+rWrVsaOHBgev7559OLL75Yp9sMAAAAwEweSsXwvE033TT17Nmz0vKhQ4em33//vdLyJZdcMi2wwALphRdeqIMtBQAAAKC2NEt1aNCgQenVV1/Nw/eq+vrrr1OLFi1Shw4dKi3v1KlTvmxKxo0bl08lP//8cy1vNQAAAAAzbaXUiBEj0uGHH55uueWW1KpVq1q73bPPPju1b9++/NSlS5dau20AAAAAZvJQKobnffPNN2nllVdOzZo1y6doZn7JJZfk/0dF1Pjx49NPP/1U6Xox+17nzp2neLsnnHBC7kdVOkX4BQAAAED9UmfD93r06JHeeuutSsv23HPP3DfquOOOyxVOzZs3T4MHD07bbLNNvvz9999Pn3/+eVpzzTWneLstW7bMJwAAAADqrzoLpdq2bZuWXXbZSstmnXXWNMccc5Qv33vvvVOfPn1Sx44dU7t27dKhhx6aA6k11lijjrYaAAAAgJm+0fkfueiii1LTpk1zpVQ0L+/Vq1e64oor6nqzAAAAAGhIodSTTz5Z6Xw0QL/88svzCQAAAICGo84anQMAAADQeAmlAAAAACicUAoAAACAwgmlAAAAACicUAoAAACAwgmlAAAAACicUAoAAACAwgmlAAAAACicUAoAAACAwgmlAAAAACicUAoAAACAwjUr/i5pDJ58sq63AIqzgZ0NAAAw3VRKAQAAAFA4oRQAAAAAhRNKAQAAAFA4oRQAAAAAhRNKAQAAAFA4oRQAAAAAhRNKAQAAAFA4oRQAAAAAhRNKAQAAAFA4oRQAAAAAhRNKAQAAAFA4oRQAAAAAhRNKAQAAAFA4oRQAAAAAhRNKAQAAAFA4oRQAAAAAhRNKAQAAAFA4oRQAAAAAhRNKAQAAAFA4oRQAAAAAhRNKAQAAAFA4oRQAAAAAhRNKAQAAAFA4oRQAAAAAhRNKAQAAAFA4oRQAAAAAhRNKAQAAAFA4oRQAAAAAhRNKAQAAAFA4oRQAAAAAhRNKAQAAAFA4oRQAAAAAhRNKAQAAAFA4oRQAAAAAhRNKAQAAAFA4oRQAAAAAhRNKAQAAAFA4oRQAAAAAhRNKAQAAAFA4oRQAAAAAhRNKAQAAAFA4oRQAAAAAhRNKAQAAAFA4oRQAAAAAhRNKAQAAAFA4oRQAAAAAhRNKAQAAAFA4oRQAAAAAhRNKAQAAAFA4oRQAAAAAhRNKAQAAAFA4oRQAAAAAhRNKAQAAAFA4oRQAAAAAhRNKAQAAAFA4oRQAAAAAhRNKAQAAAFA4oRQAAAAAhRNKAQAAAFA4oRQAAAAAhRNKAQAAAFA4oRQAAAAAhRNKAQAAAFA4oRQAAAAAjSuUuvLKK9Pyyy+f2rVrl09rrrlmeuihh8ovHzt2bDr44IPTHHPMkWabbba0zTbbpJEjR9blJgMAAAAws4dS888/fzrnnHPS0KFD0yuvvJK6d++ettxyy/TOO+/ky4888sj0wAMPpDvvvDM99dRT6csvv0xbb711XW4yAAAAALWgWapDm2++eaXzZ555Zq6eevHFF3Ngdd1116Vbb701h1Vh4MCBaamllsqXr7HGGnW01QAAAAA0mJ5SEydOTIMGDUpjxozJw/iieur3339PPXv2LF9nySWXTAsssEB64YUXpng748aNSz///HOlEwAAAAD1S52HUm+99VbuF9WyZct0wAEHpHvuuSctvfTS6euvv04tWrRIHTp0qLR+p06d8mVTcvbZZ6f27duXn7p06VLAowAAAABgpgqlllhiifT666+nl156KR144IFp9913T++++26Nb++EE05Io0aNKj+NGDGiVrcXAAAAgJm8p1SIaqhFF100/79bt25pyJAh6eKLL07bb799Gj9+fPrpp58qVUvF7HudO3ee4u1FxVWcAAAAAGiAoVT0gLr33nvTe++9l88vs8wyaYsttkizzDLLn9qgSZMm5b5QEVA1b948DR48OG2zzTb5svfffz99/vnnuecUAAAAAI0slProo4/Spptumr744os8/K7Uyyn6Nz344INpkUUWmeahdptsskluXv7LL7/kmfaefPLJ9Mgjj+R+UHvvvXfq06dP6tixY2rXrl069NBDcyBl5j0AAACARhhKHXbYYWnhhRfOs+BFYBS+//77tMsuu+TLIpiaFt98803abbfd0ldffZVDqOWXXz4HUhtttFG+/KKLLkpNmzbNlVJRPdWrV690xRVX1GSTAQAAAKhHmpSVlZVN75VmnXXW9OKLL6bllluu0vI33ngjrb322mn06NGpvvj5559z4BVNz6PaimI8uUE/u5pGY4Mnvd4BAACmN4up0ex70Ug8httVFWFUNC4HAAAAgKmpUSi12Wabpf322y+99NJLKQqt4hSVUwcccEBudg4AAAAAtR5KXXLJJbmZeTQdb9WqVT7FsL1FF100XXzxxTW5SQAAAAAakRo1Ou/QoUO677770ocffpiGDRuWly211FI5lAIAAACAGRJKlSy22GL5FCZOnPhnbgoAAACARqRGw/eGDx+edtxxx3TggQemH3/8MfeRiubnSyyxRHrzzTdrfysBAAAAaFBqFErtv//+6b333ktvv/126t69exo/fnwezrf00kunI444ova3EgAAAIAGpUbD92LWvWeeeSYtuOCCqWPHjmnIkCFp5ZVXzj2lVl999drfSgAAAAAalBpVSv3yyy9pnnnmSe3bt09t2rTJjc9D/IzLAAAAAGCGNDp/+OGHcyg1adKkNHjw4DyU76effqrpzQEAAADQiNQ4lNp9990r9ZgqadKkyZ/fKgAAAAAatBqFUlEdBQAAAACF9pS68cYb07hx42p8pwAAAAA0bjUKpfbcc880atSo2t8aAAAAABqFGoVSZWVltb8lAAAAADQaNW50fscdd6R27dpVe9luu+32Z7YJAAAAgAauxqFU//790yyzzDLZ8ph9TygFAAAAwAwJpV555ZU099xz1/TqAAAAADRiNeopBQAAAACFh1ILLrhgtUP3AAAAAGCGDd8bPnx4Ta4GAAAAADWvlDrssMPSJZdcMtnyyy67LB1xxBE1uUkAAAAAGpEahVL/+te/0tprrz3Z8rXWWivdddddtbFdAAAAADRgNQqlvv/++9S+ffvJlrdr1y599913tbFdAAAAADRgNQqlFl100fTwww9Ptvyhhx5KCy+8cG1sFwAAAAANWI0anffp0ycdcsgh6dtvv03du3fPywYPHpwuuOCCNGDAgNreRgAAAAAamBqFUnvttVcaN25cOvPMM9Ppp5+ely200ELpyiuvTLvttlttbyMAAAAADUyNQqlw4IEH5lNUS7Vu3TrNNttstbtlAAAAADRYNeopFSZMmJAee+yxdPfdd6eysrK87Msvv0yjR4+uze0DAAAAoAGqUaXUZ599lv7yl7+kzz//PA/j22ijjVLbtm3Tueeem89fddVVtb+lAAAAADTuSqnDDz88rbLKKunHH3/MQ/dKttpqq9zwHAAAAABqvVLqmWeeSc8//3xq0aJFpeXR7Px///tfTW4SAAAAgEakRpVSkyZNShMnTpxs+RdffJGH8QEAAABArYdSG2+8cRowYED5+SZNmuQG53379k1//etfa3KTAAAAADQiNRq+d8EFF6RevXqlpZdeOo0dOzbttNNO6cMPP0xzzjlnuu2222p/KwEAAABoUGoUSs0///zpjTfeSIMGDUpvvvlmrpLae++9084771yp8TkAAAAA1Foola/YrFnaZZddanp1AAAAABqxGoVS999//1Qv32KLLWq6PQAAAAA0AjUKpXr37l3pfDQ6LysrK/9/dTPzAQAAAMCfmn1v0qRJlU5t2rRJH330Uf6/QAoAAACAGRJKVRXVUQAAAABQWCj16aefpjFjxqS2bdv+2ZsCAAAAoJGoUU+prbfeOv/87bff0osvvph69OiR5pprrtreNgAAAAAaqBqFUu3bt88/O3funDbffPO011571fZ2AQAAANCA1SiUGjhwYO1vCQAAAACNRo1CqZ9//nmql7dr166m2wMAAABAI1CjUKpDhw7VzrhXVlaWl0+cOLE2tg0AAACABqpGodTCCy+cvvnmm3T88centddeu/a3CgAAAIAGrUah1HvvvZcuvfTSdOaZZ6bXXnst9e/fP3Xt2rX2tw4AAACABqlpTa7UvHnz1KdPn/Thhx+m+eabLy2//PLpqKOOSj/99FPtbyEAAAAADU6NQqmSjh07pgEDBuRqqU8//TQtuuii+TwAAAAA1PrwvZVWWmmyRufR5HzcuHG5YuqII46oyc0CAAAA0EjUKJTq3bt37W8JAAAAAI1GjUKpvn371v6WAAAAANBo1CiU+vnnn6d6ebt27Wq6PQAAAAA0AjUKpTp06DBZT6lSX6lYPnHixNrYNgAAAAAaqBqFUuGuu+7Ks+8BAAAAQGGh1Nprr53mnnvuml4dAAAAgEasxqHUu+++m77//vs066yzps6dO6cWLVrU7pYBAAAA0GA1rekVe/TokZZZZpnUtWvXHEwtt9xy6aKLLqrdrQMAAACgQapRpdTw4cNzU/Pff/89z8T35ZdfppdffjmdfPLJacKECemYY46p/S0FAAAAoHGHUgsuuGCl8926dUubb755WnzxxdNpp50mlAIAAABgxvSUqs4OO+yQh/QBAAAAwAwLpYYOHZree++9/P+ll146rbzyyvkEAAAAALUeSn3zzTe5KurJJ59MHTp0yMt++umntOGGG6ZBgwalueaaqyY3CwAAAEAjUaPZ9w499ND0yy+/pHfeeSf98MMP+fT222/npueHHXZY7W8lAAAAAA1KjSqlHn744fTYY4+lpZZaqnxZDN+7/PLL08Ybb1yb2wcAAABAA1SjSqlJkyal5s2bT7Y8lsVlAAAAAFDroVT37t3T4Ycfnr788svyZf/73//SkUcemXr06FGTmwQAAACgEalRKHXZZZfl/lELLbRQWmSRRfKpa9euedmll15a+1sJAAAAQOPtKRXNzdu2bZu6dOmSXn311dxXatiwYfmy6C/Vs2fPNGTIkDT//PPPqO0FAAAAoLGFUtHE/L///W+abbbZUpMmTdJGG22UT2HChAnp5JNPTueee24aP378jNpeAAAAABrb8L2olIpqqBimV9Hbb7+dVl111XT99dene++9t7a3EQAAAIDGHEo98cQTacyYMbk6KoKpsrKyXBm1yiqr5OF7EU799a9/nXFbCwAAAEDjG74311xzpccffzxXS8UMfC1btkwffvhhuvnmm9O2224747YSAAAAgMYbSpWCqcGDB+dgKiqjXn/99bTkkkvOmK0DAAAAoEGaruF7JXPOOWeumFp66aXTTjvtlH788cca3fnZZ5+de1HFjH5zzz136t27d3r//fcrrTN27Nh08MEHpznmmCM3WN9mm23SyJEja3R/AAAAAMyElVJbb711pfPt2rVLTz/9dFpttdXScsstV7787rvvnqbbe+qpp3LgFMFUzN534okn5hn+3n333TTrrLPmdY488sj04IMPpjvvvDO1b98+HXLIIXk7nnvuuenZdAAAAABm1lAqQqGq57t27VrjO3/44Ycrnb/hhhtyxdTQoUPTeuutl0aNGpWuu+66dOutt+YeVmHgwIG5qfqLL76Y1lhjjRrfNwAAAAAzSSgVgdCMFCFU6NixY/4Z4dTvv/+e+1eVRP+qBRZYIL3wwgvVhlLjxo3Lp5KYJRAAAACABtBTakaYNGlSOuKII9Laa6+dll122bzs66+/Ti1atEgdOnSotG6nTp3yZVPqUxUVXKVTly5dCtl+AAAAAGbCUCp6S8VsfoMGDfpTt3PCCSfkiqvSacSIEbW2jQAAAADUwfC9GSWal//73//OTdPnn3/+8uWdO3dO48ePTz/99FOlaqmYfS8uq07Lli3zCQAAAID6q04rpcrKynIgdc8996THH398sqbp3bp1S82bN0+DBw8uX/b++++nzz//PK255pp1sMUAAAAAzPSVUjFkL2bWu++++1Lbtm3L+0RFL6jWrVvnn3vvvXfq06dPbn7erl27dOihh+ZAysx7AAAAADOvOg2lrrzyyvxzgw02mGyWvz322CP//6KLLkpNmzZN22yzTZ5Vr1evXumKK66ok+0FAAAAoAGEUjF874+0atUqXX755fkEAAAAQMNQb2bfAwAAAKDxEEoBAAAAUDihFAAAAACFE0oBAAAAUDihFAAAAACFE0oBAAAAUDihFAAAAACFE0oBAAAAUDihFAAAAACFE0oBAAAAUDihFAAAAACFE0oBAAAAUDihFAAAAACFE0oBAAAAUDihFAAAAACFE0oBAAAAUDihFAAAAACFE0oBAAAAUDihFAAAAACFE0oBAAAAUDihFAAAAACFE0oBAAAAUDihFAAAAACFE0oBAAAAUDihFAAAAACFE0oBAAAAUDihFAAAAACFE0oBAAAAULhmxd8lADBT6tevrrcAiuG1DgCFUCkFAAAAQOGEUgAAAAAUTigFAAAAQOGEUgAAAAAUTigFAAAAQOGEUgAAAAAUTigFAAAAQOGEUgAAAAAUTigFAAAAQOGEUgAAAAAUTigFAAAAQOGEUgAAAAAUTigFAAAAQOGEUgAAAAAUTigFAAAAQOGEUgAAAAAUTigFAAAAQOGEUgAAAAAUTigFAAAAQOGEUgAAAAAUTigFAAAAQOGEUgAAAAAUTigFAAAAQOGEUgAAAAAUTigFAAAAQOGEUgAAAAAUTigFAAAAQOGEUgAAAAAUTigFAAAAQOGEUgAAAAAUTigFAAAAQOGEUgAAAAAUTigFAAAAQOGEUgAAAAAUrlnxdwkAzIyefLKutwCKsYEdDQCFUCkFAAAAQOGEUgAAAAAUTigFAAAAQOGEUgAAAAAUTigFAAAAQOGEUgAAAAAUTigFAAAAQOGEUgAAAAAUTigFAAAAQOGEUgAAAAAUTigFAAAAQOMKpZ5++um0+eabp3nnnTc1adIk3XvvvZUuLysrS6ecckqaZ555UuvWrVPPnj3Thx9+WGfbCwAAAEADCKXGjBmTVlhhhXT55ZdXe3n//v3TJZdckq666qr00ksvpVlnnTX16tUrjR07tvBtBQAAAKD2NEt1aJNNNsmn6kSV1IABA9JJJ52Uttxyy7zsxhtvTJ06dcoVVTvssEPBWwsAAABAg+8pNXz48PT111/nIXsl7du3T6uvvnp64YUX6nTbAAAAAJiJK6WmJgKpEJVRFcX50mXVGTduXD6V/PzzzzNwKwEAAABoUJVSNXX22WfniqrSqUuXLnW9SQAAAADMLKFU586d88+RI0dWWh7nS5dV54QTTkijRo0qP40YMWKGbysAAAAADSSU6tq1aw6fBg8eXGkoXszCt+aaa07xei1btkzt2rWrdAIAAACgfqnTnlKjR49OH330UaXm5q+//nrq2LFjWmCBBdIRRxyRzjjjjLTYYovlkOrkk09O8847b+rdu3ddbjYAAAAAM3Mo9corr6QNN9yw/HyfPn3yz9133z3dcMMN6dhjj01jxoxJ++23X/rpp5/SOuuskx5++OHUqlWrOtxqAAAAAGbqUGqDDTZIZWVlU7y8SZMm6bTTTssnAAAAABqOettTCgAAAICGSygFAAAAQOGEUgAAAAAUTigFAAAAQOGEUgAAAAAUTigFAAAAQOGEUgAAAAAUTigFAAAAQOGEUgAAAAAUTigFAAAAQOGEUgAAAAAUTigFAAAAQOGEUgAAAAAUTigFAAAAQOGEUgAAAAAUTigFAAAAQOGEUgAAAAAUTigFAAAAQOGEUgAAAAAUTigFAAAAQOGaFX+XAAAA1LV+/ep6C6AYXuv1l0opAAAAAAonlAIAAACgcEIpAAAAAAonlAIAAACgcEIpAAAAAAonlAIAAACgcEIpAAAAAAonlAIAAACgcEIpAAAAAAonlAIAAACgcEIpAAAAAAonlAIAAACgcEIpAAAAAAonlAIAAACgcEIpAAAAAAonlAIAAACgcEIpAAAAAAonlAIAAACgcEIpAAAAAAonlAIAAACgcEIpAAAAAAonlAIAAACgcEIpAAAAAAonlAIAAACgcEIpAAAAAAonlAIAAACgcEIpAAAAAAonlAIAAACgcEIpAAAAAAonlAIAAACgcEIpAAAAAAonlAIAAACgcEIpAAAAAAonlAIAAACgcEIpAAAAAAonlAIAAACgcEIpAAAAAAonlAIAAACgcEIpAAAAAAonlAIAAACgcEIpAAAAAAonlAIAAACgcEIpAAAAAAonlAIAAACgcEIpAAAAAAonlAIAAACgcEIpAAAAAAonlAIAAACgcEIpAAAAAAonlAIAAACgcEIpAAAAAArXrPi7BAAAoK5t8GS/ut4EKIjXen2lUgoAAACAwgmlAAAAACicUAoAAACAws0UodTll1+eFlpoodSqVau0+uqrp5dffrmuNwkAAACAhhxK3X777alPnz6pb9++6dVXX00rrLBC6tWrV/rmm2/qetMAAAAAaKih1IUXXpj23XfftOeee6all146XXXVValNmzbp+uuvr+tNAwAAAKAhhlLjx49PQ4cOTT179ixf1rRp03z+hRdeqNNtAwAAAKDmmqV67LvvvksTJ05MnTp1qrQ8zg8bNqza64wbNy6fSkaNGpV//vzzzzN4a6lozIT/ew6gofP+QmPhvZ3Gwvs6jYX3dRoL7+t1t8/Lyspm3lCqJs4+++x06qmnTra8S5cudbI9QCPQ/py63gIAapP3dYCGxft6nfnll19S+/btZ85Qas4550yzzDJLGjlyZKXlcb5z587VXueEE07IjdFLJk2alH744Yc0xxxzpCZNmszwbYa6TKIjfB0xYkRq166dJwJgJud9HaDh8d5OY1FWVpYDqXnnnXeq69XrUKpFixapW7duafDgwal3797lIVOcP+SQQ6q9TsuWLfOpog4dOhSyvVAfRCAllAJoOLyvAzQ83ttpDNpPpUJqpgilQlQ97b777mmVVVZJq622WhowYEAaM2ZMno0PAAAAgJlTvQ+ltt9++/Ttt9+mU045JX399ddpxRVXTA8//PBkzc8BAAAAmHnU+1AqxFC9KQ3XA/6fGLbat2/fyYavAjBz8r4O0PB4b4fKmpT90fx8AAAAAFDLmtb2DQIAAADAHxFKAQAAAFA4oRQAAAAAhRNKAQAAAFA4oRQAAAAAhRNKAQAAAFA4oRQAQAPx22+/1fUmAFBPDR8+PJWVldX1ZkAlQilgqoYMGZLeeuut9O6779pTAPXYoYcemjbddNM0atSout4UAOqZK6+8Mu26665CKeodoRQwRUcffXTafPPNU69evdJ6662XTjzxxPTjjz/aYwD10HbbbZcPIuy9997eqwHISpVRTZs2TfPNN1/+qVqK+qRZXW8AUD89++yz6c4770x33HFHat68efr444/TPvvsk0aOHJmuuuqqvAyA+mHcuHFp3XXXTUOHDk0LL7xwmnPOOdM555yTOnToUNebBkAdD+tu06ZN/v/o0aPzzyZNmuRgquJPqCsqpYDJ3HDDDenGG2/MR92jQmrNNddMu+yyS/rvf/+bL4vyXwDqXrwvh5YtW+afd999d2rVqlW66aabcsWUoXwAjVf8Pb/nnnum77//Ps0111zp5ZdfTm+//Xb66KOPyoOo0k/VU9QVoRRQyYgRI9K//vWvNGjQoPTDDz+Uf0iNHz8+H4U/5phj0u23356PtPjwAqg7999/fx5efckll+Tz5557bjrttNPSQw89lF544YX0zDPP5ApXw64BGpfS3+iffvppbm7er1+/PNohwqnoP7jqqqumjTbaKG277bbphBNOSJ999plqKeqM4XtAJV26dMm9pJo1a5aDqR133DH17NkztWjRIl/evn37NGnSpHwkXqkvQN1ZZZVV8heNvn37pgcffDC9/vrr+aBBHEAIsWz11VfPFa/xJQSAxuGTTz5JiyyySDrllFPSrLPOmg9iPPnkk2mDDTbIIx7iwHMEVv/5z3/y/+eff/663mQasSZlSh2AlNI333yTfvnll/wBFqJZ7sknn5xn3bv88svzh9ivv/6att5669SuXbs8REQoBVC3/ve//+Vh1eedd14ecn3NNdfk5RMnTkyzzDJLPkLetWtXTxNAIxEHK+Iz4dZbb01bbrllXhbn4/Mh/nZ/6aWX0uyzzz7Z9eKgczRBh6KplALSqaeemo+oR+nuMsssk3beeee0xx575Nn2zjzzzDw8ZIkllshH3GPYXhxV0RgRoHi33HJLfh+OySb22muvPJPSbrvtlr9MxJeOZZddNh122GE5kIrjjqVAypcNgMbh/fffz83N4+DymDFj0k477ZTbb0TvwZtvvjkdf/zxObiaZ555yq8TnxcCKeqKUAoaudNPPz1dccUVeUa99ddfP2288cbp/PPPT+uss05abbXV0kknnZSH7r366qt5SEgckQ/RY6o0pA+AGe9vf/tbrl6N4dMTJkxIt912Wz5IEMOuo6l5iC8hUfX697//vVI1qy8bAI3Dcsstlxuax0Hls846Kx+k2H777fMBi/jsiL/544BFhFMlRj9Ql9TnQSMVR0RiyF40xI3heVtttVV644030rBhw1KfPn1yZVSsE40QjzzyyFwlFc10n3vuuXx9gRRAcQ4++OD03nvvpcceeywNHTo09/obPHhwPpgQR8TnnXfeHEztt99+ueoVgMbj4YcfzrPqhRjK3aFDh7TyyivnA8xRFXXHHXfky+Jv/BghEZVTUF8IpaCRiiMicYo+UX/961/z0fYtttgiV0ntu+++eXlURX3xxRdprbXWyl+IYmhfND4vBVMAFDMUI2ZMuu666/Jwi4suuii/P8eBgi+//DJtuumm5cFUVEiV+kppGwrQsMX7fIxmOPDAA/NnQlTTRtPy33//PX8mxIiI+Ds+fpZGO8Tf8lE9Fb0HoT4QSkEjFkdR4kMrekjFePMLLrggHXDAAfmy+KJz44035g+6sPbaa+cj8HF0vuIYdABmrKhc3WGHHfKBgZhkYsCAAbmB7SGHHJInn4gZlZZffvn8fh7v66UvKoZjADRs8T4fFVFHHXVUnoE1gqmxY8fm4d7RgzD6Dh500EFp8cUXT//9738rHbCIYArqA7PvQSMTM27E1LBt2rRJCy+8cP7AihLeGKZ333335XXiiHt8mI0bNy6XA1f80IrLWrduXYePAKBxiErVqtN0H3vssXn67quvvjq/N1944YV5Br62bdvmIRoANA7//Oc/07fffpuOPvrofD56xEal7Jprrpn/Vn/ttdfSE088kS/78MMP8wzb+gtSH2l0Do3ICSeckEOoOKqy4YYb5kaHG2ywQdpzzz1zX6nNN988H2UfMWJE/tITfUtK5b3xIRbXE0gBzHibbbZZHlY9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K3/mmWfSUkstVenLy2+//Za/9JSmkC1xNAWgWNHEfKuttkpHHHFEHrJX8X34+eefzxNQRFPbGHa95JJLptNPP728t4im5gCNt7o2RkBEg/PoCRs9puL8fffdV9ebBrWuWe3fJDAjRS+SNm3apHnmmSd/YYmj7xFKRSBVqpKKoCoqpeIDrWJjXE1yAYoV4VI0L49KqNL7cCmYWmaZZdJCCy2UzjzzzMmuI5ACaNgGDx6c/66P0GnLLbes9Hd6zMYaByxCafhe1YPN0FCYfQ9mItH49tJLL00ff/xx7he1ySab5CF60ZckRCAVX3bOP//8PExECAVQt1q0aJGb1j733HP5fFS1lt6b33jjjRxIxRC+krhcIAXQsMXsqrvuumv+ufvuu6fu3bunp59+unwGvi5duuTz0a4jtGzZMn82lC6HhkQoBTOJY489NvXr1y9XSMWRklatWqVDDz00/4zhHgcccEA644wz0oYbbpi++uqrPBYdgLoVjWrPOuusdO211+b36qiYitNnn32WDj744LzOfPPNV76+SSgAGraBAwfmxuYxfDsqoKKH1JgxY/IEGHGwIiy//PK54fm3335b6boOWtAQ6SkFM4GYIvzwww/PVVGrrbZaXlbqIfXOO++k//znP+mWW27JgVU00Y3x55qaA9QPcWT7hhtuSPvuu2/q1q1bfv+OLyCLLLJIeuCBB/I6mpoDNA7HH398ev/99/PkFqXh3DGMLz4fll566fz3fjjuuOPyQQ0jH2johFIwEzj77LPTo48+mmdrivLdKfUcqbis1F8KgPohDiLE0OqolIoDCDFkI+ghBdDwld7r471/+PDheXheaYKi1q1b55lX4+BFDPdeeOGFy69noiIaOt9YoR4rfQh9/fXXOWSKQCqOppd6jsTljzzySFp88cXToosuWh5IxeUCKYD6JRqbx6kigRRA41D6O32PPfZIm222We4TG604IpAK8bd+DNlr27ZtpeuplKKh01MK6rHSh1CvXr3yUZPbbrstD9krfajFDHsxLr00/rxETxKA+ikOGlSkPwhAwxajHWII9wsvvJBGjBiR+79GW44LLrggnXfeeennn3/Os7Red911uYo2giloTAzfg3ooynmjseFcc82Vx5bHh1McSYnm5QMGDEg9evTIwz9irHlUUQ0ZMsRRFAAAqEdidr04gBzVT3EQIv6mv+yyy9JKK62U+vfvn1t0xGWzzTZb6tChQ3r++efzhEaqaGlMhFJQD2fZu+OOO9Lvv/+eP6CiWirGmMfY8phd75xzzknt2rXLp7nnnjsNHjw4f3gZbw4AAPXDk08+mY466qh0ySWX5BAqAqcIqGL0QzQzj8bmX3zxRXrllVfy3/Xrr79+/rtfX1gaG6EU1CNRthuhVIRQMSvTBx98kM4999z04osvppdeeikHUzFbx3fffZd7Rq266qr5qIsPLwAAqB8ifIqRDDGrXgzdK3nzzTdT3759c5/Yf/zjH5P1j3KQmcZIKAX1SBxN+eGHH/IHWclnn32W9ttvv1wNdfvtt6dZZ5210nWU9wIAQP2xww475JEPyy67bG7LEUPzSi6++OI8dC96wuofBRqdQ70SfaJeffXVSssWXHDBPEPHRx99lC+vSpNcAACoPwYNGpSbmcfwvBgJ8f3335dftvLKK+cKqR9//LFOtxHqi2Z1vQHA/+nevXs+mhKVUttvv31q06ZNXr744ounFi1a5BLgjh072mUAAFCPfPrpp7knVLTYmGeeedJFF12UZ8q+4oor8kiIqJ6KkQ+nn356mmOOOXKrDsDwPahTDz/8cA6a4mjJRhttlMeR77HHHrmX1I477pi22267PDxv7733zh9yDz74YGrSpIlnDQAA6omTTz45/ec//0nDhw/PM2dvvPHG6ZRTTsmX7bvvvumf//xn/ns/DkCHm2++OfeV0oYDVEpBnTnmmGPSNddck4+kRAi16aabppNOOilXSR100EG5KWKss8wyy+RAKpqdRyDlwwsAAOqHM888M1dDxd/wcbA5JiWKiYpieF5US0VD85hR+9Zbb82hVBx4jkBq/PjxeSQENHaG70EdiA+rBx54ID366KNpySWXzOW+Bx54YD7KcsEFF6Srrroqff7557m/1Oyzz57WW289U8QCAEA9Mnr06Nx644wzzkhbbLFFXhbBVNeuXdOhhx6aDy7vs88+OZz66aef8s8Ywrf11ltryQH/P7PvQcHOPvvs9PHHH+f/X3vttamsrCxXQL377rtp2223TWussUa6/vrrJ7ueKWIBAKD++OWXX9JSSy2VW22ceuqplcKqvfbaK8+ud+mll+aDy+GAAw5Id911Vz4Ivdtuu2nLAWbfg2JFmW4cJYnQ6c0338znI5CaMGFCHn/er1+/dPvtt6cRI0bksKqi0ocZAABQ96JPVO/evdNrr72W3nvvvfLlMVwvAqkY+RB/w8fB5RCjIXbeeee09tprC6Tg/9e09B9gxoqy3meeeSb3jYpqqaFDh5ZXRMUsHaF169ZpwQUXzOPLNTQHAID65bLLLssz6JVsuOGG6aOPPsq9o95+++3yCqoIqUoz7FUMpi6++OK06KKL1tHWQ/2jpxQUIMaW33HHHalHjx75iEo0Mh8zZkz5z5h5r3379rlJYhxVmWuuuTwvAABQj/Tp0ycNGDAgLb/88vmg8gknnJC22WabPBIihulFv9j4W/63337Lf//HML0QIyCMeoDqCaWgAFH1FEdMvvzyy3w+gqmjjz46Lz/22GNzZdR+++2Xfv/99/TYY4+lpk2bmmUPAADqUSA1aNCg9PDDD+e/1++7775c/RSjIKKn1BJLLJE+/PDDNGTIkLTwwgunI444IgdX0aajNCoCmJzfDpiB/vOf/6T55psvrbDCCmn++efPoVNJu3bt8odYq1at8s/oKRXlvCHWi5k5AACAuhVhVFRIRZPyjTfeODc3Hzt2bPr3v/+dL4+/5ddZZ5182nPPPcuvF6GVQAqmTigFM8jIkSPTwQcfnDbYYIN04okn5vApqqIef/zx3DuqV69eaeWVV84/I4A68MADc1PEaH4okAIAgPoh/o7v3r17brURB5KXXHLJdNxxx6VzzjknH4SOUQ4LLLBAnkU7+kWVZtc2ZA/+WJOyqlN8AbXm1VdfzWFTHE156qmn0pprrpn//9BDD+UjJ++//37acccdU//+/dP555+fmybedtttafvtt/csAABAHZo0aVIOnEJURV144YW5DUf0j4oQ6rvvvsuTGV1yySV5yN7666+fjjnmmBxaAdNGKAUFBFP77LNPev3119N1112XS3ojC44PuZiBb5VVVskfdtFzKj7gttpqqxxcAQAA9Uf8LX/VVVflv9ejyXlUQ8Xse6NHj0433HBD7jcVrTt22GGHut5UmGkIpaAAMT3slltumdZaa610/PHHp2WWWabaozClUl8AAKBuxCx6MUFRtNTo2bNn6tSpU/llMXt2jICIg8vbbbddGjZsWD7F3/JfffVVmmeeeTxtMB2EUlCQqJSKGfYWXHDBdN5556WFFlrIvgcAgHokesDec889qUOHDqljx47p5ZdfTi+88EL5kLwxY8akxRdfPI9yiLDqnXfeyTNpVxzq50AzTLv/91sDzHArrrhiuuyyy/I49BiDDgAA1B/XX399+uc//5luvfXWNGTIkLTtttumUaNG5VEPJePGjUstW7bMB5g//PDDHEjFzNmlQCoY+QDTzux7UKDVVlstrbrqqvmDquLRFAAAoG7FJEQxsiH+Xo9qqT59+qSrr746h1NRGTVhwoQ8o14cbI4esN98802ae+65zZwNf4JvxFCwCKSipFcgBQAAdaviZPRRFTV+/Pj0wAMPpN122y233Nh3333zOoMGDUrXXHNNat++fTrkkENySBVD+4A/RygFdUBJLwAA1L1oUl6y7LLLpoceeijtvPPO6ZxzzkkHHHBAXv7TTz/lyqnoJxW6d++eDj300LTZZpvV2XZDQyGUAgAAoNF57LHH8qzY0UMq7L333nk4XuvWrdPCCy+cvv7669w3aqeddkrffvttOuWUU8qvu9hii01WaQVMP7PvAQAA0Oh88skn6aKLLsqhVExItOOOO+ZqqB49eqTRo0en4cOHpxVWWCG33XjiiSdy76iJEyfmvlJA7RBKAQAA0KhEhVO01IiQafPNN8+h08CBA9MOO+yQZ9h7/fXX0+eff55n2evWrVsOpqLRebNm5gqD2iSUAgAAoFG46667UteuXXPQFO6///606667ppVXXjm9+uqr6Yorrsg9paoyczbMGGJeAAAAGrz33nsvnXnmmWm++eZLN9xwQ3rttddyABVD+KJpef/+/XMD85iBb88996x0XTNnw4yhUgoAAIAGLYbktWzZMjc3P+uss3LvqBiid/3115dXRo0YMSL17ds3ffHFF+nRRx+t602GRkEoBQAAQIMVFVDPPfdcbl4ew/deeumldOqpp6axY8fmJudLLbVU+bojR45Mc801l8ooKEjTou4IAAAAinTkkUfmUGqxxRZLw4YNSxdffHH6y1/+kiuiOnbsmE488cT05ptvlq/fqVOnHEhFDylgxlMpBQAAQIMTwdM555yTw6hobn7ggQemX3/9NbVv3z5tv/326eOPP0433XRTrpiKHlOLLLJIXW8yNDoqpQAAAGhQvv322zyTXlRFzTvvvLmX1LXXXpsmTJiQPv3009SjR4+06KKLpn322SetuOKKObQCiqdSCgAAgAYnZtc76KCD0myzzZaef/75dPXVV6dddtklX7baaqul7t2750qqkhiyZ5Y9KJZKKQAAABqclVZaKV155ZXps88+S926dUurrLJKXh7D9SKAip5SFQmkoHhCKQAAABqkGJp35513pjFjxqQBAwakt99+O+28885p3LhxqU+fPnW9edDoGb4HAABAgx/Kt//++6f3338/95iKGfeaN2+eJk6cmGaZZZa63jxotIRSAAAANHhDhw5N/fv3T7fccktq1qxZbnoeP4G6I5QCAACgURFIQf0glAIAAACgcBqdAwAAAFA4oRQAAAAAhRNKAQAAAFA4oRQAAAAAhRNKAQAAAFA4oRQAAAAAhRNKAQAAAFA4oRQA0Gg1adJkqqd+/frV9SYCADRYzep6AwAA6spXX31V/v/bb789nXLKKen9998vXzbbbLPV0ZYBADR8KqUAgEarc+fO5af27dvn6qiKyyKUevLJJ/Pyn376qfx6u+66a15277335vOffvrpFKutBgwYMMX732OPPVLv3r3Lzz/00EP5PuNn6N69ezrkkEMqXefbb79NLVq0SIMHDy5fp2PHjqlly5ZpqaWWSjfddFOl9a+88sq0yCKL5OssscQSk11ecVvbtWuXNtpoo/Txxx+XXx7rr7LKKqlt27Z5n+y0007pm2++qeEeBwD4P0IpAIDpMHTo0HT//fdXe9ljjz2Wq69Kp/nnn3+ab/eZZ55J2223XbruuuvSJptskpfts88+6dZbb03jxo0rX+/mm29O8803Xw6jwsEHH5yeffbZ9MEHH6QDDjgg7b777umzzz7Ll91zzz3p8MMPT0cddVR6++230/7775/23HPP9MQTT1S674EDB+btffrpp3PgdOKJJ5Zf9vvvv6fTTz89vfHGGzmEiwAuwjQAgD9LKAUAMB369OmTjjnmmGovm2OOOSpVWs0yyyzTdJuvvvpq2nzzzdMFF1yQtt9++/LlW2+9df553333lS+74YYbcigUlU1hm222SUsvvXRacMEF05JLLpmXTZgwIf88//zz87oHHXRQWnzxxfO2x23G8oo6dOiQt7dr1665Iiqqxkr22muvHJItvPDCaY011kiXXHJJruQaPXr0dOw1AIDJCaUAAKZRVAp98sknufKotgwfPjz16tUrjR07Nm2wwQaVLmvVqlUeKnj99deXh1dR8VS1UilCoxi+t9VWW+V1Y7heeO+999Laa69dad04H8sr2nHHHfOwwdlnnz398ssv6eyzz65UGRaB2QILLJADq/XXXz8v//zzz2ttHwAAjZNQCgBgGsQwtmOPPTadeeaZqXXr1rW2z9588808TG/nnXfOVUmTJk2qdHlc9t///jd98cUXeZhdDNuLqqiKrr322hwexfaddNJJue/U9LjooovS66+/nl5++eVcMVUKvcaMGZMDs+g1dcstt6QhQ4bkIYFh/Pjxf/qxAwCNm1AKAGAaRMPwqCaKyqXatN566+XKpAsvvDD3grr44osrXb7ccsvlRuP/+Mc/cn+pCK6qih5Tyy67bOrXr18Okp566qm8PBqfP/fcc5XWjfMx3K+iCKIWXXTRfD+HHnpoevDBB3MIN2zYsPT999+nc845J6277rp5eKAm5wBAbWlWa7cEANCA9e/fPz3wwAPlvZxqSwyZC9HH6Zprrknbbrtt2myzzdJiiy1WqVoqZuGbddZZ8xC9ikP/onpppZVWSmVlZenGG2/Mw+8iyArR+yqap8flPXv2zNt/991354bsFcXMgl9//XUaNWpUbrQe/aOaN2+eh+zFrH2XXnppbqIeQwej6TkAQG1QKQUAMA023HDDfJqRojfUDjvsMNkwvuj51KxZs/wz+kyVREPzGHrXrVu3fHrkkUfSnXfemZZYYol8ee/evXPlVTQ2X2aZZdLVV1+dhwBW7V0VM/LNM888adVVV00//vhjuuuuu/LyueaaKzdWj9uM6qqomKraJB0AoKaalMVhNQAA6q1PP/00Ny+PqqiVV165rjcHAKBWCKUAAOqp6OsUPZ2OPvroPFSvan8oAICZmeF7AAD1VIRQMawuKqSuuuqqut4cAIBapVIKAAAAgMKplAIAAACgcEIpAAAAAAonlAIAAACgcEIpAAAAAAonlAIAAACgcEIpAAAAAAonlAIAAACgcEIpAAAAAAonlAIAAAAgFe3/A3tXM3FD3ZZqAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 1200x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Визуализация результатов модели\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "\n",
    "# Визуализация важности признаков (исправлено предупреждение)\n",
    "plt.figure(figsize=(8, 4))\n",
    "sns.barplot(data=feature_importance, x='importance', y='feature', \n",
    "            hue='feature', palette='viridis', legend=False)\n",
    "plt.title('Важность признаков для предсказания типа кузова')\n",
    "plt.xlabel('Важность')\n",
    "plt.ylabel('Признак')\n",
    "plt.tight_layout()\n",
    "plt.show()\n",
    "\n",
    "# Матрица ошибок\n",
    "from sklearn.metrics import confusion_matrix\n",
    "cm = confusion_matrix(y_test, y_pred, labels=model.classes_)\n",
    "\n",
    "plt.figure(figsize=(10, 8))\n",
    "sns.heatmap(cm, annot=True, fmt='d', cmap='Blues', \n",
    "            xticklabels=model.classes_, yticklabels=model.classes_)\n",
    "plt.title('Матрица ошибок')\n",
    "plt.xlabel('Предсказанный класс')\n",
    "plt.ylabel('Истинный класс')\n",
    "plt.xticks(rotation=45)\n",
    "plt.yticks(rotation=0)\n",
    "plt.tight_layout()\n",
    "plt.show()\n",
    "\n",
    "# Распределение предсказаний\n",
    "plt.figure(figsize=(12, 6))\n",
    "pd.Series(y_test).value_counts().plot(kind='bar', alpha=0.5, label='Истинные значения', color='blue')\n",
    "pd.Series(y_pred).value_counts().plot(kind='bar', alpha=0.5, label='Предсказанные значения', color='red')\n",
    "plt.title('Сравнение распределения классов')\n",
    "plt.xlabel('Тип кузова')\n",
    "plt.ylabel('Количество')\n",
    "plt.legend()\n",
    "plt.xticks(rotation=45)\n",
    "plt.tight_layout()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "f9588f0d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAxoAAAHDCAYAAACj7mycAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjcsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvTLEjVAAAAAlwSFlzAAAPYQAAD2EBqD+naQAALb1JREFUeJzt3QW0bVWhP+BFdyPd3SEt8mgQpUWUh4QKPilBRBBRaXiAIBigIK1IKSEID0kpSSnpDinpkBD2f/zmf6wz9onLPfcyb3Dv941x4J59dqy911xrzd+sPU6n0+k0AAAAFY1b88kAAAAEDQAAYITQowEAAFQnaAAAANUJGgAAQHWCBgAAUJ2gAQAAVCdoAAAA1QkaAABAdYIGAGO8X/ziF82rr77a8/vRRx/dvPXWW4N+/M0339xMOOGEzRNPPNGMrX772982jz/+eM/vp5xySvPMM8+M0m36pLr33nub8ccfv7nnnntG9abACCVoMEbLhXCcccZpbr311n5/O+GEE8rfNt544+aDDz4YJdsHjBx/+tOfmv3226956qmnmt/97nfNj370o2aSSSYZ9OP32WefZosttmjmnHPOZmx17bXXNnvuuWcJG//3f//X7LTTTs2446pGDI9FFlmk+cIXvtD8+Mc/rr6fYHQy/qjeABgVzjvvvGaHHXZoVllllebMM89sxhtvPDsCxmA/+MEPmg033LA55phjSuX4yCOPHHQl+Y477mguv/zy5oYbbmjGZt/5znea1VZbrZl77rnL77vvvnsz88wzj+rN+sT61re+1Xz+859vHnnkkWbeeecd1ZsDI4SgwVjn6quvLi2TaVFKK+fEE088qjcJGMFWXXXVMuzpvvvua2afffZmttlmG/RjTz755GaOOeZoVlxxxWZsttBCC5VKcYb7TD/99CrHH9Naa63VTDPNNM2pp57aHHDAAXV2Eoxm9HkyVknL5EYbbVRa4dL1P9VUU/UbGvClL32pVCommmiiUiFJK96///3vXvfbdtttm8knn7x59NFHm3XXXbeZbLLJmllmmaVcLDqdTrlPhhdkaNZH/eR54uWXX2722GOPZvHFFy/PO+WUUzbrrbdec+eddw7qfX3Ua8w111w992u36Sc/+Unz05/+tAwDyfCRVMIGGit85ZVXll6fvL+pp566fHapqHXLcJSPev0MX2sra/n973//e7/XOeSQQ0qvUjveO62miy22WK/7ZJvz+O4x4v/617/KbdmGbh9++GEZg7/ooouWIDnjjDM2//M//9O88sorve6Xz2b99dfvtz0777xzed6+n3Fu7yuPH9JnPCTtZ9ZqP5uTTjqp3+eS2//85z83HyX7JduQ9zrDDDOUlvu77757uLY/su2f+cxnmummm66Uj2WWWaY599xz+wX2PGf+3y1luu/zjaj90Xe/H3HEEeX2lJ+BtjNleKWVViohI8NWBnqOgZx//vnNGmus0WsbMt9j4YUXbpZffvle54eB3n+2P8f17bff3uv2Sy65pOf4mmKKKco2/eMf/xhwG4Z0fLXHw9DONe1n0n4effdnt77voS3TOZazrSussEIJGRk61X0eG1kGc77LeTj/zrHR1zvvvFPO/SmD3belLCywwAKljOYasemmm5ZgNSzn8sh1IdeRaaedtpl00klLQL344ov7bccEE0xQ9ssFF1wwwj4rGNX0aDDWyAXjc5/7XAkQCRkDdfmfc845zdtvv12GVaWSlQmgP//5z5unn366/K1b5nXk+XIROfzww5tLL7202XfffZv//Oc/JXB86lOfak4//fSe+//xj38sQ7a6b2u7y3NhSmUmF6cMS3j++eebX//61yUAZNJgQszQrL322s3WW2/d67YMD+lbmYvTTjuteeONN0pFIRfYDCdJRSqV01QCI0NFEnbmmWeecgFOZSqfxcorr1wqTH0rU8cdd1ypTLUee+yxXuOPN9tss/J6GR+/9NJL93psbssFd9ZZZ21qSAUilaKvfe1rzbe//e2yLZkMnJBz/fXXlwv86CTbmfKRoSjZjwm42Rf7779/841vfKMMrxiab37zm81MM83U/POf/yzvNa2led+p6AyrlIeElS233LJ57733yvDClM2LLrqoVIZHx/2Riv+hhx46qPv+9a9/HWp4ayX8Pvnkk82nP/3pXrcntOTzyPG/zTbbNGeddVa/MBQ5ZnJsZP92P0fOA3lcGioOO+ywct7J/T772c+Wz6Xv8RWbbLJJqfy2jSLHH398r+drtX9LY0J6HqI9rmt5+OGHyzy3wcp5aDBz4VJeB1Nmh3a+y7746le/Ws7NachJpb+VnuzXX3+9/D2yXQm4V1xxRfOVr3yl2XXXXcv58S9/+UtpgMmxNNhzec7dCenZnynruY6kxyLHU8Jd9mG3hPgEjWxPGphgjNOBMdjJJ5+c7oXORRdd1Jl33nnLv9dZZ50h3v/tt9/ud9uhhx7aGWeccTpPPPFEz23bbLNNea5ddtml57YPP/yw84UvfKEz4YQTdl588cV+z7PvvvuWxwzknXfe6XzwwQe9bnvsscc6E000UeeAAw4Y6vvM8+600079bs/2zDnnnL2eM/edZJJJOk8//XTP7TfddFO5/Tvf+U7PbUsttVRnhhlm6Lz00ks9t915552dcccdt7P11lv3e1993/Mtt9xSbs8+aG2xxRadWWaZpdd7vf322/vdb9VVV+0suuiivZ7viCOOKPfLe2jlNXNbtqF17bXXltt+97vf9Xr8pZde2u/2fDb5jPrKZ9l3Xw3rZ5ztHZKBysKzzz7bmXbaaTtrr71259133+0svfTSnTnmmKPz2muvdYbV2WefXZ7/1ltvHebtH+g4eO+99zqLLbZYZ4011ui57ZprrinPeeWVV/a6b46N7ucbkfuje7/vueeepbwus8wypfy0rrrqqnLf/L+1wgordNZbb71+zzGQyy+/vNzvT3/604B/z/vLcbrPPvv0e/+XXHJJZ7zxxutXFt54443O1FNP3dl+++173f7cc891pppqqn63v//++2Ub9t9//37ntu7jYTB/az+Pc845Z4jvue8+bMt09zG6+eablzIx++yzl/sPTZ4vzzG0n6Htj2Epyw888EC573HHHdfrfhtuuGFnrrnmKufsOOmkk8r9jjrqqH7P2d5nsOfy3Xbbrfwt5aJ7f88999zlNfue588444xy/5yDYUykR4OxQrq102L03//9380ZZ5xReifSQttX9yo0Wfoyrfhpncq1La2MGVLVrXsoSjs0JV3k6Q1Iy9hgpZellda1tM6md2DBBRfsN9yihqy01d17kOEfGQ6RVt6jjjqqefbZZ8sws6ww090SuMQSS5SWxMG2BveVFsjf//73zVVXXdWsueaaPb0Z+dy/+MUvVnhn/79XKsMisp0ZWtXdcpjPNK+dctB6//33e90v0sszkNze9755/EDSopn7ZkhYWr8Hau3ult6IX/7yl2X+UIbT5PNPi+pgWznzevlJ71tamtOCnWEgw7P93cdB2xKdbcq+a2WIVuT1RtX+6O51SM9BWq8/akhQ2xp9yy23lOM5Q5eG5qWXXir/z1j6gaQHIr2POcdkDkMr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QHWCBgAAUJ2gAQAAVCdoAAAA1QkaAABAdYIGAABQnaABAABUJ2gAAADVCRoAAEB1ggYAAFCdoAEAAFQnaAAAANUJGgAAQHWCBgAAUJ2gAQAAVCdoAAAA1QkaAABAdYIGAABQnaABAABUJ2gAAADVCRoAAEB1ggYAAFCdoAEAAFQnaAAAANUJGgAAQHWCBgAAUJ2gAQAAVCdoAAAA1QkaAABAdYIGAABQnaABAABUJ2gAAADVCRoAAEB1ggYAAFCdoAEAAFQnaAAAANUJGgAAQHWCBgAAUJ2gAQAAVCdoAAAA1QkaAABAdYIGAABQnaABAABUJ2gAAADVCRoAAEB1ggYAAFCdoAEAAFQnaAAAANUJGgAAQHWCBgAAUJ2gAQAAVCdoAAAA1QkaAABAdYIGAABQnaABAABUJ2gAAADVCRoAAEB1ggYAAFCdoAEAAFQnaAAAANUJGgAAQHWCBgAAUJ2gAQAAVCdoAAAA1QkaAABAdYIGAABQnaABAABUJ2gAAADVCRoAAEB1ggYAAFCdoAEAAFQnaAAAANUJGgAAQHWCBgAAUJ2gAQAAVCdoAAAA1QkaAABAdYIGAABQnaABAABUJ2gAAADVCRoAAEB1ggYAAFCdoAEAAFQnaAAAANUJGgAAQHWCBgAAUJ2gAQAAVCdoAAAA1QkaAABAdYIGAABQnaABAABUJ2gAAADVCRoAAEB1ggYAAFCdoAEAAFQnaAAAANUJGgAAQHWCBgAAUJ2gAQAAVCdoAAAA1QkaAABAdYIGAABQnaABAABUJ2gAAADVCRoAAEB1ggYAAFCdoAEAAFQnaAAAANUJGgAAQHWCBgAAUJ2gAQAAVCdoAAAA1QkaAABAdYIGAABQnaABAABUJ2gAAADVCRoAAEB1ggYAAFCdoAEAAFQnaAAAANUJGgAAQHWCBgAAUJ2gAQAAVCdoAAAA1QkaAABAdYIGAABQnaABAABUJ2gAAADVCRoAAEB1ggYAAFCdoAEAAFQnaAAAANUJGgAAQHWCBgAAUJ2gAQAAVCdoAAAA1QkaAABAdYIGAABQnaABAABUJ2gAAADVCRoAAEB1ggYAAFCdoAEAAFQnaAAAANUJGgAAQHWCBgAAUJ2gAQAAVCdoAAAA1QkaAABAdYIGAABQnaABAABUJ2gAAADVCRoAAICgAQAAjP70aAAAANUJGgAAQHWCBgAAUJ2gAQAAVCdoAAAA1QkaAABAdYIGAABQnaABAABUJ2gAAADVCRoAAEB1ggYAAFCdoAEAAFQnaAAAANUJGgAAQHWCBgAAUJ2gAQAAVCdoAAAA1QkaAABAdYIGAABQnaABAABUJ2gAAADVCRoAAEB1ggYAAFCdoAEAAFQnaAAAANUJGgAAQHWCBgAAUJ2gAQAAVCdoAAAA1QkaAACAoAEAAIz+9GgAAADVCRoAAEB1ggYAAFCdoAEAAFQnaAAAANUJGgAAQHWCBgAAUJ2gAQAAVCdoAAAA1QkaAABAdYIGAABQnaABAABUJ2gAAADVCRoAAEB1ggYAAFCdoAEAAFQnaAAAANUJGgAAQHWCBgAAUJ2gAQAAVCdoAAAA1QkaAABAdYIGAABQnaABAABUJ2gAAADVCRoAAEB1ggYAAFCdoAEAAFQnaAAAANUJGgAAQHWCBgAAUJ2gAQAAVCdoAAAA1QkaAABAdYIGAABQnaABAABUJ2gAAADVCRoAAEB1ggYAAFCdoAEAAFQnaAAAANUJGgAAQHWCBgAAUJ2gAQAAVCdoAAAA1QkaAABAdYIGAABQnaABAABUJ2gAAADVCRoAAEB1ggYAAFCdoAEAAFQnaAAAANUJGgAAQHWCBgAAUN04nU6nU/9pxzzvvvtuc+ihhzZ77713M9FEE43qzWEUUAZQBlAGUAZQBgZP0Bik119/vZlqqqma1157rZlyyimH4SNmTKEMoAygDKAMoAwMnqFTAABAdYIGAABQnaABAABUJ2gMUiaA77vvviaCj8WUAZQBlAGUAZSBwTMZHAAAqE6PBgAAUJ2gAQAAVCdoAAAA1Y3VQeOUU05ppp566mZ0sd9++zVLLbXUqN4MAIbDaqut1uy2226f2GsQQ3b11Vc344wzTvPqq68O8T7255h9vA6GMjCGBo0xpYK+xx57NFdccUXP79tuu22z8cYbj9JtAgbv8ccfL5WRO+64w8cGwFhvjAgaY4rJJ5+8mW666Ub1ZjACfPDBB82HH37os6V47733fBIwCozux977778/qjcBxsygkUrY4Ycf3sw333xlfeI55pijOfjgg8vf9tprr2aBBRZoJp100maeeeZpfvSjH/UcjOmm2n///Zs777yztCTmJ7fFUUcd1Sy++OLNZJNN1sw+++zNjjvu2Lz55psfuR3HHXdcM++88zYTTjhhs+CCCzann356r7/ff//9zWc/+9lm4oknbhZZZJHm8ssvL695/vnnD+p9Pv30080WW2zRTDvttGW7ll122eamm27q1zOTf5966qnNBRdc0PO+0nW7xhprNDvvvHOv53zxxRfL9nb3hjBkp512Wgl07777bq/b03u01VZblX/nc//0pz9d9nPKXMrYf/7zn577Dq1std2nF154YSknKdNPPvmk3TIKzyN33313OX4mmWSSsv+/+c1v9tpnA3Wjp0ykZ7E111xzNYccckjz9a9/vZliiinK8x9//PE9f5977rnL/5deeulyzOY5u3snsy2zzDJLObcccMABzWKLLdbvPeQckHMc9WQ/7LLLLmX/TjPNNM2MM87YnHDCCc1bb73VfO1rXyv7MmXmkksu6XnMNddc0yy//PKlHM0888zN97///V7ngDx26623Lg1E+fuRRx7Z73VzjklP9ayzzlrOFSussEI5jzNy932umdn3008/fbPuuuv263XMcKj2Gtv685//XOodOV+svvrqpbeyr5zncw5I3WSTTTZpXnrppX73Gdq1JK+beseGG25Yykh7vmLkyL5I+ZhqqqlK+ci5t9PplL+98sor5RjPOSP7eL311mseeuihQZeBlJlxxx23ufXWW3s95uijj27mnHPOsafxsTOa2HPPPTvTTDNN55RTTuk8/PDDnWuvvbZzwgknlL8deOCBneuvv77z2GOPdS688MLOjDPO2DnssMPK395+++3Od7/73c6iiy7aefbZZ8tPbouf/vSnnSuvvLI87oorrugsuOCCnR122KHnNU8++eTOVFNN1fP7H//4x84EE0zQ+eUvf9l54IEHOkceeWRnvPHGK88R//nPf8pzrL322p077rijbOPyyy+fEtk577zzhvoe33jjjc4888zTWWWVVcpjH3rooc5ZZ53VueGGG8rf9913386SSy7Zc9/NN9+887nPfa7nfb377rud3/3ud+Vzeuedd3qe96ijjurMNddcnQ8//LDS3hizpXxkv5999tk9tz3//POd8ccfv+zrv/71r50pp5yylMVHHnmkc9lll5XPd7/99uu5/2DKVsrSZz7zmVJ277///s5bb7010t/r2GZI55E333yzM/PMM3c23XTTzt1331322dxzz93ZZptteh676qqrdnbddddez7fRRhv1us+cc87ZmXbaacs5IsfvoYce2hl33HHL/o2bb765nA8uv/zycsy+9NJL5fY8x+STT97ZaqutOvfcc0/5eeqpp8pj85jW7bff3hlnnHFKuaOe7NspppiiXEsefPDB8v+c29dbb73O8ccfX27L8TvddNOV4/Tpp5/uTDrppJ0dd9yxc99995Xz+/TTT1/O0a3cf4455ij7+q677uqsv/765TW6y9B2221XzgE5p6Q8HnHEEZ2JJpqovN5A1yBGzL7Psfe9732vHKf5yTH697//vec+r7zySrntqquuKr8/+eSTZT/tvvvu5f6//e1vS70j98l9429/+1s5flMXSX3hmGOO6Uw99dS99udgriV5zhlmmKFz0kknlfs88cQTisFILhs5Ztv9nOM+54TYcMMNOwsvvHDZj6nzrbvuup355puv89577w26DKy99trlPNJtiSWW6Pz4xz8ea/bzaBE0Xn/99XJQt8FiaHKyXmaZZXp+766gf5RzzjmnXEhafU/yuSBsv/32vR7zpS99qfP5z3++/PuSSy4pldFUIFp/+ctfBh00fv3rX5cLUVv56Kvv+0jlJBWdbv/+979LRSoBpbvQdp+4GLpUElLJaCVUJgQmrK255pqdQw45pNf9Tz/99FJRHZaylXKRkxOj/jySC0eOmwSO1sUXX1wuEs8999wwBY2vfvWrPb+nvKSScNxxx5XfEzz7VmIiz5GKShoLuqUMdgfUXXbZpbPaaqt9jE+BgWTffvazn+35PY1Gk002WQl+rZzXs+9uvPHGzg9+8IPSeNDdeJNwmUrJBx98UBqCJpxwwl6NFTmvTzLJJD1lKBXGhJlnnnmm17bk/LL33nuXfwsaI2ffL7300j2/D3SM9g0a2T+LLLJIr+fZa6+9egWNLbbYoqdu0Pryl7/cq04xmGtJnnO33Xar9n4ZtrKRINF9nGc/57Y0BmTfpKGw9a9//asc4+1xP5gycNZZZ/VqHL7ttttKY1LK4dhitBg6dd9995Uu5jXXXHPAv5911lnNyiuv3Mw000ylm/qHP/zhoIahZFhTnjPd1ukaz7CYdGu9/fbbQ9yOvE63/J7b44EHHijDZLIdrXStD1a6ajOkIsOmhle6X/M+TjrppPL77bff3txzzz29hncwdNtvv31z2WWXNc8880xP92c+w3RjZxhehrWkrLU/uf+zzz7bU3YGU7YynG2JJZawO0aD80j+tuSS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",
      "text/plain": [
       "<Figure size 1000x500 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(10, 5))\n",
    "sns.heatmap(df.isnull(), cbar=False, yticklabels=False, cmap='viridis')\n",
    "plt.title('Карта пропущенных значений (желтый = пусто)')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "b2f927d2",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['catalog_city', 'year', 'country', 'model', 'rudder', 'body']\n"
     ]
    }
   ],
   "source": [
    "print(df.columns.tolist())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "2570ce98",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Remaining classes:\n",
      "body\n",
      "кроссовер      191\n",
      "седан           60\n",
      "внедорожник     35\n",
      "лифтбек         13\n",
      "пикап            9\n",
      "универсал        8\n",
      "минивэн          8\n",
      "Name: count, dtype: int64\n",
      "\n",
      "Rows after filtering: 324\n"
     ]
    }
   ],
   "source": [
    "# Remove rare classes (less than 5 samples)\n",
    "body_counts = df_clean['body'].value_counts()\n",
    "\n",
    "valid_classes = body_counts[body_counts >= 5].index\n",
    "\n",
    "df_clean = df_clean[df_clean['body'].isin(valid_classes)]\n",
    "\n",
    "print(\"Remaining classes:\")\n",
    "print(df_clean['body'].value_counts())\n",
    "\n",
    "print(\"\\nRows after filtering:\", len(df_clean))"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "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.12.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
