setwd("./data/africa/") # Nastavení pracovního adresáře library(cluster) #library("VIM") #library("factoextra") N <- input[[1]] # 'input' is a list of parametres, which comes from the NodeJS service input <- read.csv(file = 'input_modified.csv',header=TRUE,sep=",",dec=".") # Načtení CSV souboru #head(input) # Výpis prvních šesti řádek CSV souboru mydata <- input[, -1, drop=F] # Odstranění prvního sloupce #replace(mydata, is.na(mydata), 0) # Nahrazeni NA hodnot nulami rownames(mydata) <- input[, 1] # Jména řádků #head(mydata) mydata <- scale(mydata) # Standardizace (normalizace) dat #aggr(x = mydata) # Vykreslení prázných položek #countNA(mydata) # Kontrola počtu prázdných položek #res.dist <- get_dist(mydata, stand = TRUE, method = "euclidean") # Výpočet vzdáleností #fviz_dist(res.dist, gradient = list(low = "#EEEEEE", mid = "#999999", high = "#444444")) # Grafické vyjádření vzdálenostní matice #fviz_nbclust(mydata, kmeans, method = "silhouette")+labs(subtitle = "Silhouette method") # Optimální počet klastrů #fviz_nbclust(mydata, kmeans, method = "gap_stat") # Graf s ideálním počtem intervalů pro nehierarchickou metodu; s číslem se zatím nikde nepracuje # Nehierachické klastrování km50l <- kmeans(mydata, N, nstart = 50, algorithm=c("Lloyd")) # Nehierarchické klastrování k-means #fviz_cluster(km.res, data = mydata, # Vizualizace nehierarchických klastrů # ellipse.type = "convex", # palette = "jco", # ggtheme = theme_minimal()) # Hierarchické klastrování d <- dist(mydata, method = "euclidean") # Distance matrix (matice vzdáleností) fit <- hclust(d, method="ward.D2") # Výpočet hirarchie #plot(fit) # Vizualizace hierarchie groups <- cutree(fit, k=N) # Rozdělení stromu do k klastrů haclustwd2 <- groups #rect.hclust(fit, k=9, border="red") # Dedrogram s hranicemi klastrů # Grafické vyjádření klastrů s barvami # fviz_dend(fit, k = 9, # Počet klastrů # cex = 1, # Velikost popisků # k_colors = c("#2E9FDF", "#00AFBB", "#E7B800", "#FC4E07", "#c17d11"), # Barvy klastrů # color_labels_by_k = TRUE, # Barevné popisky pro skupiny # rect = TRUE # Ohraničení skupin obdélníkem #) outdata <- data.frame(km50l$cluster, haclustwd2) write.csv(outdata,'out_file_africa.csv') # zápis do souboru # --------------------