Clustering adalah salah satu teknik analisis data yang digunakan untuk membagi dataset menjadi beberapa kelompok yang memiliki karakteristik yang sama. Dalam artikel ini, kita akan menggunakan library Python3 untuk melakukan clustering pada data Credit Card.
Langkah 1: Mengumpulkan dan Membersihkan Data
Kita akan mulai dengan mengumpulkan data dari file CSV berjudul "CC_GENERAL.csv" menggunakan library Pandas.
import pandas as pd
X = pd.read_csv('CC_GENERAL.csv')
X = X.drop('CUST_ID', axis=1)
X.fillna(method='ffill', inplace=True)
Langkah 2: Mempersiapkan Data
Kita akan menggunakan library StandardScaler dan Normalize untuk mempersiapkan data.
from sklearn.preprocessing import StandardScaler, normalize
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
X_normalized = normalize(X_scaled)
X_normalized = pd.DataFrame(X_normalized)
Langkah 3: Mengurangi Dimensi Data
Kita akan menggunakan library PCA untuk mengurangi dimensi data menjadi dua.
from sklearn.decomposition import PCA
pca = PCA(n_components=2)
X_principal = pca.fit_transform(X_normalized)
X_principal = pd.DataFrame(X_principal)
X_principal.columns = ['P1', 'P2']
Langkah 4: Membuat Dendrogram
Kita akan menggunakan library SciPy untuk membuat dendrogram dan membagi data menjadi beberapa kelompok.
import scipy.cluster.hierarchy as shc
Dendrogram = shc.dendrogram((shc.linkage(X_principal, method='ward')))
plt.figure(figsize=(8, 8))
plt.title('Visualising the data')
plt.show()
Langkah 5: Membuat Model Clustering
Kita akan menggunakan library AgglomerativeClustering untuk membuat model clustering dengan beberapa nilai k (2, 3, 4, 5, dan 6).
from sklearn.cluster import AgglomerativeClustering
ac2 = AgglomerativeClustering(n_clusters=2)
ac3 = AgglomerativeClustering(n_clusters=3)
ac4 = AgglomerativeClustering(n_clusters=4)
ac5 = AgglomerativeClustering(n_clusters=5)
ac6 = AgglomerativeClustering(n_clusters=6)
plt.figure(figsize=(6, 6))
plt.scatter(X_principal['P1'], X_principal['P2'], c=ac2.fit_predict(X_principal), cmap='rainbow')
plt.show()
Langkah 6: Mengevaluasi Model Clustering
Kita akan menggunakan library Sklearn untuk menghitung silhouette scores dan memvisualisasikan hasilnya.
from sklearn.metrics import silhouette_score
k = [2, 3, 4, 5, 6]
silhouette_scores = []
silhouette_scores.append(silhouette_score(X_principal, ac2.fit_predict(X_principal)))
silhouette_scores.append(silhouette_score(X_principal, ac3.fit_predict(X_principal)))
silhouette_scores.append(silhouette_score(X_principal, ac4.fit_predict(X_principal)))
silhouette_scores.append(silhouette_score(X_principal, ac5.fit_predict(X_principal)))
silhouette_scores.append(silhouette_score(X_principal, ac6.fit_predict(X_principal)))
plt.bar(k, silhouette_scores)
plt.xlabel('Number of clusters', fontsize=20)
plt.ylabel('S(i)', fontsize=20)
plt.show()
Kesimpulan
Dengan menggunakan library Python3 dan teknik clustering, kita dapat menentukan jumlah cluster yang optimal untuk data Credit Card. Dalam artikel ini, kita telah menggunakan library PCA, StandardScaler, Normalize, AgglomerativeClustering, dan SciPy untuk melakukan clustering pada data. Hasilnya menunjukkan bahwa jumlah cluster yang optimal adalah 2.