IIS_2023_1/kozlov_alexey_lab_6/README.md
2024-01-12 11:59:16 +04:00

92 lines
8.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Лабораторная работа №6. Нейронная сеть
## 14 вариант
___
### Задание:
Использовать нейронную сеть (четные варианты MLPRegressor, нечетные MLPClassifier) для данных из таблицы 1 по варианту, самостоятельно сформулировав задачу. Интерпретировать результаты и оценить, насколько хорошо она подходит для
решения сформулированной вами задачи.
### Описание используемого набора данных:
Объектом исследования является набор данных, который размещен на платформе 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».
___
### Запуск
- Запустить файл lab6.py
### Используемые технологии
- Язык программирования **Python**
- Среда разработки **PyCharm**
- Библиотеки:
* sklearn
* matplotlib
* numpy
* pandas
### Описание программы
Код программы выполняет следующие действия:
1. Импортирует необходимые библиотеки: pandas, numpy, sklearn.metrics, sklearn.model_selection, sklearn.neural_network и 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' на числовые значения, используя словарь из пункта 9.
11. Создает словарь соответствия числовых значений и названий тональности.
12. Заменяет значения в столбце 'key' на числовые значения, используя словарь из пункта 11.
13. Создает словарь соответствия числовых значений и режимов песни.
14. Заменяет значения в столбце 'mode' на числовые значения, используя словарь из пункта 13.
15. Разделяет данные на обучающую и тестовую выборки, используя train_test_split.
16. Нормализует данные обучающей и тестовой выборок с помощью StandardScaler.
17. Создает и обучает модель MLPRegressor с заданными параметрами (скрытые слои размером (100, 100), функция активации - 'relu', оптимизатор - 'adam').
18. Предсказывает значения на тестовой выборке с помощью обученной модели.
19. Вычисляет оценки качества модели - среднеквадратическую ошибку (MSE) и коэффициент детерминации (R^2 Score).
20. Выводит значения MSE и R^2 Score.
___
### Пример работы
![Graphics](output.png)
```text
Значение метрик среднеквадратической ошибки (MSE) и коэффициента детерминации (R^2 Score)
```
### Вывод
На основе выходных данных можно сделать следующий вывод о работе модели:
1. Значение среднеквадратической ошибки (Mean Squared Error) составляет 7538542.116221244. Это означает, что среднеквадратичное отклонение прогнозов модели от фактических значений составляет примерно 7538542.116221244. Чем меньше это значение, тем ближе прогнозы модели к фактическим значениям.
2. Значение коэффициента детерминации (R^2 Score) составляет 0.8520198757619463. Это означает, что модель объясняет примерно 85.2% дисперсии зависимой переменной (изменчивости в данных). Чем ближе значение коэффициента детерминации к 1, тем лучше модель соответствует данным.
Таким образом, на основе предоставленных данных можно сказать, что модель имеет достаточно низкую среднеквадратическую ошибку и высокий коэффициент детерминации, пожтому MLPRegressor не подходит для сформулированной задачи.