Advertisement
Guest User

Untitled

a guest
Dec 6th, 2016
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.69 KB | None | 0 0
  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)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement