TIl modo più semplice per comprendere le relazioni tra le caratteristiche dei dati è visualizzarli. Nel caso delle caratteristiche numeriche, questo di solito significa produrre un grafico a dispersione.
Ciò va bene se il numero di punti è piccolo, ma per set di dati di grandi dimensioni appare il problema della sovrapposizione delle osservazioni. Questo può essere parzialmente mitigato per set di dati di medie dimensioni rendendo i punti semitrasparenti, ma per set di dati molto grandi anche questo non aiuta.
Cosa fare allora? Ti mostrerò un approccio alternativo utilizzando il disponibile al pubblico Set di dati Spotify da Kaggle.
Il set di dati contiene funzionalità audio di 114000 tracce Spotify, come ballabilità, tempo, durata, parlabilità,… Come esempio per questo post, esaminerò la relazione tra ballabilità e tutte le altre funzionalità.
Per prima cosa importiamo il set di dati e riordiniamolo un po’.
#load the required packages
library(dplyr)
library(tidyr)
library(ggplot2)
library(ggthemes)
library(readr)
library(stringr)#load and tidy the data
spotify <- readr::read_csv('spotify_songs.csv') %>%
select(-1) %>%
mutate(duration_min = duration_ms/60000,
track_genre = as.factor(track_genre)) %>%
mutate(across(c(2:4, 20), toupper)) %>%
relocate(duration_min, .before = duration_ms) %>%
select(-duration_ms)
Come accennato in precedenza, il modo più semplice per visualizzare le relazioni tra due variabili è disegnare grafici a dispersione in cui ciascun punto rappresenta una singola canzone. Le prime quattro colonne contengono informazioni sull’ID della traccia, quindi le ho tralasciate. Ho anche rinominato le caratteristiche in modo che la prima lettera sia maiuscola e quindi ho rimodellato i dati per prepararli per il tracciamento.
spotify %>%
select(5:19) %>%
mutate(across(everything(), as.numeric)) %>%
rename_with(str_to_title) %>% #capitalize first letters of feature names
rename("Duration (min)" = Duration_min,
"Loudness (dB)" = Loudness,
"Time Signature" = Time_signature) %>%
pivot_longer(-Danceability, names_to = "parameter", values_to = "value") %>%
ggplot(aes(value, Danceability)) +…
Fonte: towardsdatascience.com