Posts Mall Customer Segmentation Data로 해보는 군집화
Post
Cancel

Mall Customer Segmentation Data로 해보는 군집화

1. Mall Customer Segmentation Data


1.1 Mall Customer Segmentation Data


2. Mall Customer Segmentation Data 실습


2.1 Data Load

1
2
3
4
5
6
7
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

dataset = pd.read_csv('https://raw.githubusercontent.com/hmkim312/datas/main/mallcustomer/Mall_Customers.csv')
dataset.tail()
CustomerIDGenderAgeAnnual Income (k$)Spending Score (1-100)
195196Female3512079
196197Female4512628
197198Male3212674
198199Male3213718
199200Male3013783
  • 총 200개의 데이터
  • id : 고윳값
  • gender : 성별,
  • income : 소득,
  • spendig score : 쇼핑몰에서 부여한 고객의 점수 (소비금액 및 행동 패턴 기반)


2.2 5개 군집으로 해보기

1
2
3
4
5
from sklearn.cluster import KMeans

X = dataset.iloc[:, [3,4]].values
model = KMeans(n_clusters= 5, init = 'k-means++', random_state = 13)
cluster = model.fit_predict(X)
  • 데이터에서 income과 Score만 가지고 군집화를 해봄


2.3 시각화

1
2
3
4
5
6
7
8
9
10
11
12
plt.figure(figsize=(12, 10))
plt.scatter(X[cluster == 0, 0], X[cluster == 0, 1], s= 100, c = 'red', label = 'Cluster 1')
plt.scatter(X[cluster == 1, 0], X[cluster == 1, 1], s= 100, c = 'blue', label = 'Cluster 2')
plt.scatter(X[cluster == 2, 0], X[cluster == 2, 1], s= 100, c = 'green', label = 'Cluster 3')
plt.scatter(X[cluster == 3, 0], X[cluster == 3, 1], s= 100, c = 'cyan', label = 'Cluster 4')
plt.scatter(X[cluster == 4, 0], X[cluster == 4, 1], s= 100, c = 'magenta', label = 'Cluster 5')
plt.scatter(model.cluster_centers_[:, 0], model.cluster_centers_[:,1], s = 300, c = 'yellow', label = 'Centroids')
plt.title('Clusters of customers')
plt.xlabel('Annual Income (k$)')
plt.ylabel('Spending Score (1 - 100)')
plt.legend()
plt.show()

  • x = X[cluster == 4, 0], y = X[cluster == 4, 1] 뜻으로, x는 cluster가 4인것의 x축(income), y는 cluster가 4인것의 y축(score)란 뜻
  • 같은 의미로 model.cluster.centers_로 각 센터의 x축([:, 0])과 y축([:, 1])임
  • 쇼핑몰 고객을 5개의 군집으로 나눈것도 괜찮아 보임
This post is licensed under CC BY 4.0 by the author.

클러스터링(Clustering)

Beautiful Soup을 이용한 네이버 영화 평점 크롤링