# Predmet: "Analyza zhlukov a klasifikacia dat" # Studijny program: "Pravdepodobnost a matematicka statistika" # Vyucujuci: Radoslav Harman, KAMS FMFI UK Bratislava # Hierarchicke zhlukovanie (Hierarchical clustering) nut <- read.table("http://www.iam.fmph.uniba.sk/ospm/Harman/data/nutrition.txt", header = TRUE) nut # Rozsiahle a aktualne data o krajinach je mozne ziskat napriklad z # https://www.oecd-ilibrary.org/ Dnes pouzijeme len stare skolkarske data # Najprv prevedieme mena krajin, kore sa nacitali ako premenna na nazvy riadkov # datoveho ramca. To je totiz vhodny format pre procedury HK v Rku rownames(nut) <- nut[, 1] nut <- nut[, 2:10] nut; plot(nut, pch = 19) # Specializovane procedury na HK nam ponuka kniznica cluster library(cluster) # Aglomerativne zhlukovanie help(agnes) # Data pred aplikaciou HK standardizujeme a pouzijeme metodu "average" na meranie vzdialenosti zhlukov nut.agnes1 <- agnes(nut, stand = TRUE, method = "average") summary(nut.agnes1) # Uplnu reprezentaciu dendrogramu poskytne zlozka merge # -cislo znamena, ze zlucujeme objekt "cislo" # (+)cislo znamena, ze spajame uz cely zhluk objektov, vytvoreny v riadku "cislo" matice nut.agnes1$merge # Dendrogram si mozeme nakreslit plot(nut.agnes1) # Porovnajme vysledok pouzitim inych metod merania vzdialenosti medzi zhlukmi nut.agnes2 <- agnes(nut, stand = TRUE, method = "single") plot(nut.agnes2) nut.agnes3 <- agnes(nut, stand = TRUE, method = "complete") plot(nut.agnes3) # Divizivne zhlukovanie help(diana) # Data pred aplikaciou HK standardizujeme. Divizivne zhlukovanie nemeria vzdialenosti zhlukov nut.diana <- diana(nut, stand = TRUE) summary(nut.diana) nut.diana$merge plot(nut.diana)