library(MASS)
library(ISLR)
library(car)
library(dplyr)
library(ggplot2)
library(caret)
library(mlbench)
library(caTools)
library (tree)

Clustering

K-Means Clustering

set.seed (2)
x=matrix (rnorm (50*2) , ncol =2)
x[1:25 ,1]=x[1:25 ,1]+3
x[1:25 ,2]=x[1:25 ,2] -4
km.out =kmeans (x,2, nstart =20)
km.out$cluster
 [1] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
plot(x, col =(km.out$cluster +1) , main="K-Means Clustering Results with K=2", xlab ="", ylab="", pch =20, cex =2)

set.seed (4)
km.out =kmeans (x,3, nstart =20)
km.out
K-means clustering with 3 clusters of sizes 10, 23, 17

Cluster means:
        [,1]        [,2]
1  2.3001545 -2.69622023
2 -0.3820397 -0.08740753
3  3.7789567 -4.56200798

Clustering vector:
 [1] 3 1 3 1 3 3 3 1 3 1 3 1 3 1 3 1 3 3 3 3 3 1 3 3 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 2 1 2 2 2 2

Within cluster sum of squares by cluster:
[1] 19.56137 52.67700 25.74089
 (between_SS / total_SS =  79.3 %)

Available components:

[1] "cluster"      "centers"      "totss"        "withinss"     "tot.withinss" "betweenss"    "size"        
[8] "iter"         "ifault"      
plot(x, col =(km.out$cluster +1) , main="K-Means Clustering Results with K=3", xlab ="", ylab="", pch =20, cex =2)

set.seed (3)
km.out =kmeans (x,3, nstart =1)
km.out$tot.withinss
[1] 104.3319
km.out =kmeans (x,3, nstart =20)
km.out$tot.withinss
[1] 97.97927

Hierarchical Clustering

hc.complete =hclust (dist(x), method ="complete")
hc.average =hclust (dist(x), method ="average")
hc.single =hclust (dist(x), method ="single")
par(mfrow =c(1,3))
plot(hc.complete ,main ="Complete Linkage", xlab="", sub ="",cex =.9)
plot(hc.average , main ="Average Linkage", xlab="", sub ="",cex =.9)
plot(hc.single , main="Single Linkage", xlab="", sub ="",cex =.9)

cutree (hc.complete , 2)
 [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
cutree (hc.average , 2)
 [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 1 2 2 2 2 2 2 2 2 2 2 1 2 1 2 2 2 2
cutree (hc.single , 2)
 [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
cutree (hc.single , 4)
 [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 3 3 3 3 3 3 3 3
xsc=scale (x)
plot(hclust (dist(xsc), method ="complete"), main ="Hierarchical Clustering with Scaled Features")
x=matrix (rnorm (30*3) , ncol =3)
dd=as.dist(1- cor(t(x)))
plot(hclust (dd, method ="complete"), main="Complete Linkage with Correlation -Based Distance", xlab="", sub ="")

LS0tDQp0aXRsZTogIkxhYm9yYXRvcmlvIDEwLjUiDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQpgYGB7cn0NCmxpYnJhcnkoTUFTUykNCmxpYnJhcnkoSVNMUikNCmxpYnJhcnkoY2FyKQ0KbGlicmFyeShkcGx5cikNCmxpYnJhcnkoZ2dwbG90MikNCmxpYnJhcnkoY2FyZXQpDQpsaWJyYXJ5KG1sYmVuY2gpDQpsaWJyYXJ5KGNhVG9vbHMpDQpsaWJyYXJ5ICh0cmVlKQ0KYGBgDQojI0NsdXN0ZXJpbmcNCiMjI0stTWVhbnMgQ2x1c3RlcmluZw0KYGBge3J9DQpzZXQuc2VlZCAoMikNCng9bWF0cml4IChybm9ybSAoNTAqMikgLCBuY29sID0yKQ0KeFsxOjI1ICwxXT14WzE6MjUgLDFdKzMNCnhbMToyNSAsMl09eFsxOjI1ICwyXSAtNA0Ka20ub3V0ID1rbWVhbnMgKHgsMiwgbnN0YXJ0ID0yMCkNCmttLm91dCRjbHVzdGVyDQpwbG90KHgsIGNvbCA9KGttLm91dCRjbHVzdGVyICsxKSAsIG1haW49IkstTWVhbnMgQ2x1c3RlcmluZyBSZXN1bHRzIHdpdGggSz0yIiwgeGxhYiA9IiIsIHlsYWI9IiIsIHBjaCA9MjAsIGNleCA9MikNCnNldC5zZWVkICg0KQ0Ka20ub3V0ID1rbWVhbnMgKHgsMywgbnN0YXJ0ID0yMCkNCmttLm91dA0KcGxvdCh4LCBjb2wgPShrbS5vdXQkY2x1c3RlciArMSkgLCBtYWluPSJLLU1lYW5zIENsdXN0ZXJpbmcgUmVzdWx0cyB3aXRoIEs9MyIsIHhsYWIgPSIiLCB5bGFiPSIiLCBwY2ggPTIwLCBjZXggPTIpDQpzZXQuc2VlZCAoMykNCmttLm91dCA9a21lYW5zICh4LDMsIG5zdGFydCA9MSkNCmttLm91dCR0b3Qud2l0aGluc3MNCmttLm91dCA9a21lYW5zICh4LDMsIG5zdGFydCA9MjApDQprbS5vdXQkdG90LndpdGhpbnNzDQpgYGANCiMjI0hpZXJhcmNoaWNhbCBDbHVzdGVyaW5nDQpgYGB7cn0NCmhjLmNvbXBsZXRlID1oY2x1c3QgKGRpc3QoeCksIG1ldGhvZCA9ImNvbXBsZXRlIikNCmhjLmF2ZXJhZ2UgPWhjbHVzdCAoZGlzdCh4KSwgbWV0aG9kID0iYXZlcmFnZSIpDQpoYy5zaW5nbGUgPWhjbHVzdCAoZGlzdCh4KSwgbWV0aG9kID0ic2luZ2xlIikNCnBhcihtZnJvdyA9YygxLDMpKQ0KcGxvdChoYy5jb21wbGV0ZSAsbWFpbiA9IkNvbXBsZXRlIExpbmthZ2UiLCB4bGFiPSIiLCBzdWIgPSIiLGNleCA9LjkpDQpwbG90KGhjLmF2ZXJhZ2UgLCBtYWluID0iQXZlcmFnZSBMaW5rYWdlIiwgeGxhYj0iIiwgc3ViID0iIixjZXggPS45KQ0KcGxvdChoYy5zaW5nbGUgLCBtYWluPSJTaW5nbGUgTGlua2FnZSIsIHhsYWI9IiIsIHN1YiA9IiIsY2V4ID0uOSkNCmN1dHJlZSAoaGMuY29tcGxldGUgLCAyKQ0KY3V0cmVlIChoYy5hdmVyYWdlICwgMikNCmN1dHJlZSAoaGMuc2luZ2xlICwgMikNCmN1dHJlZSAoaGMuc2luZ2xlICwgNCkNCnhzYz1zY2FsZSAoeCkNCnBsb3QoaGNsdXN0IChkaXN0KHhzYyksIG1ldGhvZCA9ImNvbXBsZXRlIiksIG1haW4gPSJIaWVyYXJjaGljYWwgQ2x1c3RlcmluZyB3aXRoIFNjYWxlZCBGZWF0dXJlcyIpDQp4PW1hdHJpeCAocm5vcm0gKDMwKjMpICwgbmNvbCA9MykNCmRkPWFzLmRpc3QoMS0gY29yKHQoeCkpKQ0KcGxvdChoY2x1c3QgKGRkLCBtZXRob2QgPSJjb21wbGV0ZSIpLCBtYWluPSJDb21wbGV0ZSBMaW5rYWdlIHdpdGggQ29ycmVsYXRpb24gLUJhc2VkIERpc3RhbmNlIiwgeGxhYj0iIiwgc3ViID0iIikNCmBgYA==