Paket 2b (K-Means Clustering)

logo 2.png


Cara Menggunakan Program

  1. Buka Google Colaboratory menggunakan akun anda
  2. Install library bila diperlukan
  3. Gunakan script code program di bawah menggunakan Google Colaboratory
  4. Modifikasi sesuai materi yang dipelajari

Deskripsi Program
Pertama impor data dummy pengunjung mall dari local drive ke google colab
#Import data dari local drive
from google.colab import files
uploaded = files.upload()
Menyimpan dataset csv ke dalam dataframe Pandas
import pandas as pd
# Simpan dataset ke dalam dataframe Pandas
df = pd.read_csv(io.BytesIO(uploaded['Mall_Customers.csv']))
# tampilkan data 3 baris pertama
df.head(3)
Preprocessing
# ubah nama kolom
df = df.rename(columns={'Gender': 'gender', 'Age': 'age',
'Annual Income (k$)': 'annual_income',
'Spending Score (1-100)': 'spending_score'})
# ubah data kategorik mmenjadi data numerik
df['gender'].replace(['Female', 'Male'], [0,1], inplace=True)
# tampilkan data yang sudah di preprocess
df.head(3)
Impor K-Means dan menghitung inersia dari K-Means dengan nilai K antara 1 sampai 11
from sklearn.cluster import KMeans
# menghilangkan kolom customer id dan gender karena tidak relevan
X = df.drop(['CustomerID', 'gender'], axis=1)
# membuat list yang berisi inertia
clusters = []
for i in range(1,11):
km = KMeans(n_clusters=i).fit(X)
clusters.append(km.inertia_)
Pemilihan nilai K dengan metode Elbow
import matplotlib.pyplot as plt
%matplotlib inline
import seaborn as sns
# membuat plot inertia
fig, ax = plt.subplots(figsize=(8, 4))
sns.lineplot(x=list(range(1, 11)), y=clusters, ax=ax)
ax.set_title('Cari Elbow')
ax.set_xlabel('Clusters')
ax.set_ylabel('Inertia')
Melatih K-Means dengan jumlah K=5 yang diperoleh dari metode Elbow dan plot hasil clustering
# membuat objek KMeans
km5 = KMeans(n_clusters=5).fit(X)
# menambahkan kolom label pada dataset
X['Labels'] = km5.labels_
# membuat plot KMeans dengan 5 klaster
plt.figure(figsize=(8,4))
sns.scatterplot(X['annual_income'], X['spending_score'], hue=X['Labels'],
palette=sns.color_palette('hls', 5))
plt.title('KMeans dengan 5 Cluster')
plt.show()

© Copyright 2023, Ganesha Operation. All Rights Reserved