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

8.1 KiB
Raw Blame History

Лабораторная работа №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

Оценка значимости признаков для предсказания переменной "in_spotify_playlists"

Вывод

На основе выходных данных можно сделать следующий вывод о работе модели:

Наиболее важными признаками для предсказания переменной "in_spotify_playlists" оказались «streams», «in_apple_playlists», «in_deezer_playlists», «bpm».