Q8.1

<aside> 💡 (c) (d)

</aside>

# required libraries
library(dbscan)
# plot dataset with given clustering
plot(dcdata, col = target + 1, main = "Ground Truth Clustering")

# HIERARCHICAL CLUSTERING

## Single Linkage
### Calculate Distances
data_dist <- dist(dcdata)
### Create Model
model <- hclust(data_dist, method = "single")
### Cut Tree
clusters = cutree(model, k = 2)
### Plot Clustering
plot(dcdata, col = clusters + 1, main = "HC Single Linkage, k=2")

## Complete Linkage
### Calculate Distances
data_dist <- dist(dcdata)
### Create Model
model <- hclust(data_dist, method = "complete")
### Cut Tree
clusters = cutree(model, k = 2)
### Plot Clustering
plot(dcdata, col = clusters + 1, main = "HC Complete Linkage, k=2")

# DBSCAN
epsValues = c(0.75, 1.00, 1.25, 1.50)
for (epsilon in epsValues) {
  model <- dbscan(dcdata, eps = epsilon, minPts = 5)
  plot(dcdata, 
       col = model$cluster + 1, 
       pch = ifelse(model$cluster, 1, 4), 
       main = paste("DBSCAN with eps = ", epsilon, sep = ""))
}

# kMeans
model <- kmeans(dcdata, centers = 2)
plot(dcdata, col = model$cluster + 1, main = "kMeans with k = 2")

Ground Truth Clustering

Ground Truth Clustering

Hierarchical Clustering with Single Linkage and k = 2

Hierarchical Clustering with Single Linkage and k = 2

DBSCAN with eps = 0.75

DBSCAN with eps = 0.75

DBSCAN with eps = 1.25

DBSCAN with eps = 1.25

kMeans with k = 2

kMeans with k = 2

Hierarchical Clustering with Complete Linkage and k = 2

Hierarchical Clustering with Complete Linkage and k = 2

DBSCAN with eps = 1

DBSCAN with eps = 1

DBSCAN with eps = 1.25

DBSCAN with eps = 1.25

Q8.2

<aside> 💡 0,495

</aside>

# required libraries
library(MLmetrics)
# HIERARCHICAL CLUSTERING
## Single Linkage
### Calculate Distances
data_dist <- dist(dcdata)
### Create Model
model <- hclust(data_dist, method = "single")
### Cut Tree
clusters = cutree(model, k = 2)

# CALCULATE ACCURACY
Accuracy(clusters, target)

Q8.3

<aside> 💡 0,935

</aside>

# required libraries
library(MLmetrics)
# HIERARCHICAL CLUSTERING
## Complete Linkage
### Calculate Distances
data_dist <- dist(dcdata)
### Create Model
model <- hclust(data_dist, method = "complete")
### Cut Tree
clusters = cutree(model, k = 2)

# CALCULATE ACCURACY
Accuracy(clusters, target)