Sei sulla pagina 1di 2

library(dbscan)

library(fpc)
iris2-iris[,-5]
iris2
#se pp dat nr celor mai apropiati vecini k=minpts
#k=4
#se determina val optima a lui epsilon prin calc mediei distantelor de la orice pct
#la cei mai apropiati k vecini ai sai
#aceste dist sunt ordonate cresc reprez grafic, iar locul in care graficul atinge
un cot(knee)
#determina val optima a lui epsilon
kNNdistplot(iris2,k=4)
abline(h=0.4, col=red)
set.seed(123)
d4-dbscan(iris2, eps=0.4, MinPts=4)
d4
#la 0 nu exista puncte in nucleu ci doar in border
#acoperirea convexa = cea mai mica multime convexa care include mutimea respectiva)
hullplot(iris2,d4$cluster)
table(iris$Species, d4$cluster)
d4$cluster
plotcluster(iris2, d4$cluster)
#pe bz similaritatii dintre noile date si clusterele formate se vor eticheta un nou
set de date
# se extrage aleator un esantion de 10 obs si se adauga zgomote cu o distributie
unif cu func runif
set.seed(1234)
index-sample(1nrow(iris),10)
index
datenoi- iris[index,-5]
datenoi
datenoi-datenoi+matrix(runif(104, min=0, max=0.4), nrow=10, ncol=4)
datenoi
predictie-predict(d4, iris2, datenoi)
predictie# se ob un vector cu 10 elemente ce corespunde cu prima coloana din date
noi, cele ce apartin cluster-ului 0 fiind outlieri
plot(iris2[,c(1,4)], col=d4$cluster)
points(datenoi[,c(1,4)], col=predictie, pch=11, cex=5)
table(predictie,iris$Species[index])

###CLUSTERIZARE FUZZY###
library(e1071)
rezultat-cmeans(iris[,-5],3,100,2,method=cmeans)#3 nr de clastere, 100 e nr de
iteratii, 2 sunt param de fuzzificare
rezultat
#cluster centers = centroizii clusterului= media aritmetica a valorilor variab
rezultat$membership[13,]
# cel mai mare grad este de 0.99 deci prima val apartine primului cluster
names(rezultat)
rezultat$cluster# spune fiecare val carui cluster apartine
plot(iris[,c(1,2)],col=rezultat$cluster)
#reprez centroizii
points(rezultat$centers[,c(1,2)], col=13, pch=10, cex=3)
table(iris$Species, rezultat$cluster)
library(e1071)
food-read.csv(protein-2_1748.csv)
food
food[13,]
set.seed(123)
date-cmeans(food[,c(WhiteMeat,RedMeat)],3,100,2,method=cmeans)
date
date$cluster
o-order(date$cluster)
o
#interpretare la fel la cmeans
plot(food$RedMeat,food$WhiteMeat, type=n,xlim=c(3,19),xlab=RedMeat,ylab=WhiteMeat)
text(x=food$RedMeat,y=food$WhiteMeat,labels=food$Country,col=date$cluster)
data.frame(food$Country[o],date$cluster[o])

Potrebbero piacerti anche