.. | ||
console.png | ||
main.py | ||
mobiles.csv | ||
plot.png | ||
README.md |
Лабораторная работа №5
ПИбд-42 Машкова Маргарита (Вариант 19)
Задание
C помощью гребневой регрессии решить задачу: Предсказать стоимость телефона по всем признакам. Оценить, насколько хорошо она подходит для решения сформулированной задачи.
Данные:
Датасет о характеристиках мобильных телефонов и их ценах
Ссылка на датасет в kaggle: Mobile Phone Specifications and Prices
Модели:
- Гребневая регрессия (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% от исходного набора данных. Разделение происходит случайным образом (т.е. элементы берутся из исходной выборки не последовательно). После чего для выполняются следующие действия:
- Создание модели гребневой регрессии.
- Обучение модели на исходных данных.
- Предсказание модели на тестовых данных.
- Оценка качества модели:
- Коэффициент детерминации: метрика, которая измеряет, насколько хорошо модель соответствует данным. Принимает значения от 0 до 1, где 1 означает идеальное соответствие модели данным, а значения ближе к 0 указывают на то, что модель плохо объясняет вариацию в данных. Для вычисления коэффициента детерминации модели используется метод score библиотеки scikit-learn.
После чего строится график, отображающий результаты работы модели. Зелёные точки - ожидаемая цена. Красные точки - цена, предсказанная моделью.
Тесты
Оценка качества предсказания:
График. Сравнение ожидаемых и фактических результатов предсказания цены телефона:
Вывод: исходя из полученных результатов, коэффициент детерминации составляет около 83%, что говорит о том, что модель выше среднего соответствует данным. На графике видно примерно такую же точность предсказаний.