Anda di halaman 1dari 13

Artificial Intelligence

Unsupervised Learning
K-Means

Nama : Chintya Ang


NIM : 2155301027
Kelas : 2 TI A
Dosen Pengampu : Dr. Juni Nurma Sari, S.Kom., M.MT

Program Studi Teknik Informatika


Politeknik Caltex Riau
T.A 2022/2023
Klasterisasi Data dengan K-Means
Dataset : Customer

Import library

Penjelasan :
Line 1 : Pandas untuk manipulasi dan analisis data, menyediakan struktur data yang efisien
dan fleksibel.
Line 2 : Matplotlib membuat grafik untuk visualisasi.
Line 3 : NumPy menyediakan struktur data array multidimensi yang efisien, serta fungsi-
fungsi matematika dan operasi array yang cepat.
Line 4 : Seaborn merupakan library untuk visualisasi data dengan antarmuka tingkat tinggi
di atas library Matplotlib. Library ini menyediakan fungsi-fungsi dan fitur-fitur
untuk membuat plot yang lebih menarik dan informatif.
Line 5 : Untuk mengimpor kelas KMeans dari library sklearn.cluster. Algoritma KMeans
digunakan untuk mengelompokkan data menjadi beberapa klaster berdasarkan jarak
antara titik data.

Import file dari local drive ke google colab

Penjelasan :
Line 2 : Menggunakan function read_csv( ) dalam library pandas untuk membaca file csv.
Pada function in terdiri atas 2 argumen. Argumen pertama merupakan nama file yang
akan dibaca dan sep=";" adalah argumen opsional yang menentukan pemisah
(delimiter) yang digunakan dalam file CSV. Dalam hal ini, pemisahnya adalah titik
koma (;).
Setelah kode berhasil dieksekusi, data dari file CSV akan dibaca dan disimpan dalam
sebuah DataFrame dengan variabel df.
Line 3 : Menampilkan 5 baris data awal dalam df.

Penjelasan :
.shape untuk mengetahui dimensi (jumlah baris dan kolom) dari DataFrame. Dari output dapat
diketahui bahwa data frame tersebut memiliki 50 baris dan 7 kolom.

Penjelasan :
Function describe( ) menghasilkan ringkasan statistik deskriptif dari DataFrame. Ini mencakup
count (jumlah non-null), mean (rata-rata), std (standar deviasi), min (nilai minimum), quartiles
(kuartil), dan max (nilai maksimum) untuk setiap kolom numerik dalam DataFrame. Dalam
DataFrame ini, kolom yang bersifat numerik hanya kolom Umur dan NilaiBelanjaSetahun.
Penjelasan :
Menampilkan informasi tentang DataFrame df yang meliputi jumlah baris dan jumlah kolom
dalam DataFrame, daftar nama kolom beserta tipe datanya, dan jumlah nilai non-null dalam
setiap kolom.

Penjelasan :
Fungsi df.isnull( ).sum( ) digunakan untuk menghitung jumlah nilai yang bernilai null dalam
setiap kolom dari DataFrame df.

Penjelasan :
Fungsi drop dalam kode ini yakni menghapus kolom ‘Customer_ID’ dan ‘Nama Pelanggan’.
Hal ini dilakukan karena kolom ini tidak digunakan pada saat klasterisasi. Selain itu, kode ini
akan menghasilkan DataFrame baru dengan nama data yang tidak memiliki kolom
‘Customer_ID’ dan ‘Nama Pelanggan’, namun kolom-kolom lainnya tetap ada.

Penjelasan :
Menampilkan 5 baris data awal pada data. Dapat dilihat bahwa disini sudah tidak ada kolom
‘Customer_ID’ dan ‘Nama Pelanggan’.
Penjelasan :
Line 1 : Import library LabelEncoder dari library sklearn.preprocessing.
Line 3 : Membuat objek LabelEncoder( ) dengan nama le yang digunakan untuk memberi
kode pada setiap label.
Line 4 : Mengubah label (string) menjadi kode (numerik) pada setiap nilai unik di kolom
‘Jenis Kelamin’ dalam data. Hasilnya disimpan dalam variabel jn_kel_encod
Line 5 : Mengubah label (string) menjadi kode (numerik) pada setiap nilai unik di kolom
‘Profesi’ dalam data. Hasilnya disimpan dalam variabel prof_encod
Line 6 : Mengubah label (string) menjadi kode (numerik) pada setiap nilai unik di kolom
‘Tipe Residen’ dalam data. Hasilnya disimpan dalam variabel res_encod

Penjelasan :
Line 1 : Menambah kolom baru pada DataFrame data dengan nama ‘encode_jnskel’ ,
dimana isi kolom ini yakni nilai dari variabel jn_kel_encod.
Line 2 : Menambah kolom baru pada DataFrame data dengan nama ‘encode_prof , dimana
isi kolom ini yakni nilai dari variabel prof_encod.
Line 3 : Menambah kolom baru pada DataFrame data dengan nama ‘encode_res , dimana
isi kolom ini yakni nilai dari variabel res_encod.
Line 4 : Menampilkan seluruh isi data dalam DataFrame data.
Output :
Penjelasan :
Menampilkan informasi tentang DataFrame data yang meliputi jumlah baris dan jumlah kolom
dalam data, daftar nama kolom beserta tipe datanya, dan jumlah nilai non-null dalam setiap
kolom. Disini kita dapat melihat bahwa 3 kolom yang kita tambahkan sebelumnya sudah masuk
dalam data ini.
Penjelasan :
Line 1 : Import library seaborn yang berfungsi untuk membuat plot visualisasi data. Dalam
hal ini, dialiaskan sebagai sns.
Line 3 : Membuat subplots (grafis) dengan 1 baris dan 3 kolom, serta mengatur ukuran
gambar menjadi 20x5. Variabel fig berisi objek gambar, sedangkan axes berisi array
objek sumbu yang mewakili sumbu-sumbu di dalam gambar.
Line 4 : Function sns.histplot() digunakan untuk membuat histogram. Nilai dalam kolom
'Umur' pada DataFrame data sebagai nilai dari sumbu x, kde=True berarti
mengaktifkan kurva kepadatan (kernel density estimation), dan ax=axes[0] berarti
sumbu pertama di dalam gambar.
Line 5 : Sama seperti penjelasan pada Line 4, hanya saja dalam hal ini nilai dalam kolom
'encode_jnskel' pada DataFrame data sebagai nilai dari sumbu x, dan ax=axes[1]
berarti sumbu kedua di dalam gambar.
Line 6 : Sama seperti penjelasan pada Line 4, hanya saja dalam hal ini nilai dalam kolom
'encode_prof' pada DataFrame data sebagai nilai dari sumbu x. , dan ax=axes[2]
berarti sumbu ketiga di dalam gambar.
Line 8 : Membuat subplots (grafis) dengan 1 baris dan 2 kolom, serta mengatur ukuran
gambar menjadi 20x5.
Line 9 : Sama seperti penjelasan pada Line 4, hanya saja dalam hal ini nilai dalam kolom
'encode_res' pada DataFrame data sebagai nilai dari sumbu x. , dan ax=axes[0]
berarti sumbu pertama di dalam gambar.
Line 10 : Sama seperti penjelasan pada Line 4, hanya saja dalam hal ini nilai dalam kolom
'NilaiBelanjaSetahun' pada DataFrame data sebagai nilai dari sumbu x. , dan
ax=axes[1] berarti sumbu kedua di dalam gambar.
Penjelasan :
Function sns.pairplot() digunakan untuk membuat matriks scatter plot dan histogram (dengan
KDE) dari dataset 'data'. Variabel-variabel yang ingin ditampilkan dalam matriks tersebut
ditentukan melalui argumen vars=['Umur','encode_prof','encode_res','NilaiBelanjaSetahun'].
Argumen hue='encode_jnsKel' menentukan variabel 'encode_jnsKel' yang akan digunakan
untuk menggambarkan warna dalam scatter plot.

Penjelasan :
Digunakan untuk membuat heatmap dari matriks korelasi antara kolom-kolom numerik dalam
DataFrame data. Kolom-kolom yang dimaksud yakni Umur, NilaiBelanjaSetahun,
encode_jnskel, encode_prof, dan encode_res. Warna pada heatmap menggambarkan tingkat
korelasi, di mana warna yang lebih terang menunjukkan korelasi yang lebih tinggi dan warna
yang lebih gelap menunjukkan korelasi yang lebih rendah.
Penjelasan :
Menampilkan informasi tentang DataFrame data yang meliputi jumlah baris dan jumlah kolom
dalam data, daftar nama kolom beserta tipe datanya, dan jumlah nilai non-null dalam setiap
kolom.

Penjelasan :
Fungsi drop dalam kode ini yakni menghapus kolom ‘Jenis Kelamin’, ‘Profesi’ dan ‘Tipe
Residen’. Selain itu, kode ini akan menghasilkan DataFrame baru dengan nama data_encode
yang tidak memiliki kolom ‘Jenis Kelamin’, ‘Profesi’ dan ‘Tipe Residen’, namun kolom-
kolom lainnya tetap ada.

Penjelasan :
Line 1 : Import modul silhouette_score dari scikit-learn untuk menghitung skor siluet.
Line 3 : Mendefinisikan sebuah list elbow untuk menyimpan nilai inersia (within-cluster sum
of squares) dari setiap iterasi algoritma K-Means.
Line 4 : Mendefinisikan list range_val yang berisi rentang nilai klaster yang akan diuji.
Line 7 : Melakukan iterasi melalui rentang nilai klaster dari 2 hingga 15.
Line 8-12 : Membuat objek KMeans dengan jumlah klaster yang sesuai. Kemudian, melatih
model K-Means menggunakan data_encode dan menyimpan nilai inersia pada list
elbow. Selain itu, menghitung skor siluet menggunakan silhouette_score antara
data_encode dan label klaster yang dihasilkan oleh K-Means, dan menyimpannya
pada list silhouette.
Output : Menghasilkan elbow yang berisi nilai inersia dan silhouette yang berisi skor siluet
untuk setiap nilai klaster.
Penjelasan :
Melihat dua subplot yang menampilkan grafik inersia dan skor siluet, yang memungkinkan
untuk membandingkan metode elbow dan silhouette untuk menentukan jumlah klaster yang
optimal.

Penjelasan :
• Akan mendapatkan hasil dari algoritma K-Means yang telah diterapkan pada data yang
diencode. Dalam hal ini, data_encode merupakan data yang telah diubah atau diencode
sebelumnya.
• Metode fit() dari objek kmeans akan melatih model K-Means dengan jumlah klaster
yang ditentukan (dalam contoh ini, 4 klaster) menggunakan data yang diencode.
• kmeans.labels_ akan menghasilkan array yang berisi label klaster yang ditetapkan oleh
model K-Means untuk setiap sampel dalam data_encode.
Penjelasan :
Menggunakan seaborn (sns) untuk membuat scatter plot dari data yang telah diencode
(data_encode). Scatter plot ini akan memperlihatkan hubungan antara variabel 'Umur' dan
'encode_jnsKel', dengan warna titik (hue) yang menunjukkan hasil dari algoritma K-Means
(hasil_kmeans).

Penjelasan :
Menggunakan seaborn (sns) untuk membuat scatter plot dari data yang telah diencode
(data_encode). Scatter plot ini akan memperlihatkan hubungan antara variabel 'encode_prof'
dan 'Umur', dengan warna titik (hue) yang menunjukkan hasil dari algoritma K-Means
(hasil_kmeans).

Penjelasan :
Akan mendapatkan skor siluet (silhouette score) untuk hasil pengelompokan yang diberikan
oleh algoritma K-Means.

Penjelasan :
Menambahkan kolom dengan nama Class pada data dengan nilai dari hasil_kmeans

Penjelasan :
Menampilkan isi data dalam data

Penjelasan :
Akan menghitung jumlah kemunculan setiap nilai unik dalam kolom 'Class' pada DataFrame
data

Anda mungkin juga menyukai