Attention please

클러스터링 ; 데이터 살펴보기(EDA) - (1) 본문

머신러닝

클러스터링 ; 데이터 살펴보기(EDA) - (1)

Seongmin.C 2023. 2. 17. 20:16
728x90

Clustering은 Data mining 분야에서 데이터들 간의 유사성을 기반으로 데이터들을 그룹으로 분류하는 기법이다.

 

머신러닝의 학습은 크게 두가지로 구분되는데 지도 학습(supervised learning)비지도 학습(unsupervised learning) 이다. Clustering 기법은 비지도 학습에 속하는데 비지도 학습은 따로 데이터에 대한 label이 주어지지 않는다. 대신, 데이터간의 유사도를 기반으로 데이터를 그룹화를 시킬 수 있는데 이를 군집화(cluster)라고 한다.

 

즉, 데이터 간의 유사성이 높은 것들을 군집화하는 것을 clustering이라고 한다.

 

 

classification

 

위 그림을 보면 데이터들은 children, Adults 라벨값이 존재하고, 같은 라벨끼리 묶일 수 있도록 구분하는 것이 Classification 즉, 지도 학습이다.

 

 

 

위 그림같이 데이터들에 대해 따로 label이 주어지지 않고, 데이터들의 유사도를 기반으로 최적의 그룹을 찾아 묶어 구분하는 것이 Clustering 즉, 비지도 학습이다.

 

 

 

 

 

 

 

 

Clustering은 일반적으로 고객들을 세분화하거나, 유사 문서를 군집화 하는 등에 주로 사용된다. 이번에 Clustering을 실습하기 위해 사용할 데이터 역시 고객들에 대한 정보가 담겨있는 데이터이다. 데이터는 Kaggle의 Mall Customer Segmentation Data 를 사용하였다.

(https://www.kaggle.com/datasets/vjchoudhary7/customer-segmentation-tutorial-in-python)

 

데이터를 다운받았다면 어떻게 구성되어있는지 파악을 해야한다. Mall Customer 데이터의 경우 총 4개의 column으로 이루어져 있고 내용은 다음과 같다.

 

  • Gender : 성별 (Male, Female)
  • Age : 나이
  • Annual Income (k$) : 연간 소득
  • Spending Score (1-100) : 쇼핑몰에서 부여한 고객의 점수

 

우선 다운받은 데이터를 출력해보자.

df = pd.read_csv("Mall_Customers.csv", index_col = 0)
df.head()

 

 

 

먼저 column의 이름을 후에 사용하기 쉽도록 번경하였다.

df = df.rename(columns = {'Annual Income (k$)':'Income', 'Spending Score (1-100)':'Score'})
df

 

 

 

이제 데이터 불러왔으니 EDA를 시작해보자.

 

 

 

 

 

 

 

 

 

먼저 데이터의 데이터 타입, 수치 등에 대한 정보를 살펴보자.

df.info()

 

 

Gender 컬럼을 제외한 나머지 컬럼들의 데이터 타입이 int형인 것을 확인할 수 있다. 또한 결측치는 따로 존재하지 않는 것을 볼 수 있다.

 

df.describe()

 

 

각 변수의 평균값과 표준편차에 차이가 있다. 물론 단위가 다르게 발생하는 당연한 결과이며, 학습을 위해서는 정규화와 표준화 작업이 필요해보인다.

 

 

 

 

 

 

 

 

이제 데이터의 분포가 어떻게 이루어져있는지 살펴보자. 현 데이터의 변수는 Categorical 변수 1개Numerical 변수 3개로 구성되어있다. 

 

먼저 Categorical 변수인 Gender 변수의 분포를 확인하였다.

 

print("column : Gender")
print(df['Gender'].value_counts())
print('='*80)

 

 

위 수치를 bar graph로 시각화하면 다음과 같다.

 

 

남성 고객에 비해 여성 고객의 수가 더 많은 것을 확인할 수 있다.

 

 

다음으로 Numerical 변수인 Age, Income, Score에 대해 시각화를 해보자.

 

  • Blue : Male
  • Red : Female

 

여자와 남자의 나이, 수입, 점수에 대한 분포는 비슷해 보인다.

 

 

 

 

 

 

 

 

다음으로 연속형 변수 Age, Income, Score 변수의 상관관계를 살펴봐야한다. 

 

df_corr = df.corr()
display(df_corr)

 

위 수치로 히트맵으로 시각화를 해보자.

 

 

다른 column들에 비해 AgeScore 컬럼의 상관관계가 높게 나왔다. 

 

 

 

 

728x90

'머신러닝' 카테고리의 다른 글

클러스터링 ; 데이터 전처리 - (2)  (0) 2023.02.17
sklearn의 Simplelmputer으로 결측치 채우기  (0) 2023.02.09
타이타닉 - EDA  (2) 2023.01.27
Comments