Sunteți pe pagina 1din 7

Se dă setul de date “Wholesale customers data.

csv” disponibil la linkul:

https://archive.ics.uci.edu/ml/machine-learning-databases/00292/

Setul de date conţine următoarele atribute:

Channel= Canalul Horeca (Hotel/Restaurant/Cafenea) sau Retail (variabilă Nominală) 

Region= Lisabona, Oporto sau alta (Nominală) 

Fresh=cheltuielile anuale (milioane u.m.) pe produse proaspete (continuă)

Milk= cheltuielile anuale (milioane u.m.) pe produse lactate (continuă)

Grocery= cheltuielile anuale (milioane u.m.) pe produse de băcănie (continuă)

Frozen= cheltuielile anuale (milioane u.m.) pe produse congelate (continuă)

Detergents_Paper= cheltuielile anuale (milioane u.m.) pe produse din hârtie şi detergenţi (continuă)

Delicassen= cheltuielile anuale (milioane u.m.) pe delicatese (continuă)

Se atribuie setul de date variabilei “clienţi”:

> clienti<-read.csv("C://Wholesale customers data.csv")

> clienti

Se reţin coloanele “"Fresh","Milk":

> clienti <- clienti[, c("Fresh","Milk")]

Se scalează datele, se alege valoarea lui eps, se determină clusterele şi se reprezintă grafic.

> clienti <- scale(clienti)

> clienti <- as.data.frame(clienti)

Se trasează distribuţia distanţelor la cei mai apropiaţi 5 vecini.

> library(dbscan)

> kNNdistplot(clienti, k = 5)

> abline(h = 0.4, col = "red")


5
4
5-NN distance

3
2
1
0

0 500 1000 1500 2000

Points (sample) sorted by distance

Determinarea clusterelor:

> db_clustere_clienti <- dbscan(clienti, eps=0.4, minPts=5)

> print(db_clustere_clienti)

Se reprezintă grafic clusterele:


> fviz_cluster(db_clustere_clienti, clienti, ellipse = FALSE, geom = "point")

Cluster plot

-5
Dim2 (22.4%)

cluster
1

-10

-15

-12 -8 -4 0
Dim1 (38.8%)

Dacă ellipse=TRUE, se trasează elipse în jurul fiecărui cluster.

> fviz_cluster(db_clustere_clienti, clienti, ellipse = TRUE, geom = "point")


Cluster plot

-5
Dim2 (22.4%)

cluster
1

-10

-15

-12 -8 -4 0
Dim1 (38.8%)

> require(cluster)

> require(factoextra)

Se reţine vectorul de clusterizare:

> db_vector <- db_clustere_clienti[['cluster']]

Se calculează distanţele dintre puncte:

> distanta<-dist(clienti)
Se determină vectorul siluetă:

> silueta <- silhouette(db_vector, distanta)

Se determină silueta fiecărui obiect.

> silueta

Se reprezintă grafic silueta:

> fviz_silhouette(silueta)

Silueta medie a clusterului 0 (zgomotele) este -0.02; a clusterului 1 este 0.72, reprezentând o structură
puternică de obiecte.

Silueta medie globală este 0.69, reprezentând o structură acceptabilă de clustere.


Clusters silhouette plot
Average silhouette width: 0.69

1.0

0.5
Silhouette width Si

cluster
0
1

0.0

-0.5

Clusterizarea fuzzy

> library(e1071)

Dorim o clusterizare fuzzy cu 3 clustere si parametrul de fuzzificare 2:

> rez<-cmeans(clienti, 3, 2)

Vectorul de clusterizare pentru clusterizarea fuzzy este:

> fuzzy_vector<-rez[['cluster']]

Siluetele obiectelor din setul de date:

> silueta1<-silhouette(fuzzy_vector, distanta)

>silueta1
Reprezentarea grafică a siluetelor medii:

> fviz_silhouette(silueta1)

Clusters silhouette plot


Average silhouette width: 0.27

1.0

0.5
Silhouette width Si

cluster
1
2
3

0.0

S-ar putea să vă placă și