IIS_2023_1/mashkova_margarita_lab_6/README.md

91 lines
6.9 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.

# Лабораторная работа №6
## ПИбд-42 Машкова Маргарита (Вариант 19)
## Задание
C помощью нейронной сети MLPClassifier решить задачу:
Предсказать стоимость телефона по всем признакам.
Интерпретировать результаты и оценить, насколько хорошо она подходит для решения сформулированной задачи.
### Данные:
> Датасет о характеристиках мобильных телефонов и их ценах
>
> Ссылка на датасет в kaggle: [Mobile Phone Specifications and Prices](https://www.kaggle.com/datasets/pratikgarai/mobile-phone-specifications-and-prices/data)
### Модели:
> - MLPClassifier
## Запуск программы
Для запуска программы необходимо запустить файл 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. Создание модели MLPClassifier.
2. Обучение модели на исходных данных.
3. Предсказание модели на тестовых данных.
4. Оценка качества модели:
- Коэффициент детерминации: метрика, которая измеряет, насколько хорошо модель соответствует данным.
Принимает значения от 0 до 1, где 1 означает идеальное соответствие модели данным, а значения ближе к 0 указывают на то,
что модель плохо объясняет вариацию в данных. Для вычисления коэффициента детерминации модели используется метод score
библиотеки scikit-learn.
После чего строится график, отображающий результаты работы модели.
Зелёные точки - ожидаемая цена.
Красные точки - цена, предсказанная моделью.
## Тесты
### Оценка качества предсказания:
![Оценка качества предсказания](console.png)
### Сравнение ожидаемых и фактических результатов предсказания цены телефона:
#### MLPClassifier:
![Сравнение ожидаемых и фактических результатов предсказания цены телефона (MLPClassifier)](plot_MLPClassifier.png)
#### Ridge:
![Сравнение ожидаемых и фактических результатов предсказания цены телефона (Ridge)](plot_ridge.png)
**Вывод:** исходя из полученных результатов, средняя точность предсказания модели составляет всего 7%.
Тем не менее, если сравнить графики работы моделей нейронной сети MLPClassifier и гребневой регресси (Ridge)
из прошлой л/р, то по расстоянию между ожидаемыми и фактическими точками (точность предсказания) можно заметить,
что нейронная сеть справляется с этой задачей лучше, т.к. имеет больше пар точек, расстояние между которыми меньше.