IIS_2023_1/kozlov_alexey_lab_5
2024-01-12 11:56:56 +04:00
..
lab5.py lab5 2024-01-12 11:56:56 +04:00
output.png lab5 2024-01-12 11:56:56 +04:00
README.md lab5 2024-01-12 11:56:56 +04:00
spotify.csv lab5 2024-01-12 11:56:56 +04:00

Лабораторная работа №5. Регрессия

14 вариант


Задание:

Использовать метод гребневой регрессиии, самостоятельно сформулировав задачу. Интерпретировать результаты и оценить, насколько хорошо он подходит для решения сформулированной вами задачи.

Описание используемого набора данных:

Объектом исследования является набор данных, который размещен на платформе Kaggle (https://www.kaggle.com/datasets/nelgiriyewithana/top-spotify-songs-2023/data). Он представляет собой полный список самых известных песен 2023 года, перечисленных на Spotify. Данный набор представлен в виде файла spotify.csv

Столбцами являются:

  1. track_name Название композиции
  2. artist(s)_name Имя исполнителя/имена исполнителей песни.
  3. artist_count Количество исполнителей, участвовавших в со-здании песни
  4. released_year Год, когда песня была выпущена
  5. released_month Месяц, когда песня была выпущена
  6. released_day День месяца, когда песня была выпущена.
  7. in_spotify_playlists Количество плейлистов Spotify, в которые песня включена
  8. in_spotify_charts Присутствие и рейтинг песни в чартах Spotify.
  9. streams Общее количество прослушиваний в Spotify.
  10. in_apple_playlists Количество плейлистов Apple Music, в которые песня включена.
  11. in_apple_charts Присутствие и рейтинг песни в чартах Apple Music.
  12. in_deezer_playlists Количество плейлистов Deezer, в ко-торые песня включена.
  13. in_deezer_charts Присутствие и рейтинг песни в чартах Deezer
  14. in_shazam_charts Присутствие и рейтинг песни в чартах Shazam.
  15. bpm Количество ударов в минуту, показатель темпа песни.
  16. key Тональность песни.
  17. mode Режим песни (мажорный или минорный).
  18. danceability_% Процент, указывающий, насколько песня подходит для танцев.
  19. valence_% - Позитивность музыкального содержания пес-ни
  20. energy_% - Воспринимаемый уровень энергии песни
  21. acousticness_% - Количество акустического звука в песне
  22. instrumentalness_% - Количество инструментального кон-тента в песне
  23. liveness_% - Наличие элементов живого исполнения
  24. speechiness_% - Количество произнесенных слов в песне

Задачей регрессии на данном наборе данных является прогнозирование значения столбца «in_spotify_playlists» по столбцам «streams», «in_apple_playlists», «in_deezer_playlists» и «bpm».


Запуск

  • Запустить файл lab5.py

Используемые технологии

  • Язык программирования Python
  • Среда разработки PyCharm
  • Библиотеки:
    • sklearn
    • matplotlib
    • numpy
    • pandas

Описание программы

Код программы выполняет следующие действия:

  1. Импортирует необходимые библиотеки: pandas, numpy, Ridge из sklearn.linear_model, mean_absolute_error и mean_squared_error из sklearn.metrics, train_test_split из sklearn.model_selection, StandardScaler из sklearn.preprocessing.

  2. Загружает данные из файла "spotify.csv" в объект DataFrame.

  3. Удаляет строки с пропущенными значениями из DataFrame.

  4. Удаляет столбец 'artist(s)_name' из DataFrame.

  5. Удаляет запятые из значений в столбце 'in_deezer_playlists'.

  6. Приводит столбец 'in_deezer_playlists' к числовому типу данных (int64).

  7. Удаляет запятые из значений в столбце 'in_shazam_charts'.

  8. Приводит столбец 'in_shazam_charts' к числовому типу данных (int64).

  9. Создает словарь соответствия числовых значений и названий трека.

  10. Заменяет значения в столбце 'track_name' на числовые, используя словарь.

  11. Создает словарь соответствия числовых значений и названий тональности.

  12. Заменяет значения в столбце 'key' на числовые, используя словарь.

  13. Создает словарь соответствия числовых значений и режимов песни.

  14. Заменяет значения в столбце 'mode' на числовые, используя словарь.

  15. Создает список regrData содержащий имена столбцов для обучения модели.

  16. Разделяет данные на обучающую и тестовую выборки с помощью функции train_test_split.

  17. Создает объект StandardScaler и выполняет масштабирование данных обучающей и тестовой выборок.

  18. Создает объект Ridge регрессора с параметром alpha=1.0.

  19. Обучает регрессор на масштабированных обучающих данных.

  20. Прогнозирует значения для тестовой выборки.

  21. Вычисляет среднюю абсолютную ошибку (MAE) и среднеквадратичную ошибку (MSE) между фактическими и прогнозируемыми значениями.

  22. Вычисляет коэффициент детерминации модели (Score).

  23. Выводит значения MAE, MSE и Score на экран.


Пример работы

Graphics

Значение метрик ошибки (MAE и MSE) и коэффициент детерминации (Score)

Вывод

Значение MAE равно 1491.2695835796214, это означает, что в среднем модель ошибается на примерно 1491 единицу при прогнозировании значений целевой переменной. Чем меньше значение MAE, тем более точные предсказания даёт модель.

Значение MSE (среднеквадратическая ошибка) равно 7440679.027329878. Оно вычисляется как среднее значение квадратов разницы между предсказанными и наблюдаемыми значениями. Чем меньше значение MSE, тем ближе предсказанные значения к наблюдаемым.

Score (оценка модели) равен 0.853940909276013. Это означает, что модель объясняет около 85.39% дисперсии в данных. Чем ближе значение score к 1, тем более точная модель.

В целом, значения MSE и score указывают на достаточно низкую точность модели. Возможно, стоит использовать другие алгоритмы или настраивать параметры текущей модели для получения более точных прогнозов.