Facebook
From b, 5 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 238
  1. library(datasets)
  2.  
  3. euclid <- function(x1,x2) #x musi byc postaci x1 - x2
  4. {
  5.   sqrt(rowSums((x1-x2)^2))
  6. }
  7.  
  8.  
  9. wymiar <- 2
  10.  
  11. k_means <- function(dane, k, max_iter, wymiar)
  12.   #k - liczba klastrow, max_iter - maksymalna liczba iteracji
  13. {
  14.   #
  15.   # losowanie punktow poczatkowych
  16.   #
  17.   means <- (sample(1:dim(dane)[1],k))
  18.   clusters <- dane[means,]
  19.   print('klastry')
  20.   print(clusters)
  21.   #do kazdego klastra zostana przypisane najblizej lezace punkty
  22.   #dla kazdego punktu obliczane sa odleglosci od wszystkich klastrow
  23.   #przypisywany jest do najblizszego
  24.   clustlist = list() #inicjalizacja listy na macierze klastrow
  25.   w = list()
  26.   for (i in 1:max_iter)
  27.   {
  28.       for (j in 1:k) #petla po wszystkich klastrach
  29.       {
  30.        # macierz klastrow
  31.         clustlist[[j]] <- t(matrix(clusters[j,],wymiar,dim(dane)[1]))
  32.         w[[j]]<-euclid(dane,unlist(clustlist[[j]]))
  33.       }
  34.     pmin(w[[]])
  35.    
  36.   }
  37.   return(w)
  38. }
  39.  
  40.  
  41. a<-k_means(iris[, 3:4], 2, 1,2)