-
Notifications
You must be signed in to change notification settings - Fork 0
/
Unit6_Clusters.R
109 lines (68 loc) · 2.15 KB
/
Unit6_Clusters.R
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
# Unit 6 - Recitation
# Video 2
flower = read.csv("flower.csv", header=FALSE)
str(flower)
# Change the data type to matrix
flowerMatrix = as.matrix(flower)
str(flowerMatrix)
# Turn matrix into a vector
flowerVector = as.vector(flowerMatrix)
str(flowerVector)
flowerVector2 = as.vector(flower)
str(flowerVector2)
# Compute distances
distance = dist(flowerVector, method = "euclidean")
# Video 3
# Hierarchical clustering
clusterIntensity = hclust(distance, method="ward")
# Plot the dendrogram
plot(clusterIntensity)
# Select 3 clusters
rect.hclust(clusterIntensity, k = 3, border = "red")
flowerClusters = cutree(clusterIntensity, k = 3)
flowerClusters
# Find mean intensity values
tapply(flowerVector, flowerClusters, mean)
# Plot the image and the clusters
dim(flowerClusters) = c(50,50)
image(flowerClusters, axes = FALSE)
# Original image
image(flowerMatrix,axes=FALSE,col=grey(seq(0,1,length=256)))
# Video 4
# Let's try this with an MRI image of the brain
healthy = read.csv("healthy.csv", header=FALSE)
healthyMatrix = as.matrix(healthy)
str(healthyMatrix)
# Plot image
image(healthyMatrix,axes=FALSE,col=grey(seq(0,1,length=256)))
# Hierarchial clustering
healthyVector = as.vector(healthyMatrix)
distance = dist(healthyVector, method = "euclidean")
# We have an error - why?
str(healthyVector)
# Video 5
# Specify number of clusters
k = 5
# Run k-means
set.seed(1)
KMC = kmeans(healthyVector, centers = k, iter.max = 1000)
str(KMC)
# Extract clusters
healthyClusters = KMC$cluster
KMC$centers[2]
# Plot the image with the clusters
dim(healthyClusters) = c(nrow(healthyMatrix), ncol(healthyMatrix))
image(healthyClusters, axes = FALSE, col=rainbow(k))
# Video 6
# Apply to a test image
tumor = read.csv("tumor.csv", header=FALSE)
tumorMatrix = as.matrix(tumor)
tumorVector = as.vector(tumorMatrix)
# Apply clusters from before to new image, using the flexclust package
install.packages("flexclust")
library(flexclust)
KMC.kcca = as.kcca(KMC, healthyVector)
tumorClusters = predict(KMC.kcca, newdata = tumorVector)
# Visualize the clusters
dim(tumorClusters) = c(nrow(tumorMatrix), ncol(tumorMatrix))
image(tumorClusters, axes = FALSE, col=rainbow(k))