IIS_2023_1/mashkova_margarita_lab_5/README.md

87 lines
6.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

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

# Лабораторная работа №5
## ПИбд-42 Машкова Маргарита (Вариант 19)
## Задание
C помощью гребневой регрессии решить задачу:
Предсказать стоимость телефона по всем признакам.
Оценить, насколько хорошо она подходит для решения сформулированной задачи.
### Данные:
> Датасет о характеристиках мобильных телефонов и их ценах
>
> Ссылка на датасет в kaggle: [Mobile Phone Specifications and Prices](https://www.kaggle.com/datasets/pratikgarai/mobile-phone-specifications-and-prices/data)
### Модели:
> - Гребневая регрессия (Ridge)
## Запуск программы
Для запуска программы необходимо запустить файл main.py
## Используемые технологии
> **Язык программирования:** python
>
> **Библиотеки:**
> - `pandas` - предоставляет функциональность для обработки и анализа набора данных.
> - `sklearn` - предоставляет широкий спектр инструментов для машинного обучения, статистики и анализа данных.
## Описание работы программы
### Описание набора данных
Данный набор содержит характеристики различных телефонов, в том числе их цену.
Названия столбцов набора данных и их описание:
- **Id** - идентификатор строки (int)
- **Name** - наименование телефона (string)
- **Brand** - наименование бренда телефона (string)
- **Model** - модель телефона (string)
- **Battery capacity (mAh)** - емкость аккумулятора в мАч (int)
- **Screen size (inches)** - размер экрана в дюймах по противоположным углам (float)
- **Touchscreen** - имеет телефон сенсорный экран или нет (string - Yes/No)
- **Resolution x** - разрешение телефона по ширине экрана (int)
- **Resolution y** - разрешение телефона по высоте экрана (int)
- **Processor** - количество ядер процессора (int)
- **RAM (MB)** - доступная оперативная память телефона в МБ (int)
- **Internal storage (GB)** - внутренняя память телефона в ГБ (float)
- **Rear camera** - разрешение задней камеры в МП (0, если недоступно) (float)
- **Front camera** - разрешение фронтальной камеры в МП (0, если недоступно) (float)
- **Operating system** - ОС, используемая в телефоне (string)
- **Wi-Fi** - имеет ли телефон функция Wi-Fi (string - Yes/No)
- **Bluetooth** - имеет ли телефон функцию Bluetooth (string - Yes/No)
- **GPS** - имеет ли телефон функцию GPS (string - Yes/No)
- **Number of SIMs** - количество слотов для SIM-карт в телефоне (int)
- **3G** - имеет ли телефон сетевую функкцию 3G (string - Yes/No)
- **4G/ LTE** - имеет ли телефон сетевую функкцию 4G/LTE (string - Yes/No)
- **Price** - цена телефона в индийских рупиях (int)
Первоначально данные обрабатываются: все строковые значения признаков необходимо привести к численным.
Функция train_test_split делит данные так, что тестовая выборка составляет 1% от исходного набора данных.
Разделение происходит случайным образом (т.е. элементы берутся из исходной выборки не последовательно).
После чего для выполняются следующие действия:
1. Создание модели гребневой регрессии.
2. Обучение модели на исходных данных.
3. Предсказание модели на тестовых данных.
4. Оценка качества модели:
- Коэффициент детерминации: метрика, которая измеряет, насколько хорошо модель соответствует данным.
Принимает значения от 0 до 1, где 1 означает идеальное соответствие модели данным,
а значения ближе к 0 указывают на то, что модель плохо объясняет вариацию в данных.
Для вычисления коэффициента детерминации модели используется метод score библиотеки scikit-learn.
После чего строится график, отображающий результаты работы модели.
Зелёные точки - ожидаемая цена.
Красные точки - цена, предсказанная моделью.
## Тесты
### Оценка качества предсказания:
![Оценка качества предсказания](console.png)
### График. Сравнение ожидаемых и фактических результатов предсказания цены телефона:
![Сравнение ожидаемых и фактических результатов предсказания цены телефона](plot.png)
**Вывод:** исходя из полученных результатов, коэффициент детерминации составляет около 83%,
что говорит о том, что модель выше среднего соответствует данным.
На графике видно примерно такую же точность предсказаний.