Dokumen ini berisi analisis dan pemodelan klasifikasi menggunakan Artificial Neural Network (ANN) pada dataset Spotify.
## Pertemuan 13: ANN
# Library
library(readr)
library(nnet)
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.5.3
# Dataset
datasetspotify <- read_delim(
"datasetspotify.csv",
delim = ";",
col_types = cols(.default = col_character()),
show_col_types = FALSE,
name_repair = "minimal"
)
# Melihat dataset
# View(datasetspotify) # dinonaktifkan agar proses knit berjalan
# Menampilkan 6 baris pertama
head(datasetspotify)
## # A tibble: 6 × 38
## `` track_id artists album_name track_name popularity duration_ms explicit
## <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
## 1 0 5SuOikwiR… Gen Ho… Comedy Comedy 73 230666 FALSE
## 2 1 4qPNDBW1i… Ben Wo… Ghost (Ac… Ghost - A… 55 149610 FALSE
## 3 2 1iJBSr7s7… Ingrid… <NA> <NA> <NA> <NA> <NA>
## 4 3 6lfxq3CG4… Kina G… Crazy Ric… Can't Hel… 71 201933 FALSE
## 5 4 5vjLSffim… Chord … Hold On Hold On 82 198853 FALSE
## 6 5 01MVOl9Kt… Tyrone… Days I Wi… Days I Wi… 58 214240 FALSE
## # ℹ 30 more variables: danceability <chr>, energy <chr>, key <chr>,
## # loudness <chr>, mode <chr>, speechiness <chr>, acousticness <chr>,
## # instrumentalness <chr>, liveness <chr>, valence <chr>, tempo <chr>,
## # time_signature <chr>, track_genre <chr>, `` <chr>, `` <chr>, `` <chr>,
## # `` <chr>, `` <chr>, `` <chr>, `` <chr>, `` <chr>, `` <chr>, `` <chr>,
## # `` <chr>, `` <chr>, `` <chr>, `` <chr>, `` <chr>, `` <chr>, `` <chr>
# Melihat dimensi dataset
dim(datasetspotify)
## [1] 114000 38
# Melihat struktur dataset
str(datasetspotify)
## spc_tbl_ [114,000 × 38] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
## $ : chr [1:114000] "0" "1" "2" "3" ...
## $ track_id : chr [1:114000] "5SuOikwiRyPMVoIQDJUgSV" "4qPNDBW1i3p13qLCt0Ki3A" "1iJBSr7s7jYXzM8EGcbK5b" "6lfxq3CG4xtTiEg7opyCyx" ...
## $ artists : chr [1:114000] "Gen Hoshino" "Ben Woodward" "Ingrid Michaelson" "Kina Grannis" ...
## $ album_name : chr [1:114000] "Comedy" "Ghost (Acoustic)" NA "Crazy Rich Asians (Original Motion Picture Soundtrack)" ...
## $ track_name : chr [1:114000] "Comedy" "Ghost - Acoustic" NA "Can't Help Falling In Love" ...
## $ popularity : chr [1:114000] "73" "55" NA "71" ...
## $ duration_ms : chr [1:114000] "230666" "149610" NA "201933" ...
## $ explicit : chr [1:114000] "FALSE" "FALSE" NA "FALSE" ...
## $ danceability : chr [1:114000] "0.676" "0.42" NA "0.266" ...
## $ energy : chr [1:114000] "0.461" "0.166" NA "0.0596" ...
## $ key : chr [1:114000] "1" "1" NA "0" ...
## $ loudness : chr [1:114000] "-6.746" "-17.235" NA "-18.515" ...
## $ mode : chr [1:114000] "0" "1" NA "1" ...
## $ speechiness : chr [1:114000] "0.143" "0.0763" NA "0.0363" ...
## $ acousticness : chr [1:114000] "0.0322" "0.924" NA "0.905" ...
## $ instrumentalness: chr [1:114000] "1.01e-06" "5.56e-06" NA "7.07e-05" ...
## $ liveness : chr [1:114000] "0.358" "0.101" NA "0.132" ...
## $ valence : chr [1:114000] "0.715" "0.267" NA "0.143" ...
## $ tempo : chr [1:114000] "87.917" "77.489" NA "181.74" ...
## $ time_signature : chr [1:114000] "4" "4" NA "3" ...
## $ track_genre : chr [1:114000] "acoustic" "acoustic" NA "acoustic" ...
## $ : chr [1:114000] NA NA NA NA ...
## $ : chr [1:114000] NA NA NA NA ...
## $ : chr [1:114000] NA NA NA NA ...
## $ : chr [1:114000] NA NA NA NA ...
## $ : chr [1:114000] NA NA NA NA ...
## $ : chr [1:114000] NA NA NA NA ...
## $ : chr [1:114000] NA NA NA NA ...
## $ : chr [1:114000] NA NA NA NA ...
## $ : chr [1:114000] NA NA NA NA ...
## $ : chr [1:114000] NA NA NA NA ...
## $ : chr [1:114000] NA NA NA NA ...
## $ : chr [1:114000] NA NA NA NA ...
## $ : chr [1:114000] NA NA NA NA ...
## $ : chr [1:114000] NA NA NA NA ...
## $ : chr [1:114000] NA NA NA NA ...
## $ : chr [1:114000] NA NA NA NA ...
## $ : chr [1:114000] NA NA NA NA ...
## - attr(*, "spec")=
## .. cols(
## .. .default = col_character(),
## .. col_character(),
## .. track_id = col_character(),
## .. artists = col_character(),
## .. album_name = col_character(),
## .. track_name = col_character(),
## .. popularity = col_character(),
## .. duration_ms = col_character(),
## .. explicit = col_character(),
## .. danceability = col_character(),
## .. energy = col_character(),
## .. key = col_character(),
## .. loudness = col_character(),
## .. mode = col_character(),
## .. speechiness = col_character(),
## .. acousticness = col_character(),
## .. instrumentalness = col_character(),
## .. liveness = col_character(),
## .. valence = col_character(),
## .. tempo = col_character(),
## .. time_signature = col_character(),
## .. track_genre = col_character(),
## .. col_character(),
## .. col_character(),
## .. col_character(),
## .. col_character(),
## .. col_character(),
## .. col_character(),
## .. col_character(),
## .. col_character(),
## .. col_character(),
## .. col_character(),
## .. col_character(),
## .. col_character(),
## .. col_character(),
## .. col_character(),
## .. col_character(),
## .. col_character(),
## .. col_character()
## .. )
## - attr(*, "problems")=<externalptr>
# Memilih variabel
datasetspotify <- datasetspotify[, c(
"track_genre",
"popularity",
"danceability",
"energy",
"valence"
)]
# Membersihkan nama variabel
names(datasetspotify) <- c(
"track_genre",
"popularity",
"danceability",
"energy",
"valence"
)
# Mengubah variabel menjadi numerik
datasetspotify[, -1] <- lapply(
datasetspotify[, -1],
function(x) suppressWarnings(
as.numeric(gsub(",", ".", trimws(x)))
)
)
# Menghapus missing value
datasetspotify <- na.omit(datasetspotify)
# Menghapus nilai Inf dan NaN
datasetspotify <- datasetspotify[
apply(
datasetspotify[, -1],
1,
function(x) all(is.finite(x))
),
]
# Menghapus genre kosong
datasetspotify <- datasetspotify[
!is.na(datasetspotify$track_genre) &
trimws(datasetspotify$track_genre) != "",
]
# Mengubah track_genre menjadi factor
datasetspotify$track_genre <- factor(
trimws(datasetspotify$track_genre)
)
# Melihat dataset setelah pembersihan
# View(datasetspotify) # dinonaktifkan agar proses knit berjalan
# Melihat jumlah data setelah pembersihan
dim(datasetspotify)
## [1] 83849 5
# Melihat struktur dataset
str(datasetspotify)
## tibble [83,849 × 5] (S3: tbl_df/tbl/data.frame)
## $ track_genre : Factor w/ 114 levels "acoustic","afrobeat",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ popularity : num [1:83849] 73 55 71 82 58 80 56 74 69 52 ...
## $ danceability: num [1:83849] 0.676 0.42 0.266 0.618 0.688 0.703 0.442 0.627 0.483 0.489 ...
## $ energy : num [1:83849] 0.461 0.166 0.0596 0.443 0.481 0.444 0.632 0.363 0.303 0.314 ...
## $ valence : num [1:83849] 0.715 0.267 0.143 0.167 0.666 0.712 0.196 0.301 0.139 0.607 ...
## - attr(*, "na.action")= 'omit' Named int [1:30151] 3 7 9 15 17 18 19 20 22 23 ...
## ..- attr(*, "names")= chr [1:30151] "3" "7" "9" "15" ...
# Variabel
y <- datasetspotify$track_genre
x1 <- datasetspotify$popularity
x2 <- datasetspotify$danceability
x3 <- datasetspotify$energy
x4 <- datasetspotify$valence
# Exploratory Data (ED)
summary(datasetspotify)
## track_genre popularity danceability energy
## grindcore : 994 Min. : 0.00 Min. :0.0000 Min. :0.0000201
## black-metal: 986 1st Qu.:18.00 1st Qu.:0.4430 1st Qu.:0.4640000
## j-idol : 985 Median :34.00 Median :0.5630 Median :0.6800000
## death-metal: 982 Mean :33.07 Mean :0.5535 Mean :0.6420704
## power-pop : 981 3rd Qu.:49.00 3rd Qu.:0.6780 3rd Qu.:0.8640000
## study : 968 Max. :98.00 Max. :0.9850 Max. :1.0000000
## (Other) :77953
## valence
## Min. :0.0000
## 1st Qu.:0.2650
## Median :0.4700
## Mean :0.4802
## 3rd Qu.:0.6900
## Max. :0.9950
##
# Fungsi Plot X
getplotx <- function(data, color = "black", n_sample = 1000){
set.seed(123)
index_sample <- sample(
seq_along(data),
size = min(n_sample, length(data)),
replace = FALSE
)
d <- data.frame(
x = index_sample,
y = data[index_sample]
)
p <- ggplot(d, aes(x = x, y = y)) +
geom_point(color = color, alpha = 0.6) +
labs(x = "index", y = "data") +
theme_minimal()
return(p)
}
# Plot X
getplotx(x1, color = "#17D5D3")
getplotx(x2, color = "#17D5D3")
getplotx(x3, color = "#17D5D3")
getplotx(x4, color = "#17D5D3")
# Fungsi Plot XY
getplotxy <- function(datax, datay, n_sample = 1000){
set.seed(123)
genre_top <- names(
sort(table(datay), decreasing = TRUE)
)[1:min(10, length(unique(datay)))]
index_genre <- which(datay %in% genre_top)
index_sample <- sample(
index_genre,
size = min(n_sample, length(index_genre)),
replace = FALSE
)
d <- data.frame(
x = datax[index_sample],
y = datay[index_sample]
)
p <- ggplot(d, aes(x = x, y = y, color = y)) +
geom_jitter(
height = 0.15,
alpha = 0.4,
width = 0
) +
labs(
x = "data x",
y = "track_genre"
) +
theme_minimal() +
theme(
axis.text.y = element_text(size = 8)
) +
guides(color = "none")
return(p)
}
# Plot XY
getplotxy(x1, y)
getplotxy(x2, y)
getplotxy(x3, y)
getplotxy(x4, y)
## Pengambilan sampel data
set.seed(123)
# Maksimal 200 data per genre
jumlah_sampel <- 200
# Mengambil sampel berdasarkan genre
dataset_sampel <- do.call(
rbind,
lapply(
split(datasetspotify, datasetspotify$track_genre),
function(data){
data[
sample(
nrow(data),
min(jumlah_sampel, nrow(data)),
replace = FALSE
),
]
}
)
)
# Mengatur ulang baris dataset
dataset_sampel <- dataset_sampel[
sample(nrow(dataset_sampel)),
]
# Mengubah genre menjadi factor
dataset_sampel$track_genre <- factor(
dataset_sampel$track_genre
)
# Melihat dataset sampel
dim(dataset_sampel)
## [1] 22777 5
## Split data (80% training)
set.seed(123)
# Split berdasarkan genre
index_train <- unlist(
lapply(
split(
seq_len(nrow(dataset_sampel)),
dataset_sampel$track_genre
),
function(index){
sample(
index,
size = floor(length(index)*0.8),
replace = FALSE
)
}
)
)
# Data training
dtrain <- dataset_sampel[index_train, ]
# Data testing
dtest <- dataset_sampel[-index_train, ]
# Menyamakan level factor
dtrain$track_genre <- factor(
dtrain$track_genre,
levels = levels(dataset_sampel$track_genre)
)
dtest$track_genre <- factor(
dtest$track_genre,
levels = levels(dataset_sampel$track_genre)
)
# Info data
message("Info:")
## Info:
message("data sampel: ", nrow(dataset_sampel))
## data sampel: 22777
message("data training: ", nrow(dtrain))
## data training: 18221
message("data testing: ", nrow(dtest))
## data testing: 4556
## Standardisasi prediktor
# Parameter standardisasi dari data training
mean_x <- sapply(dtrain[, -1], mean)
sd_x <- sapply(dtrain[, -1], sd)
# Menghindari pembagian dengan nol
sd_x[sd_x == 0] <- 1
# Standardisasi data training
dtrain[, -1] <- scale(
dtrain[, -1],
center = mean_x,
scale = sd_x
)
# Standardisasi data testing
dtest[, -1] <- scale(
dtest[, -1],
center = mean_x,
scale = sd_x
)
## Pemodelan Klasifikasi ANN
set.size <- c(2,3,5)
set.maxit <- c(100)
set.macc <- matrix(
nrow = length(set.size)*length(set.maxit),
ncol = 3
)
colnames(set.macc) <- c(
"size",
"maxit",
"akurasi"
)
tmp <- 0
for (i in 1:length(set.size)) {
for (j in 1:length(set.maxit)) {
tmp <- tmp + 1
model_ANN <- nnet(
track_genre ~ .,
data = dtrain,
size = set.size[i],
maxit = set.maxit[j],
trace = F,
MaxNWts = 100000
)
pred_y <- predict(
model_ANN,
newdata = dtest,
type = "class"
)
mc.tmp <- table(
Prediksi = pred_y,
Aktual = dtest$track_genre
)
ac.tmp <- sum(diag(mc.tmp))/sum(mc.tmp)
message(
'==> [',round(tmp/nrow(set.macc)*100,1),'%] size: ',
set.size[i],
' maxit: ', set.maxit[j],
' akurasi: ', round(ac.tmp,4)
)
set.macc[tmp,] <- c(
set.size[i],
set.maxit[j],
ac.tmp
)
}
}
## ==> [33.3%] size: 2 maxit: 100 akurasi: 0.0119
## ==> [66.7%] size: 3 maxit: 100 akurasi: 0.0169
## ==> [100%] size: 5 maxit: 100 akurasi: 0.0083
# Hasil akurasi
set.macc
## size maxit akurasi
## [1,] 2 100 0.01185250
## [2,] 3 100 0.01690079
## [3,] 5 100 0.00834065
# Model terbaik
hasil.terbaik <- set.macc[
which.max(set.macc[,3]),
]
hasil.terbaik
## size maxit akurasi
## 3.00000000 100.00000000 0.01690079
message("Model terbaik:")
## Model terbaik:
message("Size: ", hasil.terbaik[1])
## Size: 3
message("Maxit: ", hasil.terbaik[2])
## Maxit: 100
message("Akurasi: ", round(hasil.terbaik[3],4))
## Akurasi: 0.0169
message("Akurasi (%): ", round(hasil.terbaik[3]*100,2), "%")
## Akurasi (%): 1.69%
## Model Final
model_final <- nnet(
track_genre ~ .,
data = dtrain,
size = hasil.terbaik[1],
maxit = hasil.terbaik[2],
trace = F,
MaxNWts = 100000
)
# Prediksi model final
pred_y <- predict(
model_final,
newdata = dtest,
type = "class"
)
# Confusion Matrix
mc.tmp <- table(
Prediksi = pred_y,
Aktual = dtest$track_genre
)
mc.tmp
## Aktual
## Prediksi acoustic afrobeat alt-rock alternative ambient anime
## ambient 6 0 0 1 20 2
## anime 0 0 0 0 0 0
## black-metal 0 0 0 2 0 0
## bluegrass 0 0 0 0 0 0
## breakbeat 0 0 0 0 0 0
## cantopop 0 0 0 0 1 0
## chicago-house 0 9 2 3 0 0
## children 2 0 0 0 0 0
## chill 9 0 2 1 0 5
## classical 4 1 0 0 4 5
## comedy 1 0 0 0 0 0
## dance 0 0 0 0 0 0
## death-metal 0 0 0 0 0 1
## deep-house 0 0 0 0 0 1
## detroit-techno 0 5 0 4 0 0
## disney 1 1 0 0 0 0
## drum-and-bass 0 0 2 1 0 0
## electronic 0 0 0 0 0 0
## emo 0 0 0 0 0 1
## forro 2 1 7 1 1 2
## gospel 0 0 0 0 0 0
## grindcore 0 0 1 2 0 0
## grunge 0 0 1 1 0 0
## happy 1 2 2 5 0 0
## hard-rock 0 0 0 0 0 0
## hardcore 0 0 0 0 0 0
## heavy-metal 0 0 2 0 0 0
## hip-hop 0 0 0 0 0 0
## honky-tonk 1 2 0 1 0 0
## house 0 1 0 0 0 0
## idm 0 0 0 1 0 0
## indian 3 0 1 0 5 1
## industrial 0 0 0 0 0 1
## iranian 0 0 2 1 0 0
## j-idol 0 0 0 0 0 0
## jazz 0 0 0 0 0 0
## kids 0 0 0 0 0 0
## latin 0 0 0 0 0 0
## latino 0 1 0 0 0 0
## mandopop 0 0 0 0 0 0
## metalcore 0 0 1 1 0 8
## mpb 0 0 0 0 0 0
## new-age 1 0 0 0 0 0
## opera 0 0 0 0 1 0
## pagode 0 0 2 2 0 1
## party 1 11 7 5 0 0
## pop-film 0 0 0 0 0 0
## power-pop 0 0 0 1 0 0
## progressive-house 0 2 2 2 0 3
## reggaeton 0 1 0 0 0 0
## rock-n-roll 1 0 0 0 0 0
## romance 2 1 3 1 1 0
## sad 0 0 0 0 0 0
## samba 0 0 0 0 0 0
## show-tunes 1 0 0 0 0 0
## ska 0 0 0 0 0 0
## sleep 0 0 1 0 6 0
## study 0 0 0 0 0 0
## tango 2 2 0 1 1 0
## trance 2 0 2 3 0 9
## trip-hop 0 0 0 0 0 0
## world-music 0 0 0 0 0 0
## Aktual
## Prediksi black-metal bluegrass blues brazil breakbeat british
## ambient 0 1 1 5 0 7
## anime 0 0 0 0 0 0
## black-metal 4 0 0 0 0 0
## bluegrass 0 1 0 0 0 0
## breakbeat 0 0 0 0 0 0
## cantopop 0 0 0 0 0 0
## chicago-house 0 1 4 1 3 1
## children 0 0 0 0 0 2
## chill 0 3 1 2 0 5
## classical 0 0 4 2 0 3
## comedy 0 0 0 0 1 1
## dance 0 0 0 0 0 0
## death-metal 0 0 0 0 0 0
## deep-house 0 0 0 0 0 0
## detroit-techno 0 2 2 0 7 0
## disney 0 1 0 0 0 0
## drum-and-bass 4 0 1 0 1 0
## electronic 0 0 0 0 0 0
## emo 0 0 0 0 0 0
## forro 0 0 4 5 0 1
## gospel 0 0 0 1 0 0
## grindcore 17 0 0 0 0 0
## grunge 0 0 0 1 0 0
## happy 0 3 0 0 7 0
## hard-rock 0 0 0 0 0 0
## hardcore 0 0 0 0 0 0
## heavy-metal 3 0 0 0 0 0
## hip-hop 0 0 0 0 0 0
## honky-tonk 0 5 0 0 0 0
## house 0 0 0 0 0 0
## idm 0 0 0 0 0 0
## indian 0 0 1 3 0 1
## industrial 0 0 0 0 0 1
## iranian 3 0 0 0 0 1
## j-idol 0 0 0 0 0 0
## jazz 0 0 0 0 0 0
## kids 0 0 0 0 0 0
## latin 0 0 0 0 0 0
## latino 0 0 1 3 0 0
## mandopop 0 0 0 0 0 0
## metalcore 6 0 4 4 0 0
## mpb 0 0 0 0 0 0
## new-age 0 1 0 0 0 0
## opera 2 2 0 0 0 0
## pagode 0 0 3 6 1 3
## party 0 3 3 2 16 2
## pop-film 0 0 0 0 0 0
## power-pop 0 0 0 0 0 0
## progressive-house 0 0 1 0 1 3
## reggaeton 0 0 1 0 0 0
## rock-n-roll 0 0 0 0 0 0
## romance 0 9 1 1 1 4
## sad 0 0 0 0 1 1
## samba 0 0 0 0 0 0
## show-tunes 0 0 0 0 0 0
## ska 0 0 0 0 0 0
## sleep 1 0 2 1 0 2
## study 0 0 0 0 0 0
## tango 0 8 4 0 0 0
## trance 0 0 2 3 1 2
## trip-hop 0 0 0 0 0 0
## world-music 0 0 0 0 0 0
## Aktual
## Prediksi cantopop chicago-house children chill classical club comedy
## ambient 1 0 1 2 9 1 0
## anime 0 0 0 0 0 0 0
## black-metal 0 0 0 0 0 0 0
## bluegrass 0 0 0 0 0 0 0
## breakbeat 0 0 0 0 0 0 0
## cantopop 0 0 0 0 2 0 0
## chicago-house 1 19 3 0 0 1 0
## children 0 0 5 1 0 0 1
## chill 0 0 4 9 1 3 0
## classical 6 0 0 5 5 0 0
## comedy 0 0 1 0 0 0 0
## dance 0 0 0 0 0 0 0
## death-metal 0 0 0 0 0 1 3
## deep-house 1 0 0 0 0 0 0
## detroit-techno 0 7 1 0 0 2 1
## disney 0 0 1 0 1 0 1
## drum-and-bass 0 0 0 0 0 0 8
## electronic 0 0 0 0 0 0 0
## emo 0 0 0 0 0 0 0
## forro 2 1 3 5 0 8 2
## gospel 0 0 0 0 0 0 0
## grindcore 0 0 0 0 0 0 0
## grunge 0 0 0 0 0 0 0
## happy 2 2 0 0 0 0 8
## hard-rock 0 0 0 0 0 0 0
## hardcore 0 0 0 0 0 0 0
## heavy-metal 0 0 0 0 0 0 1
## hip-hop 0 0 0 0 0 0 0
## honky-tonk 1 1 3 0 1 0 1
## house 1 1 1 0 0 0 0
## idm 1 0 0 0 0 0 2
## indian 7 0 1 5 1 0 0
## industrial 0 0 0 0 1 0 0
## iranian 0 0 0 0 1 1 0
## j-idol 0 0 0 0 0 0 0
## jazz 0 0 0 0 0 0 0
## kids 0 1 3 0 0 0 0
## latin 0 0 0 0 0 0 0
## latino 0 1 8 2 0 0 0
## mandopop 0 0 0 0 0 0 0
## metalcore 2 0 0 1 0 4 0
## mpb 0 0 0 0 0 0 0
## new-age 2 0 0 0 2 0 0
## opera 0 0 0 0 0 0 0
## pagode 2 0 0 3 0 3 0
## party 1 5 0 0 0 0 5
## pop-film 0 0 0 0 0 0 0
## power-pop 0 0 0 0 0 0 1
## progressive-house 1 0 1 2 0 4 0
## reggaeton 0 0 2 0 0 1 0
## rock-n-roll 0 0 1 0 4 0 0
## romance 5 0 0 0 5 2 2
## sad 0 0 0 1 0 0 0
## samba 0 0 0 0 0 0 0
## show-tunes 0 0 1 0 1 0 0
## ska 0 0 0 0 0 0 0
## sleep 0 0 0 0 1 1 0
## study 0 0 0 0 0 0 0
## tango 3 2 0 3 0 0 4
## trance 1 0 0 1 1 8 0
## trip-hop 0 0 0 0 0 0 0
## world-music 0 0 0 0 0 0 0
## Aktual
## Prediksi country dance dancehall death-metal deep-house
## ambient 3 1 0 1 0
## anime 0 0 0 0 0
## black-metal 0 0 0 11 0
## bluegrass 0 0 0 0 0
## breakbeat 0 0 1 0 0
## cantopop 0 0 0 0 0
## chicago-house 1 14 9 0 3
## children 0 0 1 0 1
## chill 2 2 0 0 2
## classical 1 0 0 0 0
## comedy 0 0 0 0 0
## dance 0 0 0 0 0
## death-metal 0 0 0 5 0
## deep-house 0 0 1 0 0
## detroit-techno 1 0 1 0 1
## disney 0 0 0 0 1
## drum-and-bass 0 0 1 2 0
## electronic 0 0 0 0 0
## emo 0 0 0 0 0
## forro 3 6 8 0 9
## gospel 0 0 0 0 0
## grindcore 0 0 0 5 0
## grunge 0 0 0 0 0
## happy 4 2 1 1 0
## hard-rock 0 0 0 0 0
## hardcore 0 0 0 0 0
## heavy-metal 0 0 0 3 0
## hip-hop 0 0 0 0 0
## honky-tonk 1 0 2 0 0
## house 0 0 0 0 0
## idm 0 0 0 0 0
## indian 1 2 1 0 0
## industrial 0 0 0 0 0
## iranian 0 0 0 0 0
## j-idol 0 0 0 0 0
## jazz 0 0 0 0 0
## kids 0 0 0 0 0
## latin 0 0 1 0 0
## latino 0 0 4 0 0
## mandopop 0 0 0 0 0
## metalcore 1 2 0 11 1
## mpb 0 0 0 0 0
## new-age 0 0 0 0 0
## opera 0 0 0 0 0
## pagode 1 2 1 0 5
## party 4 4 4 0 3
## pop-film 0 0 0 0 0
## power-pop 0 0 0 0 0
## progressive-house 2 2 1 0 5
## reggaeton 0 0 2 0 0
## rock-n-roll 0 0 0 0 0
## romance 7 1 1 0 0
## sad 0 0 0 0 1
## samba 0 0 0 0 0
## show-tunes 0 0 0 0 0
## ska 1 0 0 0 0
## sleep 0 0 0 1 0
## study 0 0 0 0 0
## tango 5 1 0 0 0
## trance 2 1 0 0 8
## trip-hop 0 0 0 0 0
## world-music 0 0 0 0 0
## Aktual
## Prediksi detroit-techno disco disney drum-and-bass dub dubstep edm
## ambient 0 1 3 0 2 0 0
## anime 0 0 0 0 0 0 0
## black-metal 0 0 0 2 0 0 0
## bluegrass 0 0 1 0 0 0 0
## breakbeat 0 0 0 0 0 0 0
## cantopop 0 0 0 0 0 0 0
## chicago-house 16 5 0 0 7 0 3
## children 0 3 0 0 1 0 0
## chill 0 0 1 0 0 1 2
## classical 0 1 0 0 1 2 0
## comedy 0 0 0 0 0 0 0
## dance 0 0 0 0 0 0 0
## death-metal 0 0 0 0 0 1 0
## deep-house 0 2 0 0 1 0 0
## detroit-techno 5 1 0 0 0 0 5
## disney 0 0 0 0 0 0 0
## drum-and-bass 0 0 0 5 1 0 1
## electronic 0 0 0 0 0 0 0
## emo 0 0 0 0 0 0 0
## forro 2 4 0 0 3 2 3
## gospel 0 0 0 0 0 0 0
## grindcore 0 0 0 4 0 1 0
## grunge 0 0 0 0 0 1 0
## happy 3 0 0 10 0 0 3
## hard-rock 0 0 0 0 0 0 0
## hardcore 0 1 0 0 0 0 0
## heavy-metal 0 0 0 3 0 0 0
## hip-hop 0 1 0 0 0 0 0
## honky-tonk 0 0 1 0 2 0 0
## house 0 1 0 0 0 0 0
## idm 0 0 0 0 0 0 0
## indian 0 0 1 0 1 1 0
## industrial 0 1 0 0 0 0 0
## iranian 0 1 3 0 0 0 0
## j-idol 0 1 0 0 0 0 0
## jazz 0 0 0 0 0 0 0
## kids 0 0 0 0 2 0 0
## latin 0 1 0 0 1 0 0
## latino 0 2 0 0 3 0 0
## mandopop 0 0 0 0 0 0 0
## metalcore 0 0 0 7 5 11 1
## mpb 0 0 0 0 0 0 0
## new-age 0 0 0 0 0 0 0
## opera 0 0 2 0 0 0 0
## pagode 0 0 0 0 3 4 4
## party 11 4 1 8 2 1 8
## pop-film 0 0 0 0 0 0 0
## power-pop 0 0 0 0 0 0 0
## progressive-house 0 1 0 1 1 5 8
## reggaeton 0 5 0 0 0 0 0
## rock-n-roll 0 1 0 0 0 0 0
## romance 1 1 16 0 0 0 0
## sad 0 0 0 0 0 0 0
## samba 0 0 0 0 0 0 0
## show-tunes 0 0 0 0 0 0 0
## ska 0 0 0 0 0 0 0
## sleep 0 0 2 0 0 4 0
## study 0 0 0 0 0 0 0
## tango 1 1 9 0 2 0 0
## trance 1 1 0 0 2 6 2
## trip-hop 0 0 0 0 0 0 0
## world-music 0 0 0 0 0 0 0
## Aktual
## Prediksi electro electronic emo folk forro french funk garage german
## ambient 1 2 1 7 0 1 0 3 1
## anime 0 0 0 0 0 0 0 0 0
## black-metal 0 0 0 0 0 0 1 1 1
## bluegrass 0 0 0 0 0 0 0 0 0
## breakbeat 0 0 0 0 0 0 0 0 0
## cantopop 0 0 0 0 0 0 0 0 0
## chicago-house 3 1 2 1 0 0 5 1 1
## children 1 0 0 0 1 2 0 1 0
## chill 4 1 3 2 1 2 2 5 3
## classical 0 0 2 6 0 1 1 3 0
## comedy 1 0 0 0 0 0 0 0 0
## dance 0 0 0 0 0 0 0 0 0
## death-metal 0 0 0 0 0 0 0 3 0
## deep-house 0 1 2 1 0 1 0 0 0
## detroit-techno 0 2 0 2 0 1 0 0 1
## disney 0 0 0 0 0 0 0 0 0
## drum-and-bass 2 0 0 0 0 0 1 4 1
## electronic 0 0 0 0 0 0 0 0 0
## emo 1 0 0 0 0 0 0 1 0
## forro 4 12 5 2 15 3 10 2 2
## gospel 0 0 0 0 0 0 0 0 0
## grindcore 0 0 1 0 0 0 0 0 0
## grunge 0 1 0 0 0 0 0 0 0
## happy 0 1 3 0 0 1 0 0 0
## hard-rock 0 0 0 0 0 0 0 0 0
## hardcore 0 0 0 0 0 0 0 1 0
## heavy-metal 0 0 0 0 0 0 0 0 0
## hip-hop 0 0 0 1 0 1 0 0 0
## honky-tonk 1 0 0 0 0 0 0 0 0
## house 0 0 0 0 0 0 0 0 0
## idm 0 0 0 0 0 0 0 0 0
## indian 0 0 0 1 0 0 1 1 1
## industrial 0 0 0 0 0 0 0 0 0
## iranian 0 0 0 0 0 1 0 0 0
## j-idol 0 0 0 0 0 0 0 0 0
## jazz 0 0 0 0 0 0 0 0 0
## kids 0 0 0 0 0 0 1 0 0
## latin 0 0 0 0 0 0 0 0 0
## latino 0 2 2 1 8 1 6 0 2
## mandopop 0 0 0 0 0 0 0 0 0
## metalcore 0 0 4 1 1 0 2 4 4
## mpb 0 0 0 0 0 0 0 0 0
## new-age 0 0 0 0 0 0 0 0 0
## opera 0 0 0 0 0 0 0 1 1
## pagode 3 5 1 1 4 4 0 0 6
## party 9 0 2 2 0 0 1 2 7
## pop-film 0 0 0 0 0 1 0 0 0
## power-pop 0 0 0 0 0 0 0 0 0
## progressive-house 1 7 5 2 7 5 0 1 5
## reggaeton 0 1 0 0 0 9 0 0 0
## rock-n-roll 0 0 0 1 0 3 0 0 0
## romance 2 0 0 3 0 1 5 1 0
## sad 0 1 0 0 1 0 0 0 1
## samba 0 0 0 0 0 0 0 0 0
## show-tunes 0 0 0 0 0 0 0 0 0
## ska 0 1 0 0 0 0 0 0 0
## sleep 0 0 0 1 0 1 0 2 2
## study 0 0 0 0 0 1 0 0 0
## tango 5 0 0 4 0 0 4 0 0
## trance 2 2 7 1 2 0 0 3 1
## trip-hop 0 0 0 0 0 0 0 0 0
## world-music 0 0 0 0 0 0 0 0 0
## Aktual
## Prediksi gospel goth grindcore groove grunge guitar happy hard-rock
## ambient 12 3 0 1 5 0 0 1
## anime 0 0 0 0 0 0 0 0
## black-metal 0 4 2 0 2 0 2 1
## bluegrass 0 0 0 0 0 0 0 0
## breakbeat 0 0 0 0 0 0 0 0
## cantopop 0 0 0 0 0 0 0 0
## chicago-house 0 0 0 0 0 1 0 0
## children 0 0 0 1 0 1 0 1
## chill 2 0 0 0 0 6 0 1
## classical 6 2 0 2 1 2 0 1
## comedy 0 0 0 0 0 0 0 1
## dance 0 0 0 0 0 0 0 0
## death-metal 0 2 0 2 2 0 4 2
## deep-house 0 0 0 0 0 0 0 1
## detroit-techno 0 1 0 2 0 2 1 0
## disney 0 0 0 2 0 1 0 0
## drum-and-bass 0 1 2 3 2 1 11 0
## electronic 0 0 0 0 0 0 0 0
## emo 1 0 0 0 0 0 0 0
## forro 0 0 0 5 0 0 0 3
## gospel 1 0 0 0 0 0 0 0
## grindcore 0 2 33 1 0 0 0 0
## grunge 1 2 0 0 1 0 0 1
## happy 0 4 0 0 1 1 6 1
## hard-rock 0 0 0 0 0 0 0 0
## hardcore 0 0 0 0 0 0 0 0
## heavy-metal 0 2 2 0 0 0 2 0
## hip-hop 0 0 0 0 0 0 0 0
## honky-tonk 0 0 0 0 0 1 0 0
## house 0 0 0 0 0 1 0 0
## idm 0 0 0 0 0 0 0 0
## indian 3 0 0 0 0 3 0 0
## industrial 0 0 0 1 0 0 0 0
## iranian 0 1 0 0 0 0 0 0
## j-idol 0 0 0 0 0 0 0 0
## jazz 0 0 0 0 0 0 0 0
## kids 0 0 0 0 0 1 0 0
## latin 0 0 0 0 0 0 0 0
## latino 0 0 0 0 0 0 0 0
## mandopop 0 0 0 0 0 0 0 0
## metalcore 4 3 0 6 16 1 0 6
## mpb 0 0 0 0 0 0 0 0
## new-age 0 0 0 2 0 0 0 0
## opera 0 2 1 0 0 3 1 0
## pagode 2 0 0 2 0 0 0 0
## party 0 3 0 4 0 3 9 5
## pop-film 0 0 0 0 0 0 0 0
## power-pop 0 0 0 0 0 0 0 0
## progressive-house 3 1 0 2 3 0 1 6
## reggaeton 0 0 0 0 0 0 0 0
## rock-n-roll 0 1 0 0 0 0 1 0
## romance 0 0 0 1 0 2 0 0
## sad 0 1 0 0 0 0 0 0
## samba 0 0 0 0 0 0 0 0
## show-tunes 0 0 0 1 0 0 0 0
## ska 0 0 0 0 0 0 0 0
## sleep 1 0 0 1 2 1 0 3
## study 0 0 0 0 0 0 0 0
## tango 0 2 0 0 0 9 0 1
## trance 3 3 0 1 5 0 2 5
## trip-hop 0 0 0 0 0 0 0 0
## world-music 1 0 0 0 0 0 0 0
## Aktual
## Prediksi hardcore hardstyle heavy-metal hip-hop honky-tonk house idm
## ambient 1 0 0 2 0 0 0
## anime 0 0 0 0 0 0 0
## black-metal 0 3 6 0 0 0 0
## bluegrass 0 0 0 0 0 0 0
## breakbeat 1 0 0 0 0 0 0
## cantopop 0 0 0 0 0 0 0
## chicago-house 3 0 0 17 3 9 5
## children 1 0 0 0 0 0 0
## chill 0 0 0 1 1 0 0
## classical 2 0 0 0 0 0 3
## comedy 0 0 0 0 0 0 0
## dance 1 0 0 0 0 0 0
## death-metal 6 1 3 0 0 0 0
## deep-house 0 0 0 0 0 0 0
## detroit-techno 0 0 0 0 3 4 0
## disney 0 0 0 0 0 0 0
## drum-and-bass 2 7 9 0 0 1 1
## electronic 0 0 0 0 0 0 0
## emo 0 0 0 0 0 0 0
## forro 7 0 0 10 0 10 1
## gospel 0 0 0 0 0 0 0
## grindcore 1 0 3 0 0 0 0
## grunge 0 1 0 0 0 0 0
## happy 0 11 4 0 0 4 3
## hard-rock 0 0 0 0 0 0 0
## hardcore 0 0 0 0 0 0 0
## heavy-metal 0 3 3 0 0 0 0
## hip-hop 0 0 0 0 0 0 0
## honky-tonk 0 0 0 0 2 0 1
## house 1 0 1 0 0 0 0
## idm 0 0 0 0 0 0 0
## indian 0 0 0 1 0 0 0
## industrial 0 0 0 0 0 0 0
## iranian 0 0 0 0 0 0 5
## j-idol 0 0 0 0 0 0 0
## jazz 0 0 0 0 0 0 0
## kids 0 0 0 1 0 0 0
## latin 0 1 0 0 0 0 0
## latino 0 0 0 0 0 0 1
## mandopop 0 0 0 0 0 0 0
## metalcore 4 3 4 0 0 2 1
## mpb 0 0 0 0 0 0 0
## new-age 0 0 0 0 0 0 0
## opera 0 0 1 0 0 0 0
## pagode 0 0 0 3 0 3 1
## party 1 9 2 0 3 2 4
## pop-film 0 0 0 0 0 0 0
## power-pop 0 0 0 0 0 0 0
## progressive-house 1 0 0 0 0 1 1
## reggaeton 0 0 0 0 0 0 0
## rock-n-roll 0 0 0 0 0 0 0
## romance 0 1 1 1 6 0 9
## sad 0 0 0 1 0 0 0
## samba 0 0 0 0 0 0 0
## show-tunes 0 0 0 0 0 0 0
## ska 1 0 0 0 0 0 0
## sleep 0 0 1 0 0 0 0
## study 0 0 0 0 0 0 0
## tango 1 0 0 2 22 0 3
## trance 6 0 2 1 0 4 1
## trip-hop 0 0 0 0 0 0 0
## world-music 0 0 0 0 0 0 0
## Aktual
## Prediksi indian indie indie-pop industrial iranian j-dance j-idol
## ambient 7 3 1 0 0 0 0
## anime 0 0 0 0 0 0 0
## black-metal 0 0 0 3 3 2 2
## bluegrass 0 0 0 0 0 1 0
## breakbeat 0 0 0 0 0 0 0
## cantopop 0 0 0 0 0 0 0
## chicago-house 0 1 2 0 0 8 1
## children 2 3 0 0 0 0 0
## chill 10 3 5 0 0 0 0
## classical 2 1 2 0 0 0 0
## comedy 0 0 0 0 0 0 0
## dance 0 0 0 0 0 0 0
## death-metal 0 0 0 1 0 0 1
## deep-house 0 0 0 0 0 0 0
## detroit-techno 0 1 2 1 0 5 1
## disney 0 0 0 0 0 0 0
## drum-and-bass 0 0 0 1 1 1 3
## electronic 0 0 0 0 0 0 0
## emo 0 0 0 0 0 0 0
## forro 4 4 4 0 0 5 1
## gospel 0 1 0 0 0 0 0
## grindcore 0 1 0 1 4 0 1
## grunge 0 0 2 1 0 0 0
## happy 0 0 2 7 7 1 12
## hard-rock 0 0 0 0 0 0 0
## hardcore 0 0 0 2 0 0 0
## heavy-metal 0 0 0 2 1 0 2
## hip-hop 0 0 0 0 0 0 0
## honky-tonk 0 0 1 1 0 0 0
## house 0 0 0 0 0 0 0
## idm 0 0 0 0 0 0 0
## indian 5 1 2 0 0 0 0
## industrial 0 0 0 0 0 0 0
## iranian 0 0 0 0 14 0 0
## j-idol 0 0 0 0 0 0 0
## jazz 0 0 0 0 0 0 0
## kids 0 0 0 0 0 0 0
## latin 0 0 0 0 0 0 0
## latino 0 1 1 0 0 1 0
## mandopop 0 0 0 0 0 0 0
## metalcore 1 2 0 3 0 0 0
## mpb 0 0 0 0 0 0 0
## new-age 0 0 0 0 0 0 0
## opera 0 0 0 2 1 0 0
## pagode 4 0 5 2 0 2 0
## party 1 4 0 9 3 7 14
## pop-film 0 0 1 0 0 0 0
## power-pop 0 0 0 0 0 0 0
## progressive-house 3 1 2 0 0 0 1
## reggaeton 0 0 0 0 0 1 0
## rock-n-roll 0 0 0 0 0 0 0
## romance 0 7 3 0 5 0 1
## sad 1 0 0 0 0 0 0
## samba 0 1 0 0 0 0 0
## show-tunes 0 0 0 0 0 0 0
## ska 0 0 0 0 0 0 0
## sleep 0 0 2 0 1 0 0
## study 0 0 0 0 0 0 0
## tango 0 4 3 0 0 4 0
## trance 0 1 0 4 0 2 0
## trip-hop 0 0 0 0 0 0 0
## world-music 0 0 0 0 0 0 0
## Aktual
## Prediksi j-pop j-rock jazz k-pop kids latin latino malay mandopop
## ambient 1 1 3 3 0 0 0 1 3
## anime 0 0 0 0 0 0 0 0 0
## black-metal 0 0 0 0 0 0 0 0 0
## bluegrass 0 0 0 0 0 0 0 1 0
## breakbeat 0 0 0 0 0 0 0 0 0
## cantopop 0 0 0 0 0 0 0 1 0
## chicago-house 2 0 1 1 22 17 20 5 0
## children 1 0 2 0 1 0 1 0 0
## chill 2 0 2 6 1 0 0 2 1
## classical 0 3 0 0 0 0 0 1 7
## comedy 0 0 0 0 0 0 0 0 0
## dance 0 0 0 0 0 0 0 0 0
## death-metal 0 0 0 0 0 0 0 0 0
## deep-house 1 2 0 0 0 0 0 2 0
## detroit-techno 0 0 0 0 2 1 1 2 0
## disney 0 0 0 0 0 0 0 1 0
## drum-and-bass 2 0 0 0 0 0 0 0 0
## electronic 0 0 0 0 0 0 0 0 0
## emo 0 0 0 0 0 0 0 0 0
## forro 3 2 1 13 0 2 7 0 4
## gospel 0 0 0 0 0 0 0 0 1
## grindcore 0 0 0 0 0 0 0 0 0
## grunge 1 2 0 1 0 0 0 0 0
## happy 0 1 0 0 0 4 0 0 1
## hard-rock 0 0 0 0 0 0 0 0 0
## hardcore 0 0 0 0 0 0 0 0 0
## heavy-metal 0 0 0 0 0 0 0 1 0
## hip-hop 0 0 0 0 0 0 0 0 0
## honky-tonk 0 0 0 0 1 0 0 0 1
## house 0 0 0 0 0 0 0 0 0
## idm 0 0 0 0 0 0 0 0 1
## indian 0 0 2 3 0 0 0 1 8
## industrial 0 0 0 0 0 0 0 0 0
## iranian 0 0 0 0 0 0 0 0 0
## j-idol 0 0 0 0 0 0 0 0 0
## jazz 0 0 0 0 0 0 0 0 0
## kids 0 0 0 0 2 1 1 0 0
## latin 0 0 0 0 0 0 0 3 0
## latino 1 0 0 0 3 0 2 1 0
## mandopop 0 0 0 0 0 0 0 0 0
## metalcore 0 9 0 0 0 0 0 0 1
## mpb 0 0 0 1 0 0 0 0 0
## new-age 0 0 0 0 0 0 0 1 0
## opera 0 0 0 0 0 0 0 0 0
## pagode 6 3 1 4 0 0 4 1 2
## party 0 0 2 1 1 10 3 3 1
## pop-film 0 0 0 0 0 0 0 0 0
## power-pop 0 0 0 0 0 0 0 0 0
## progressive-house 4 9 0 5 0 0 0 0 2
## reggaeton 0 1 0 0 1 0 0 2 0
## rock-n-roll 0 0 0 0 0 0 0 0 1
## romance 5 0 11 0 3 3 0 4 3
## sad 0 0 0 0 0 0 1 0 1
## samba 0 0 0 0 0 0 0 0 0
## show-tunes 0 0 0 0 0 0 0 0 0
## ska 0 1 0 0 0 0 0 0 0
## sleep 1 0 0 0 0 0 0 0 0
## study 0 0 0 0 0 0 0 0 0
## tango 0 0 15 0 3 1 0 7 1
## trance 10 6 0 2 0 1 0 0 1
## trip-hop 0 0 0 0 0 0 0 0 0
## world-music 0 0 0 0 0 0 0 0 0
## Aktual
## Prediksi metal metalcore minimal-techno mpb new-age opera pagode
## ambient 4 0 1 4 6 4 5
## anime 0 0 0 0 0 0 0
## black-metal 1 3 0 0 0 3 0
## bluegrass 0 0 0 0 0 0 0
## breakbeat 0 0 0 0 0 0 0
## cantopop 0 0 0 0 0 0 0
## chicago-house 0 0 4 0 1 0 0
## children 0 0 1 2 0 0 1
## chill 0 0 1 2 0 1 4
## classical 0 0 0 7 1 1 2
## comedy 0 0 0 0 0 0 0
## dance 0 0 0 0 0 0 0
## death-metal 1 5 0 0 0 1 0
## deep-house 0 0 0 0 0 0 0
## detroit-techno 0 0 1 0 0 0 0
## disney 0 0 0 0 1 0 0
## drum-and-bass 4 0 1 0 0 1 0
## electronic 0 0 0 0 0 0 0
## emo 0 0 0 0 0 0 1
## forro 0 0 8 7 1 0 12
## gospel 0 0 0 0 0 0 0
## grindcore 2 1 0 0 0 1 0
## grunge 1 1 0 0 0 0 0
## happy 1 0 1 0 0 0 0
## hard-rock 0 0 0 0 0 0 0
## hardcore 0 0 0 0 0 0 0
## heavy-metal 0 3 0 0 0 1 0
## hip-hop 0 0 0 0 0 0 0
## honky-tonk 0 0 2 0 0 0 0
## house 0 0 0 0 0 0 0
## idm 0 0 0 0 0 0 0
## indian 0 0 1 3 1 0 5
## industrial 0 0 0 0 0 0 0
## iranian 1 0 1 0 1 6 0
## j-idol 0 0 0 0 0 0 0
## jazz 0 0 0 0 0 0 0
## kids 0 0 0 0 0 0 0
## latin 0 0 0 0 0 0 0
## latino 0 0 1 0 0 0 0
## mandopop 0 0 0 0 0 0 0
## metalcore 14 20 0 1 1 1 0
## mpb 0 0 0 0 0 0 0
## new-age 0 0 0 0 0 0 0
## opera 0 0 0 0 8 5 0
## pagode 0 0 3 4 1 0 1
## party 3 0 7 2 0 1 0
## pop-film 0 0 0 0 0 0 0
## power-pop 0 0 0 0 0 0 0
## progressive-house 4 2 5 4 0 0 5
## reggaeton 0 0 0 0 0 0 0
## rock-n-roll 0 0 0 0 0 0 0
## romance 0 0 0 1 13 10 0
## sad 0 0 1 1 0 0 2
## samba 0 0 0 0 0 0 0
## show-tunes 0 0 0 0 0 0 0
## ska 0 0 0 0 0 0 0
## sleep 0 2 0 0 4 3 0
## study 0 0 0 0 0 0 0
## tango 0 0 0 0 0 0 0
## trance 4 3 1 2 1 1 2
## trip-hop 0 0 0 0 0 0 0
## world-music 0 0 0 0 0 0 0
## Aktual
## Prediksi party piano pop pop-film power-pop progressive-house
## ambient 0 10 2 4 1 1
## anime 0 0 0 0 0 0
## black-metal 0 0 0 0 1 0
## bluegrass 0 0 0 0 0 0
## breakbeat 0 0 0 0 0 0
## cantopop 0 0 0 0 0 0
## chicago-house 7 2 4 1 1 0
## children 0 0 0 0 0 0
## chill 1 2 1 8 0 0
## classical 0 7 1 3 0 0
## comedy 0 0 0 0 0 0
## dance 0 0 0 0 0 0
## death-metal 0 0 0 0 1 1
## deep-house 1 0 0 0 0 0
## detroit-techno 8 0 7 0 1 0
## disney 0 0 0 0 0 0
## drum-and-bass 1 0 0 1 2 1
## electronic 0 0 0 0 0 0
## emo 0 0 0 1 0 1
## forro 2 0 5 6 0 5
## gospel 0 0 0 1 0 0
## grindcore 0 0 0 0 2 1
## grunge 0 0 0 0 1 1
## happy 0 0 0 0 9 0
## hard-rock 0 0 0 0 0 0
## hardcore 2 0 0 0 0 0
## heavy-metal 0 0 0 0 0 0
## hip-hop 0 0 0 0 0 0
## honky-tonk 0 1 0 0 0 0
## house 1 0 0 0 0 0
## idm 0 0 0 0 0 0
## indian 0 6 1 2 0 0
## industrial 0 0 0 0 0 0
## iranian 0 2 0 0 0 0
## j-idol 0 0 0 0 0 0
## jazz 0 0 0 0 0 0
## kids 0 0 0 0 0 0
## latin 1 0 0 0 1 0
## latino 1 0 0 0 0 0
## mandopop 0 0 0 0 0 0
## metalcore 0 2 1 0 3 5
## mpb 0 0 0 0 0 0
## new-age 0 1 0 0 0 0
## opera 0 0 0 0 4 0
## pagode 0 3 1 3 0 6
## party 12 1 1 0 6 1
## pop-film 0 0 0 0 0 0
## power-pop 0 0 0 0 0 0
## progressive-house 0 0 4 4 0 6
## reggaeton 1 0 0 0 0 0
## rock-n-roll 0 0 0 0 0 0
## romance 0 3 6 2 1 0
## sad 0 0 0 1 0 1
## samba 0 0 0 0 0 0
## show-tunes 0 0 0 0 0 0
## ska 0 0 0 0 0 0
## sleep 0 0 0 2 0 0
## study 0 0 0 0 0 0
## tango 0 0 2 0 3 0
## trance 2 0 4 1 3 10
## trip-hop 0 0 0 0 0 0
## world-music 0 0 0 0 0 0
## Aktual
## Prediksi psych-rock punk punk-rock r-n-b reggae reggaeton rock
## ambient 7 1 0 0 1 0 0
## anime 0 0 0 1 1 0 0
## black-metal 0 0 1 0 0 0 1
## bluegrass 0 0 0 0 0 0 0
## breakbeat 0 0 0 0 0 0 0
## cantopop 0 0 0 0 0 0 0
## chicago-house 1 0 1 1 14 19 3
## children 2 0 0 2 1 0 0
## chill 7 0 0 3 1 0 1
## classical 3 1 2 2 0 0 0
## comedy 0 0 0 0 0 0 0
## dance 0 0 0 0 0 0 0
## death-metal 0 0 0 0 0 0 0
## deep-house 0 0 2 0 0 0 0
## detroit-techno 0 2 0 2 1 3 1
## disney 0 0 0 1 0 0 0
## drum-and-bass 1 0 0 0 0 0 1
## electronic 0 0 0 0 0 0 0
## emo 0 0 0 0 0 0 0
## forro 1 5 3 6 12 13 1
## gospel 0 1 0 0 0 0 1
## grindcore 0 1 1 0 0 0 0
## grunge 0 3 1 0 0 0 0
## happy 0 6 2 0 0 0 6
## hard-rock 0 0 0 0 0 0 0
## hardcore 0 0 0 0 0 0 0
## heavy-metal 1 0 0 0 0 0 1
## hip-hop 0 0 0 0 0 0 0
## honky-tonk 1 0 0 0 0 0 0
## house 0 0 0 0 0 0 0
## idm 0 0 0 0 0 0 0
## indian 4 2 0 1 0 0 0
## industrial 0 0 0 0 0 0 0
## iranian 0 0 0 0 0 0 3
## j-idol 0 0 0 0 0 0 0
## jazz 0 0 0 0 0 0 0
## kids 1 0 0 0 0 0 0
## latin 0 0 0 0 0 0 0
## latino 1 0 2 3 1 1 0
## mandopop 0 0 0 0 0 0 0
## metalcore 0 3 10 1 0 0 3
## mpb 0 0 0 0 0 0 0
## new-age 1 0 0 0 0 0 0
## opera 1 0 0 0 0 0 0
## pagode 1 1 1 5 0 3 3
## party 0 3 3 1 6 0 5
## pop-film 0 0 0 0 0 0 0
## power-pop 0 0 0 0 0 0 1
## progressive-house 2 4 5 0 1 1 1
## reggaeton 0 0 0 0 0 0 0
## rock-n-roll 1 0 0 0 0 0 0
## romance 0 0 0 4 0 0 5
## sad 0 0 0 1 0 0 0
## samba 0 0 0 0 0 0 0
## show-tunes 1 0 0 0 0 0 0
## ska 0 0 0 0 0 0 0
## sleep 0 1 0 0 0 0 0
## study 0 0 0 0 0 0 0
## tango 3 0 0 3 1 0 2
## trance 0 6 6 3 0 0 1
## trip-hop 0 0 0 0 0 0 0
## world-music 0 0 0 0 0 0 0
## Aktual
## Prediksi rock-n-roll rockabilly romance sad salsa samba sertanejo
## ambient 3 1 1 4 0 3 2
## anime 0 0 0 0 0 0 0
## black-metal 0 1 0 0 0 0 0
## bluegrass 0 0 0 0 0 0 0
## breakbeat 0 0 0 0 0 0 0
## cantopop 0 0 0 0 1 0 0
## chicago-house 1 5 0 0 11 0 0
## children 2 1 0 4 0 6 0
## chill 7 4 0 8 1 4 2
## classical 1 2 0 0 0 3 2
## comedy 0 0 0 0 0 0 0
## dance 0 0 0 1 0 0 0
## death-metal 0 0 0 0 0 0 0
## deep-house 1 0 0 0 1 3 0
## detroit-techno 2 6 0 0 3 0 0
## disney 4 1 0 0 1 0 0
## drum-and-bass 0 1 1 0 0 0 0
## electronic 0 0 0 0 0 0 0
## emo 0 0 0 0 0 2 0
## forro 1 2 0 11 1 7 16
## gospel 0 0 0 0 0 0 0
## grindcore 0 0 0 0 0 0 0
## grunge 0 0 0 0 0 1 0
## happy 0 0 0 0 0 1 0
## hard-rock 0 0 0 0 0 0 0
## hardcore 1 0 0 0 1 0 0
## heavy-metal 0 0 0 0 0 0 0
## hip-hop 0 0 0 0 1 0 0
## honky-tonk 9 1 0 1 2 0 0
## house 0 0 0 0 1 0 0
## idm 0 0 0 0 0 0 0
## indian 2 0 0 2 0 1 1
## industrial 0 0 0 0 0 0 0
## iranian 0 0 0 0 0 0 0
## j-idol 0 0 0 0 0 0 0
## jazz 0 0 0 0 0 0 0
## kids 0 0 1 0 0 0 0
## latin 1 0 0 0 2 0 0
## latino 0 0 0 1 0 1 0
## mandopop 0 0 0 0 0 0 0
## metalcore 0 1 0 1 0 0 2
## mpb 0 0 0 0 0 0 0
## new-age 0 0 0 0 0 0 0
## opera 0 1 1 0 0 0 0
## pagode 2 1 0 1 0 0 7
## party 0 6 1 0 6 0 0
## pop-film 0 0 0 1 0 0 0
## power-pop 0 0 0 0 0 0 0
## progressive-house 0 1 0 3 0 5 5
## reggaeton 0 1 0 0 7 0 0
## rock-n-roll 2 0 0 0 0 0 0
## romance 0 0 24 1 0 0 0
## sad 0 0 0 0 0 0 0
## samba 0 0 0 0 0 0 0
## show-tunes 0 0 0 0 0 0 0
## ska 0 0 0 0 0 0 0
## sleep 0 0 0 0 0 0 0
## study 0 0 0 0 0 0 0
## tango 1 4 11 0 1 0 0
## trance 0 0 0 1 0 3 3
## trip-hop 0 0 0 0 0 0 0
## world-music 0 0 0 0 0 0 0
## Aktual
## Prediksi show-tunes singer-songwriter ska sleep songwriter soul
## ambient 5 4 1 5 3 0
## anime 0 0 0 0 0 0
## black-metal 0 0 0 1 0 0
## bluegrass 0 0 0 0 1 0
## breakbeat 0 0 0 0 0 0
## cantopop 0 0 0 0 0 0
## chicago-house 0 1 2 0 2 7
## children 1 3 3 0 1 0
## chill 1 10 2 0 4 0
## classical 2 3 0 0 6 1
## comedy 0 0 0 0 0 0
## dance 0 0 0 0 0 0
## death-metal 0 0 0 0 0 0
## deep-house 0 0 7 0 1 0
## detroit-techno 0 0 0 0 1 0
## disney 1 0 0 0 0 0
## drum-and-bass 1 0 0 0 0 0
## electronic 0 0 0 0 0 0
## emo 0 0 0 0 0 0
## forro 0 2 3 0 1 4
## gospel 0 0 0 0 0 0
## grindcore 0 0 0 0 0 0
## grunge 0 0 0 0 0 0
## happy 1 1 1 0 1 0
## hard-rock 0 0 0 0 0 0
## hardcore 0 0 0 0 0 0
## heavy-metal 0 0 0 0 0 0
## hip-hop 0 0 1 0 0 0
## honky-tonk 1 1 1 0 2 0
## house 0 0 0 0 0 0
## idm 0 0 0 0 0 0
## indian 1 2 0 0 6 1
## industrial 0 0 0 0 0 0
## iranian 1 2 0 3 1 1
## j-idol 0 0 0 0 0 0
## jazz 0 0 0 0 0 0
## kids 0 0 0 0 1 0
## latin 0 0 0 0 0 0
## latino 0 1 4 0 0 0
## mandopop 0 0 1 0 0 0
## metalcore 0 0 2 0 0 0
## mpb 0 0 0 0 0 0
## new-age 1 0 0 0 0 0
## opera 7 0 0 0 0 0
## pagode 0 0 3 0 1 0
## party 2 0 1 0 1 7
## pop-film 0 0 0 0 0 0
## power-pop 0 0 0 0 0 0
## progressive-house 0 1 2 0 1 1
## reggaeton 0 0 2 0 0 0
## rock-n-roll 0 0 0 0 0 0
## romance 9 5 0 0 3 10
## sad 0 0 0 0 0 0
## samba 0 0 0 0 0 0
## show-tunes 0 0 0 0 0 0
## ska 0 0 1 0 0 0
## sleep 2 1 1 31 0 0
## study 0 0 0 0 0 0
## tango 4 3 0 0 2 6
## trance 0 0 2 0 1 2
## trip-hop 0 0 0 0 0 0
## world-music 0 0 0 0 0 0
## Aktual
## Prediksi spanish study swedish synth-pop tango techno trance
## ambient 1 0 3 0 1 0 2
## anime 0 0 0 0 0 0 0
## black-metal 0 0 0 1 0 0 0
## bluegrass 0 1 0 0 0 0 0
## breakbeat 0 0 0 0 0 0 0
## cantopop 2 0 0 0 1 0 0
## chicago-house 3 4 0 1 1 3 0
## children 0 7 3 1 0 0 1
## chill 3 7 4 2 0 1 0
## classical 3 1 4 0 0 0 0
## comedy 0 0 0 0 0 0 0
## dance 0 0 0 0 0 0 0
## death-metal 1 0 0 2 0 0 2
## deep-house 0 0 4 0 0 1 1
## detroit-techno 2 0 0 2 2 1 1
## disney 2 0 1 0 2 0 0
## drum-and-bass 0 0 0 0 0 0 1
## electronic 0 1 0 0 0 0 0
## emo 0 0 0 0 0 0 0
## forro 2 1 6 6 0 12 3
## gospel 0 0 0 0 0 0 0
## grindcore 0 0 0 0 0 0 0
## grunge 0 0 0 0 0 0 0
## happy 0 0 1 2 1 2 1
## hard-rock 1 0 0 0 0 0 0
## hardcore 2 0 0 0 0 0 0
## heavy-metal 0 0 0 0 0 0 0
## hip-hop 0 0 0 0 0 0 0
## honky-tonk 1 4 0 0 1 0 0
## house 0 0 0 0 0 0 0
## idm 0 0 0 0 0 0 0
## indian 0 0 1 0 0 2 0
## industrial 0 0 0 0 0 0 0
## iranian 0 0 0 1 0 0 0
## j-idol 0 0 0 0 0 0 0
## jazz 0 0 0 1 0 0 0
## kids 0 1 0 1 0 0 0
## latin 1 0 0 0 0 1 0
## latino 0 0 2 0 0 1 1
## mandopop 0 0 0 0 0 0 0
## metalcore 2 0 1 0 0 2 7
## mpb 0 0 0 0 0 0 0
## new-age 0 0 0 1 1 0 0
## opera 1 0 0 1 1 0 0
## pagode 2 0 2 3 0 5 4
## party 4 3 0 6 0 0 1
## pop-film 0 0 0 0 0 0 0
## power-pop 0 0 0 0 0 0 0
## progressive-house 0 0 4 3 0 3 9
## reggaeton 1 0 0 0 0 1 0
## rock-n-roll 2 3 0 0 0 0 0
## romance 1 0 2 2 15 0 0
## sad 0 0 0 0 0 0 0
## samba 0 0 0 0 0 0 0
## show-tunes 0 0 0 0 0 0 0
## ska 0 0 0 1 0 0 0
## sleep 1 0 0 0 0 0 0
## study 0 0 0 0 0 0 0
## tango 0 7 1 1 14 0 0
## trance 1 0 1 2 0 5 6
## trip-hop 1 0 0 0 0 0 0
## world-music 0 0 0 0 0 0 0
## Aktual
## Prediksi trip-hop turkish world-music
## ambient 0 5 10
## anime 0 0 0
## black-metal 0 0 1
## bluegrass 0 0 0
## breakbeat 0 0 0
## cantopop 0 0 0
## chicago-house 8 1 0
## children 0 0 0
## chill 1 4 0
## classical 0 2 2
## comedy 0 0 0
## dance 0 0 0
## death-metal 0 0 0
## deep-house 0 0 0
## detroit-techno 5 1 0
## disney 1 0 0
## drum-and-bass 1 0 0
## electronic 0 0 0
## emo 0 0 0
## forro 5 9 0
## gospel 0 1 1
## grindcore 0 0 0
## grunge 0 1 0
## happy 1 0 0
## hard-rock 0 0 0
## hardcore 0 0 0
## heavy-metal 0 0 0
## hip-hop 0 0 0
## honky-tonk 0 0 0
## house 0 0 0
## idm 0 0 0
## indian 1 2 1
## industrial 0 0 0
## iranian 0 0 2
## j-idol 0 0 0
## jazz 0 0 0
## kids 0 0 0
## latin 0 0 0
## latino 0 2 0
## mandopop 0 0 0
## metalcore 1 2 7
## mpb 1 0 0
## new-age 0 0 1
## opera 1 0 1
## pagode 2 4 0
## party 4 0 0
## pop-film 0 0 0
## power-pop 0 0 0
## progressive-house 2 2 3
## reggaeton 0 0 0
## rock-n-roll 0 0 0
## romance 4 0 2
## sad 0 0 0
## samba 0 0 0
## show-tunes 0 0 0
## ska 0 0 0
## sleep 0 0 4
## study 0 0 0
## tango 2 0 2
## trance 0 4 3
## trip-hop 0 0 0
## world-music 0 0 0
# Akurasi
ac.tmp <- sum(diag(mc.tmp))/sum(mc.tmp)
message(
'==> Akurasi model final: ',
round(ac.tmp,4)
)
## ==> Akurasi model final: 0.0057
message(
'==> Akurasi model final: ',
round(ac.tmp*100,2),
'%'
)
## ==> Akurasi model final: 0.57%