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