SHARE
TWEET

Untitled

a guest Dec 6th, 2016 85 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #1 Pobranie danych
  2. require(RPostgreSQL)
  3. drv <- dbDriver("PostgreSQL")
  4. db.con <- dbConnect(drv, host="193.193.92.209", port=5434,
  5.                     dbname="XXXXXX", user="XXXXXXXXX", password="XXXXX")
  6. #dane <- dbGetQuery(db.con, "select * from kwiaciarnia.klienci")
  7.  
  8. dane <- dbGetQuery(db.con, "SELECT nadawca.wojewodztwo, COUNT(*) as sztuk, sum(cena) as wartosc
  9. FROM kwiaciarnia_hd.sprzedaz sprzedaz
  10. JOIN kwiaciarnia_hd.czas czas USING (idczasu)
  11. JOIN kwiaciarnia_hd.nadawca nadawca USING (idnadawcy)
  12. WHERE czas.rok = 2015                                                                        
  13. GROUP BY nadawca.wojewodztwo");
  14.  
  15. dbDisconnect(db.con)
  16.  
  17. #Przygotowanie funkcji normal
  18. normal <- function(value) {
  19.  
  20.   n <- length(value)
  21.   new_value <- NULL
  22.  
  23.   for (i in 1:n) {
  24.     new_value[i] <-(value[i] - mean(value)) / sd(value)
  25.   }
  26.  
  27.   return(new_value)
  28. }
  29.  
  30. #2 Wykonanie standaryzacji statystycznej danych w obu kolumnach
  31.  
  32. dane2 <- dane
  33. dane2$wojewodztwo <- NULL
  34. dane2$sztuk <- normal(dane$sztuk)
  35. dane2$wartosc <- normal(dane$wartosc)
  36.  
  37.  
  38. #3 Wyznaczenie podzialu danych na dwa klastry
  39. kmeans.result <- kmeans(dane2, 1) # zadanie 4 i 5 zmieniamy na odpowiednie k
  40.  
  41.  
  42. centers <- kmeans.result$centers[kmeans.result$cluster, ]
  43.  
  44. distances <- sqrt(rowSums((dane2 - centers)^2))
  45. outliers <- order(distances, decreasing=T)[1:5]
  46. outliers  #dla k 2 [1]  12  9  13  16 11
  47. #dla k 3 [1]  12  2  1  7 4
  48. #dla k 4 [1]  1  7  4  15 5
  49.  
  50. # przygotowanie wykresu
  51. plot(dane2[,c("sztuk", "wartosc")],
  52.      col=kmeans.result$cluster)
  53. points(kmeans.result$centers[,c("sztuk", "wartosc")],
  54.        col=1:3, pch=8, cex=1.5)
  55. points(dane2[outliers, c("sztuk", "wartosc")],
  56.        pch="+", col=4, cex=1.5)
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top