군침이 싹 도는 코딩

K-Means clustering 본문

Python/Machine Learning

K-Means clustering

mugoori 2022. 12. 2. 17:44

중심점을 랜덤으로 설정하고 선을 그었다
그은 선을 기준으로 영역을 만들고 영역안을 자신의 색깔로 만든 뒤 그 영역의 중심점을 찾아 다시 이동하는 모습

 

동작원리는 먼저 그룹을 몇개로 나눈다음 각 그룹의 중심점을 랜덤으로 잡고

그 중심점을 기준으로 선을 그어 영역을 나눈다 그 영역안을 자신의 색깔로 바꾸고

그 영역안의 중심점을 또 찾아 중심점이 이동한다 이러한 방식을 무한반복하는것이다.

주로 그루핑을 할때 사용한다

 

 

이 데이터프레임으로 K-means를 해보겠다

 

 

1. nan 을 확인

df.isna().sum()
>>> CustomerID                0
    Genre                     0
    Age                       0
    Annual Income (k$)        0
    Spending Score (1-100)    0
    dtype: int64

 

 

2. X,y 값을 세팅

X = df.iloc[:,3:]
X

 

# X의 값만 세팅한 이유는 언수퍼바이즈드 러닝에서는 y값이 없기때문이다

따라서 분류나 수치예측이 아니기때문에 피쳐 스케일링도 필요없다

 

 

3. 모델링

from sklearn.cluster import KMeans

kmeans = KMeans(n_clusters= 3,random_state=2)

# n_clusters= 여기에 몇개의 그룹으로 할지 설정해줄수있다
# random_state= 이것은 랜덤값을 맞추는 파라미터다

 

 

4. 결과 및 결과값을 다시 데이터프레임에 저장

y_pred = kmeans.fit_predict(X)

# 여기서는 다른 머신러닝과 다르게 predict 대신 fit_predict를 사용한다

df['Group']  = y_pred
df

# 데이터 프레임에 그룹이라는 컬럼으로 그루핑된것을 확인할수있다

'Python > Machine Learning' 카테고리의 다른 글

Hierarchical clustering  (0) 2022.12.05
Decision Tree / Random Forest  (0) 2022.12.02
Grid Search  (0) 2022.12.02
Support Vector Machine  (0) 2022.12.02
K-NN  (0) 2022.12.02