IIS_2023_1/mashkova_margarita_lab_6/README.md

6.9 KiB
Raw Blame History

Лабораторная работа №6

ПИбд-42 Машкова Маргарита (Вариант 19)

Задание

C помощью нейронной сети MLPClassifier решить задачу: Предсказать стоимость телефона по всем признакам. Интерпретировать результаты и оценить, насколько хорошо она подходит для решения сформулированной задачи.

Данные:

Датасет о характеристиках мобильных телефонов и их ценах

Ссылка на датасет в kaggle: Mobile Phone Specifications and Prices

Модели:

  • 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.

После чего строится график, отображающий результаты работы модели. Зелёные точки - ожидаемая цена. Красные точки - цена, предсказанная моделью.

Тесты

Оценка качества предсказания:

Оценка качества предсказания

Сравнение ожидаемых и фактических результатов предсказания цены телефона:

MLPClassifier:

Сравнение ожидаемых и фактических результатов предсказания цены телефона (MLPClassifier)

Ridge:

Сравнение ожидаемых и фактических результатов предсказания цены телефона (Ridge)

Вывод: исходя из полученных результатов, средняя точность предсказания модели составляет всего 7%. Тем не менее, если сравнить графики работы моделей нейронной сети MLPClassifier и гребневой регресси (Ridge) из прошлой л/р, то по расстоянию между ожидаемыми и фактическими точками (точность предсказания) можно заметить, что нейронная сеть справляется с этой задачей лучше, т.к. имеет больше пар точек, расстояние между которыми меньше.