91 lines
6.9 KiB
Markdown
91 lines
6.9 KiB
Markdown
|
# Лабораторная работа №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)
|
|||
|
из прошлой л/р, то по расстоянию между ожидаемыми и фактическими точками (точность предсказания) можно заметить,
|
|||
|
что нейронная сеть справляется с этой задачей лучше, т.к. имеет больше пар точек, расстояние между которыми меньше.
|