njs03332 / ml_study

3 stars 0 forks source link

2022/9/1~2022/9/14 #42

Open njs03332 opened 2 years ago

njs03332 commented 2 years ago
스크린샷 2022-09-01 오후 11 16 43
njs03332 commented 1 year ago

9.1.1 k-평균

k-평균 알고리즘

센트로이드 초기화 방법

givitallugot commented 1 year ago

9.1.1 k-평균

k-평균

from sklearn.cluster import KMeans

k = 5
kmeans = KMeans(n_clusters=k, random_state=42)
y_pred = kmeans.fit_predict(X)

kmeans.clustercenters

array([[-2.80389616, 1.80117999],

[ 0.20876306, 2.25551336],

[-2.79290307, 2.79641063],

[-1.46679593, 2.28585348],

[-2.80037642, 1.30082566]])


- 클러스터의 결정 경계를 그려보면 보로노이 다이어그램을 얻을 수 있음
- 샘플은 대부분 적절한 클러스터에 할당
<img width=400 src=https://user-images.githubusercontent.com/50584633/190105267-af2ae3c9-b0f8-4214-a949-e983af94a544.png>

- 하드 군집: 샘플을 하나의 클러스터에 할당하는 것
- 소프트 군집: 클러스터마다 샘플에 점수를 부여하는 것 ex 샘플과 센트로이드 사이의 거리, 가우시안 방사 기저 함수와 같은 유사도 점수
- transform() 메서드는 샘플과 각 센트로이드 사이의 거리 반환
```python
kmeans.transform(X_new)
# array([[2.81093633, 0.32995317, 2.9042344 , 1.49439034, 2.88633901],
#        [5.80730058, 2.80290755, 5.84739223, 4.4759332 , 5.84236351],
#        [1.21475352, 3.29399768, 0.29040966, 1.69136631, 1.71086031],
#        [0.72581411, 3.21806371, 0.36159148, 1.54808703, 1.21567622]])
# 첫 번째 샘플이 첫 번째 센트로이드에서 2.81, 두 번째 센트로이드에서 0.33 ... 거리 만큼 떨어짐
danbi5228 commented 1 year ago

9.1 군집