IIS_2023_1/kozlov_alexey_lab_3/README.md
2024-01-12 11:40:23 +04:00

111 lines
8.1 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.

# Лабораторная работа №3. Деревья решений
## 14 вариант
___
### Задание:
Решите с помощью библиотечной реализации дерева решений задачу из лабораторной работы «Веб-сервис «Дерево решений» по предмету «Методы искусственного интеллекта»на 99% ваших данных. Проверьте работу модели на оставшемся проценте, сделайте вывод
### Описание используемого набора данных:
Объектом исследования является набор данных, который размещен на платформе 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
* numpy
* pandas
### Описание программы
Код программы выполняет следующие действия:
1. Импортирует необходимые библиотеки: pandas, numpy, train_test_split из sklearn.model_selection и DecisionTreeClassifier из sklearn.tree.
2. Загружает данные из файла "spotify.csv" в объект DataFrame под названием "data".
3. Удаляет все строки с пропущенными значениями из DataFrame "data".
4. Удаляет столбец "artist(s)_name" из DataFrame "data".
5. Задает список столбцов, которые требуется нормализовать.
6. Проходит по каждому столбцу из списка "columns_to_normalize" и выполнит нормализацию значений в диапазоне от 0 до 1.
7. Удаляет запятые из значений в столбце "in_deezer_playlists".
8. Приводит столбец "in_deezer_playlists" к числовому типу данных (np.int64).
9. Удаляет запятые из значений в столбце "in_shazam_charts".
10. Приводит столбец "in_shazam_charts" к числовому типу данных (np.int64).
11. Создает словарь "track_name_dict" соответствия числовых значений и названий трека.
12. Заменяет значения в столбце "track_name" на числовые значения согласно словарю "track_name_dict".
13. Создает словарь "key_dict" соответствия числовых значений и тональностей.
14. Заменяет значения в столбце "key" на числовые значения согласно словарю "key_dict".
15. Создает словарь "mode_dict" соответствия числовых значений и режимов песни.
16. Заменяет значения в столбце "mode" на числовые значения согласно словарю "mode_dict".
17. Разбивает данные на обучающую и тестовую выборки (X_train, X_test, y_train, y_test) с помощью функции train_test_split.
18. Инициализирует модель DecisionTreeClassifier с параметром random_state=241.
19. Обучает модель на обучающих данных (X_train, y_train) с помощью метода fit.
20. Вычисляет важность каждого признака с помощью атрибута feature_importances_ модели и сохраняет результаты в переменной "importances".
21. Получает список названий столбцов из DataFrame "data" и сохраняет их в переменной "columns".
22. Выводит важность каждого признака по результатам ранжирования в порядке убывания с помощью цикла и функции print. Каждая строка состоит из названия признака и его важности.
Таким образом, данный код выполняет предобработку данных, обучает модель DecisionTreeClassifier и оценивает значимость признаков для предсказания переменной "in_spotify_playlists".
___
### Пример работы
![Graphics](output.png)
```text
Оценка значимости признаков для предсказания переменной "in_spotify_playlists"
```
### Вывод
На основе выходных данных можно сделать следующий вывод о работе модели:
Наиболее важными признаками для предсказания переменной "in_spotify_playlists" оказались «streams», «in_apple_playlists», «in_deezer_playlists», «bpm».