langkah awal yang dilakukan adalah install package “kohonen” dengan perintah berikut.

install.packages("kohonen")
library(kohonen)

kemudian, dataset yang digunakana adalah swiss, untuk menampilkan dataset gunakan perintah berikut,

data("swiss")
head(swiss)
swiss

Maka tampilan data akan muncul seperti output di bawah ini,

dataset swiss memiliki 6 variabel diantaranya Fertility, Agriculture, Examination, Education, Catholic, dan Infant Mortality.

Kemudian dilakukan standarisasi pada data karena nilai disetiap variabelnya berbeda dan terpaut cukup jauh menggunakan perintah berikut,

scale(swiss)
head(scale(swiss))

lalu muncul hasil seperti gambar berikut,

berdasarkan hasil standarisasi data swiss didapatkan hasil yang tidak bias.

Selanjtnya manampilkan dimensi dan struktur pada data dengan perintah berikut,

dim(swiss)
str(swiss)

hasil yang didapatkan adalah seperti gambar di bawah ini,

dari hasil di atas, terdapat 47 data dengan 6 variabel, kemudian 2 variabel memiliki tipe data integer dan sisanya memiliki tipe numerik.

Berikutnya, membuat kelompok atau kategorisasi dari 47 data dengan 6 variabel yang ada dengan perintah berikut,

grid<-somgrid(xdim = 6, ydim = 6, topo = "hexagonal")
som.swiss<-som(scale(swiss), grid=somgrid(xdim = 6, ydim = 6, "hexagonal"))
str(som.swiss)

makan muncul hasil sebagai berikut,

kemudian, visualisasikan data dari hasil klasterisasi menggunakan metode SOM dengan perintah berikut,

plot(som.swiss,type="mapping")

maka plot akan muncul seperti berikut,

dari hasil di atas, mapping plot yang terbentuk memiliki dimensi 6x6 atau 36.

Setelah dilakukan pengelompokan, maka dapat dilihat letak data pada pengelompokan tersebut menggunakan perintah berikut,

som.swiss$grid$pts
som.swiss$unit.classif

maka muncul hasil sebegai berikut,

berdasarkan hasil mapping plot dan pts yang didapatkan, dapat diketahui letak sumbu x dan y pada plot beserta nilainya yang telah didapat dari hasil pts. Horizontal mapping plot adalah sumbu x dan bagian vertikal adalah sumbu y, maka x = 1.5 dan y = 0.866, maka pada lingkaran pertama berada pada lingkaran pojok kiri bawah dan begitu seterusnya.

Kemudian menampilkan mapping plot secara keseluruhan dan menambahkan nomor pada setiap subjeknya sesuai dengan unit classif menggunakan perintah berikut.

plot(som.swiss)

maka muncul tampilan plot sebagai berikut,

selanjtnya, melakukan Hierarchical Clustering menggunakan metode complete dengan jarak euklid dan jumlah objek 36 dengan perintah berikut,

hclust(dist(som.swiss$codes[[1]]))

maka hasilnya muncul seperti gambar berikut,

langkah berikutnya adalah melakukan pengelompokan sebanyak 6 kelompok dengan masing-masing jumlah objek menggunakan perintah berikut,

peta<-cutree(hclust(dist(som.swiss$codes[[1]])),6)
plot(peta)

maka muncul hasil plot sebagai berikut,

kemudian, melakukan pengelompokan dari hasil peta tersebut menggunakan perintah berikut,

plot(som.swiss,type="codes",bgcol=rainbow(3))
add.cluster.boundaries(som.swiss,peta)

maka akan muncul plot seperti gambar di bawah ini,

Pada gambar di atas, bahwa terdapat 6 kelompok dengan warna yang berbeda dan letak setiap objek sesuai dengan unit classif

untuk melihat unit classif dapat menggunakan perintah berikut,

som.swiss$unit.classif

makan muncul hasil seperti berikut,

langkah terakhir adalah melakukan terhadap data uji yang memiliki nilai-nilai data baru yang nantinya harus dibuat kesamaan tipe agar dapat dimasukkan ke dalam model, perintah yang digunakan adalah sebagai berikut.

ujimatrix<-as.matrix(uji)
class(ujimatrix)
dim(ujimatrix)
dim(ujimatrix)<-c(1,6)
dim(ujimatrix)
#memasukkan satu data uji kedalam model
map(som.swiss, scale(ujimatrix,center = attr(scale(swiss), "scaled:center"),
scale = attr(scale(swiss),"scaled:scale")))

makan muncul hasil seperti gambar di bawah ini,

Berdasarkan gambar di atas, bahwa pada data uji yang digunakan masuk ke dalam unit klasifikasi ke 19 atau masuk ke dalam lingkaran ke-19.

Alhamdulillah, analisis klaster dengan metode SOM sudah selesai! Semoga ini dapat bermanfaat bagi temen-temen semua yaa😊. Selamat mencoba!

--

--