# Kolesa Analytics - Ass3.ipynb

## 📋 Обзор

Jupyter ноутбук для анализа автомобильных данных с сайта Kolesa.kz и предсказания типа кузова автомобиля на основе его характеристик.

## 🚀 Функционал

### Веб-скрапинг
- Сбор данных о новых автомобилях для городов Алматы и Астана
- Извлечение технических характеристик (год, страна, поколение, тип кузова)
- Сохранение данных в CSV файлы

### Анализ данных
- Объединение и очистка данных
- Визуализация распределения типов кузова
- Анализ стран-производителей

### Машинное обучение
- Предсказание типа кузова на основе характеристик
- RandomForest классификатор с точностью ~77%
- Сохранение обученной модели

## 📊 Данные

**Источники:** `kolesa_new_almaty_embedded_ads.csv`, `kolesa_new_astana_embedded_ads.csv`
**Объем:** 342 записи (198 Алматы + 144 Астана)
**Признаки:** город, год, страна, модель, руль, количество мест/дверей
**Цель:** тип кузова (7 классов)

## 🛠️ Требования

```bash
pip install pandas numpy matplotlib seaborn scikit-learn requests beautifulsoup4
```

## 🚀 Быстрый запуск

### Вариант 1: Полный запуск (рекомендуется)
1. Откройте `Ass3.ipynb` в Jupyter
2. Выполните **только ячейку 2**
3. Результаты: модель `body_prediction_model.pkl`

### Вариант 2: Пошаговый запуск
1. Выполните ячейки в порядке: `2 → 3 → 4 → 8 → 10 → 11 → 12`
2. Пропустите ячейку 1 (скрапинг) если CSV файлы существуют

## 📈 Результаты

### Точность модели
- **Общая точность:** 76.9%
- **Лучше всего предсказывает:** кроссовер, седан
- **Хуже всего предсказывает:** редкие классы (пикап, универсал)

### Важность признаков
1. Количество дверей: 81.4%
2. Количество мест: 18.6%

### Типы кузова
- Кроссовер: 191
- Седан: 60
- Внедорожник: 35
- Лифтбек: 13
- Пикап: 9
- Универсал: 8
- Минивэн: 8

## 📁 Файлы

- `Ass3.ipynb` - основной ноутбук
- `kolesa_new_almaty_embedded_ads.csv` - данные Алматы
- `kolesa_new_astana_embedded_ads.csv` - данные Астана
- `body_prediction_model.pkl` - обученная модель
- `README.md` - этот файл

## ⚠️ Особенности

- Скрапинг занимает 10-15 минут
- Модель лучше работает с популярными классами
- Требуется интернет для скрапинга
- CSV файлы уже включены в репозиторий

## 🎯 Использование модели

```python
import pickle

# Загрузка модели
with open('body_prediction_model.pkl', 'rb') as f:
    model = pickle.load(f)

# Предсказание
features = [[city_encoded, year, country_encoded, model_encoded, rudder_encoded]]
prediction = model.predict(features)
```

## 👨‍💻 Авторы

Проект создан для анализа автомобильного рынка Казахстана через данные Kolesa.kz
