116 lines
8.4 KiB
Markdown
116 lines
8.4 KiB
Markdown
# Лабораторная работа №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](output.png)
|
||
```text
|
||
Значение метрик ошибки (MAE и MSE) и коэффициент детерминации (Score)
|
||
```
|
||
|
||
### Вывод
|
||
Значение MAE равно 1491.2695835796214, это означает, что в среднем модель ошибается на примерно 1491 единицу при прогнозировании значений целевой переменной. Чем меньше значение MAE, тем более точные предсказания даёт модель.
|
||
|
||
Значение MSE (среднеквадратическая ошибка) равно 7440679.027329878. Оно вычисляется как среднее значение квадратов разницы между предсказанными и наблюдаемыми значениями. Чем меньше значение MSE, тем ближе предсказанные значения к наблюдаемым.
|
||
|
||
Score (оценка модели) равен 0.853940909276013. Это означает, что модель объясняет около 85.39% дисперсии в данных. Чем ближе значение score к 1, тем более точная модель.
|
||
|
||
В целом, значения MSE и score указывают на достаточно низкую точность модели. Возможно, стоит использовать другие алгоритмы или настраивать параметры текущей модели для получения более точных прогнозов. |