library(datasets) euclid <- function(x1,x2) #x musi byc postaci x1 - x2 { sqrt(rowSums((x1-x2)^2)) } wymiar <- 2 k_means <- function(dane, k, max_iter, wymiar) #k - liczba klastrow, max_iter - maksymalna liczba iteracji { # # losowanie punktow poczatkowych # means <- (sample(1:dim(dane)[1],k)) clusters <- dane[means,] print('klastry') print(clusters) #do kazdego klastra zostana przypisane najblizej lezace punkty #dla kazdego punktu obliczane sa odleglosci od wszystkich klastrow #przypisywany jest do najblizszego clustlist = list() #inicjalizacja listy na macierze klastrow w = list() for (i in 1:max_iter) { for (j in 1:k) #petla po wszystkich klastrach { # macierz klastrow clustlist[[j]] <- t(matrix(clusters[j,],wymiar,dim(dane)[1])) w[[j]]<-euclid(dane,unlist(clustlist[[j]])) #print(w) } } return(w) } a<-k_means(iris[, 3:4], 2, 1,2)