Saturday, April 24, 2010

K-Means with Matlab

- Kmeans (X , k)

Merupakan partisi titik pada data n-by-p dari matriks X ke dalam kelompok k. Partisi ini meminimalkan jumlah iterasi, pada semua cluster. Baris X sesuain dengan poin, kolom seduai dengan variable. Kmeans memiliki returns berupa vector yang berisi indeks cluster masing-masing titik. Secara default, kmeans menggunakan kuadrat jarak Euclidean.

- Subplot

Merupakan pembagian petak angka ke dalam panel persegi panjang yang diberi nomor baris yang sesuai, dimana setiap panel berisi sumbu objek. Plot berikutnya merupakan output pada pane saat ini.

- Silhouette(X , clust)

Merupakan siluet dari plot cluster untuk data n-by-p pada matrix X , dengan cluster ditentukan oleh clust nya. Baris X sesuai dengan poin, kolom sesuai dengan koordinat. Clust bisa menjadi variable kategori, vector numeric, karakter matriks, atau array yang berisi string nama cluster untuk tiap titik.

- Distance

Merupakan pengukuran jarak dalam ruang p-dimensi. Dalam contoh ini, pengukuran jarak yang digunakan adalah sqEuclidean yaitu pengukuran k uadrat jarak Euclidean pada setiap centroid mean titik di cluster itu.

- Replicates

Merupakan berapa kali pengulangan pada clustering, masing-masing dengan 1 set posisi awal centroid cluster yang baru. K-means memberikan returns berupa nilai sumd yang terendah.

Langkah-langkah :

- load fisheriris

Membagi menjadi 2 cluster

- idx2 = kmeans(meas,2,'dist','sqEuclidean','display','final','replicates',5)

- subplot(2,3,1)

- [silh2,h]=silhouette(meas,idx2,'sqEuclidean')

- mean(silh2)

Membagi menjadi 3 cluster

- idx3 = kmeans(meas,3,'dist','sqEuclidean','display','final','replicates',5)

- subplot(2,3,2)

- [silh3,h]=silhouette(meas,idx3,'sqEuclidean')

- mean(silh3)

Membagi menjadi 4 cluster

- idx4 = kmeans(meas,4,'dist','sqEuclidean','display','final','replicates',5)

- subplot(2,3,3)

- [silh4,h]=silhouette(meas,idx4,'sqEuclidean')

- mean(silh4)

Kesimpulan :

Dari hasil ketiga grafik dan perhitungan mean tersebut dapat diambil kesimpulan bahwa, pembagian cluster yang terbaik yaitu dimana hasil siluet nya tidak terlalu negatif dan memiliki mean yang tertinggi.



Query Language (2)

Fungsi-Fungsi Aggregate
  • COUNT(*)
    Untuk mendapatkan jumlah baris
    SELECT COUNT(*) FROM ANGGOTA
  • MAX(field)
    Untuk mendapatkan nilai maksimum
    SELECT MAX(year(Tgl_Lahir)) FROM PEGAWAI
  • MIN(field)
    Untuk mendapatkan nilai minimum
    SELECT MIN(year(Tgl_Lahir)) FROM PEGAWAI
  • SUM(field)
    Untuk mendapatkan hasil penjumlahan kolom
  • AVG(field)
    Untuk mendapatkan nilai rata-rata
  • MEDIAN(field)
    Untuk mencari nilai tengah
Group By
  • Digunakan untuk pengelompokna dari fungsi-fungsi aggregate.
    - Untuk menampilkan jumlah pegawai perjenis kelamin
    SELECT JK, COUNT(*) FROM PEGAWAI GROUP BY JK
    - Untuk menampilkan rata-rata gaji per pegawai
    SELECT ID_PEG, AVG(GAJI) FROM PENGGAJIAN GROUP BY ID_PEG
Having
  • Digunakan untuk memfilter fungsi-fungsi aggregate.
    untuk menampilkan jumlah buku per kode penerbit, tetapi hanya yang jumlahnya > 10
    SELECT ID_PENERBIT, COUNT(*) FROM KOLEKSI GROUP BY ID_PENERBIT HAVING COUNT(*) > 10
Nested Query
  • Suatu statement pada SQL dimana terjadi query didalam query, atau disebut juga subquery.
    Contoh : select * from a_obat a where a.id_obat not in (select b.id_obat from a_rincian_penjualan b)
Operasi Lain-Lain
  • TOP / ROWNUM
    Untuk menampilkan data pada baris yang kurang dari n.
    select top 3 nama_obat from a_obat
    select id_obat from a_obat where rownum <= 3
  • CONCAT
    Untuk menggabungkan dua buah string menjadi satu.
    select concat(nama_obat, keterangan_obat) from a_obat
  • NVL
    Untuk menggantikan nilai null menjadi nilai yang diketahui.
    select nama_apoteker, NVL(notelp_apoteker, ‘Tidak Terdaftar') from a_apoteker
  • ABS
    Untuk mengubah tanda negatif pada suatu angka atau perhitungan menjadi positif.
    select ABS(jumlah-harga_satuan) from a_rincian_penjualan
  • POWER
    Digunakan untuk menampilkan hasil m pangkat n. Dengan syntax yaitu power (m,n).
    select power (3,2) from dual
  • TO_CHAR
    Untuk mengkonversi data bertipe date atau number menjadi karakter.
    select to_char (sysdate,'DD MONTH YY') from dual
  • ADD_MONTHS
    Untuk menambahkan beberapa bulan kedepan jika positif, dan mengurangi beberapa bulan kebelakang jika negatif.
    select ADD_MONTHS (tanggal_pembelian, 5) from a_pembelian
  • MONTHS_BETWEEN
    Untuk menghitung selisih bulan antar date1 dan date2.
    select months_between (sysdate, '30-APR-09') from dual
  • INNER JOIN
    Hasil query dengan inner join hanya menampilkan baris-baris yang terdapat relasi antara dua buah tabel.
  • SELF JOIN
    Self join adalah hubungan antara suatu tabel dengan tabel itu sendiri. Hal ini dimungkinkan dengan menggunakan alias tabel sehingga seolah-olah terdapat dua tabel.
  • OUTER JOIN
    Outer join akan menghasilkan semua data dari sebuah tabel dan membatasi data dari tabel lainnya.

    Ada 3 macam outer join, yaitu :
    - Semua baris dari table sebelah kiri diacu dengan sebuah left outer join
    - Semua baris dari table sebelah kanan diacu oleh right outer join
    - Semua baris dari kedua table dihasilkan oleh sebuah full outer join