## ----include = FALSE----------------------------------------------------------
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>",
  fig.width = 7,
  fig.height = 5
)

## ----setup--------------------------------------------------------------------
library(cyclicwave)
data(power_consumption)

## -----------------------------------------------------------------------------
dim(power_consumption)
head(power_consumption, 3)

## -----------------------------------------------------------------------------
pwr <- power_consumption[1:1000, ]
zones_matrix <- as.matrix(pwr[, 7:9])

## -----------------------------------------------------------------------------
flat <- flatten_with_zones(zones_matrix)
length(flat$values)   
table(flat$zones)    

## -----------------------------------------------------------------------------
rolling <- rolling_stats(zones_matrix,
                         window_size = 10,
                         stats = c("mean", "sd"))

## -----------------------------------------------------------------------------
raw_features <- cbind(
  zone  = flat$zones,
  value = flat$values,
  mavg  = as.vector(rolling$mean),
  sd    = as.vector(rolling$sd)
)
head(raw_features, 3)

## -----------------------------------------------------------------------------
raw_features[, 2:4] <- normalize_features(raw_features[, 2:4],
                                          method = "zscore")

## ----kdist-plot---------------------------------------------------------------
plot_k_distance(raw_features[, 2:4], k = 7)

## -----------------------------------------------------------------------------
result <- run_dbscan(raw_features[, 2:4],
                     eps = 0.3,
                     min_pts = 7)

result$n_clusters
result$n_noise

## -----------------------------------------------------------------------------
davies_bouldin(raw_features[, 2:4], result$cluster)

## ----cluster-plot-------------------------------------------------------------
plot_clusters_pca(raw_features[, 2:4], result$cluster)

