Wczytanie pakietów

install.packages(c(“readr”, “corrplot”, “factoextra”)) library(readr) library(corrplot) library(factoextra)

#wczytywanie danych spotify_data <- read_csv(“/Users/alege/Desktop/MAGISTERKA/maszynowe/dataset.csv”)

#podgląd danych str(spotify_data) head(spotify_data)

Właściwe cechy audio do analizy PCA:

features <- spotify_data[, c(“danceability”, “energy”, “loudness”, “speechiness”, “acousticness”, “instrumentalness”, “liveness”, “valence”, “tempo”, “duration_ms”)]

Sprawdzenie brakujących wartości i usunięcie, jeśli istnieją (kluczowe dla PCA)

features_na <- na.omit(features)

Skalowanie Danych (Standaryzacja)

To jest KRYTYCZNY krok! Zmienia wartości na średnią 0 i odchylenie standardowe 1.

scaled_features <- scale(features_na)

Podgląd pierwszych wierszy po skalowaniu

head(scaled_features)

Obliczenie macierzy korelacji

M <- cor(scaled_features)

Wizualizacja macierzy korelacji

corrplot(M, method = “circle”, type = “upper”, order = “hclust”, tl.col = “black”, tl.srt = 45, title = “Macierz Korelacji Atrybutów Spotify”)

Wykonanie Analizy Głównych Składowych (PCA)

Parametr ‘center = TRUE’ i ‘scale = TRUE’ są domyślne w ‘prcomp()’

dla skalowania, ale zrobiliśmy to już ręcznie, co jest dobrą praktyką.

Użyjemy skalowanych danych:

spotify_pca <- prcomp(scaled_features, center = TRUE, scale = TRUE)

Podgląd wyników (odchylenia standardowe i wkład cech)

print(spotify_pca)

1. Obliczanie wariancji wyjaśnianej

eigenvalues <- get_eigenvalue(spotify_pca) print(eigenvalues)

2. Wykres osypiska (Scree Plot)

fviz_eig(spotify_pca, addlabels = TRUE, ylim = c(0, 50))

Ładunki (Loadings) – wkład oryginalnych cech w nowe komponenty

Wypisanie ładunków dla pierwszych 4 komponentów (zmieniamy ‘4’ na wybraną liczbę)

pca_loadings <- round(spotify_pca$rotation[, 1:4], 3) print(pca_loadings)

Biplot dla PC1 i PC2

fviz_pca_biplot(spotify_pca, axes = c(1, 2), # Oś 1 i 2 col.var = “black”, # Kolor cech (wektorów) repel = TRUE, title = “Biplot PC1 vs PC2 Atrybutów Spotify”)

fviz_eig(spotify_pca, addlabels = TRUE, ylim = c(0, 50), title = “Wykres Osypiska (Scree Plot) PCA Spotify”)

fviz_pca_biplot(spotify_pca, axes = c(1, 2), # Wyświetl komponenty 1 i 2 col.var = “red”, # Kolor wektorów zmiennych col.ind = “darkblue”, # Kolor punktów obserwacji repel = TRUE, # Zapobiega nakładaniu się etykiet title = “Biplot Atrybutów Spotify (PC1 vs PC2)”)