Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #1 Pobranie danych
- require(RPostgreSQL)
- drv <- dbDriver("PostgreSQL")
- db.con <- dbConnect(drv, host="193.193.92.209", port=5434,
- dbname="XXXXXX", user="XXXXXXXXX", password="XXXXX")
- #dane <- dbGetQuery(db.con, "select * from kwiaciarnia.klienci")
- dane <- dbGetQuery(db.con, "SELECT nadawca.wojewodztwo, COUNT(*) as sztuk, sum(cena) as wartosc
- FROM kwiaciarnia_hd.sprzedaz sprzedaz
- JOIN kwiaciarnia_hd.czas czas USING (idczasu)
- JOIN kwiaciarnia_hd.nadawca nadawca USING (idnadawcy)
- WHERE czas.rok = 2015
- GROUP BY nadawca.wojewodztwo");
- dbDisconnect(db.con)
- #Przygotowanie funkcji normal
- normal <- function(value) {
- n <- length(value)
- new_value <- NULL
- for (i in 1:n) {
- new_value[i] <-(value[i] - mean(value)) / sd(value)
- }
- return(new_value)
- }
- #2 Wykonanie standaryzacji statystycznej danych w obu kolumnach
- dane2 <- dane
- dane2$wojewodztwo <- NULL
- dane2$sztuk <- normal(dane$sztuk)
- dane2$wartosc <- normal(dane$wartosc)
- #3 Wyznaczenie podzialu danych na dwa klastry
- kmeans.result <- kmeans(dane2, 1) # zadanie 4 i 5 zmieniamy na odpowiednie k
- centers <- kmeans.result$centers[kmeans.result$cluster, ]
- distances <- sqrt(rowSums((dane2 - centers)^2))
- outliers <- order(distances, decreasing=T)[1:5]
- outliers #dla k 2 [1] 12 9 13 16 11
- #dla k 3 [1] 12 2 1 7 4
- #dla k 4 [1] 1 7 4 15 5
- # przygotowanie wykresu
- plot(dane2[,c("sztuk", "wartosc")],
- col=kmeans.result$cluster)
- points(kmeans.result$centers[,c("sztuk", "wartosc")],
- col=1:3, pch=8, cex=1.5)
- points(dane2[outliers, c("sztuk", "wartosc")],
- pch="+", col=4, cex=1.5)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement