MACHINE LEARNING/Machine Learning Project

ML(머신러닝) 실습 : K-Means Clustering (for 문을 활용해 Elbow Method 찾기)

신강희 2024. 4. 24. 17:43
728x90

 

< 예제 실습 >

기술 지원 데이터는 종종 고객 경험 개선 기회에 대한 풍부한 정보 소스가 될 수 있습니다.

 

제품에 대한 고객의 문제가 적을수록 좋습니다. 고객이 최소한의 노력으로 기술적 과제를 신속하게 극복 할 수 있다면 더욱 좋습니다.

 

기술 지원 데이터를 분석하고 문제 유형, 문제 해결 시간 및 가장 적합한 지원 채널에 대한 기본적인 분석을 수행하겠습니다.

 

문제) technical_support_data.csv 파일을 통해, 비슷한 유형의 문제들을 도출하시오.

import pandas as pd


# 데이터 불러오기

df = pd.read_csv('../data/technical_support_data.csv')

 

# 비어있는 데이터 확인

df.isna().sum()

PROBLEM_TYPE             0
no_of_cases              0
Avg_pending_calls        0
Avg_resol_time           0
recurrence_freq          0
Replace_percent          0
In_warranty_percent      0
Post_warranty_percent    0
dtype: int64

 

# 클러스터링이므로 X 데이터만 생성

X = df.loc[ : , 'no_of_cases' : 'Post_warranty_percent' ]

 

# 인공지능 생성

from sklearn.cluster import KMeans

 

# 알맞은 그룹수를 확인하기 위해서 반복문을 활용하여 엘보우 메소드 확인하기

# wcss 라고 하는 빈 list를 만들어 1부터 10까지 범위를 정하여 차트로 출력해보자.

wcss = []
for i in range(1, 10+1) :
    kmeans = KMeans(n_clusters=i, random_state= 5)
    kmeans.fit(X)
    wcss.append(kmeans.inertia_)

 

wcss

[666888.109626087,
 235660.1862872549,
 144549.20695833335,
 100307.14277619046,
 69776.86952976191,
 58308.31121666667,
 41967.414533333336,
 30673.244183333332,
 19872.730766666667,
 16387.074516666667]

 

import matplotlib.pyplot as plt

 

plt.plot(wcss)
plt.show()

# 대략 4-5 사이가 적합해 보이므로 범위는 5로 설정

kmeans = KMeans(n_clusters= 5, random_state= 5)

 

# 예측하여 변수로 메모리에 업로드

y_pred = kmeans.fit_predict(X)

y_pred

array([4, 3, 3, 3, 1, 1, 1, 4, 0, 1, 1, 0, 4, 1, 2, 2, 0, 4, 1, 0, 3, 3,
       3])

 

# 그룹으로 나누어진 데이터를 직접 불러와 확인해 보기 위해 기존 데이터에 새로운 컬럼으로 삽입

df['Problem'] = y_pred

 

df.loc[df['Problem'] == 0 , ]

 

df.loc[df['Problem'] == 1 , ]

ㄴ 원하는 그룹들만 불러와서 눈으로 직접 비교 확인해 볼수 있다.

 

다음 실습문제로 계속

반응형