Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
Tags
- 튜닝
- 머신러닝
- 실기
- 프로그래머스
- level 1
- Kaggle
- sklearn
- 파이썬
- 빅데이터 분석 기사
- 데이터 분석
- R
- Python
- 카카오
- matplotlib
- 알고리즘
- 빅분기
- SQL
- python3
- level 2
- 코딩테스트
- pandas
- seaborn
- Numpy
- 오라클
- 실습
- oracle
- Oracel
Archives
- Today
- Total
라일락 꽃이 피는 날
[Sklearn] 군집화 본문
728x90
1. K-Means Clustering
군집화에서 가장 대중적으로 사용되는 알고리즘이다.
centroid라는 중점을 기준으로 가장 가까운 포인트들을 선택하는 군집화 기법이다.
사용 예시) 스팸 문자 분류, 뉴스 기사 분류

from sklearn.cluster import KMeans
kmeans = KMeans(n_clusters=3)
cluster_data = kmeans.fit_transform(df.loc[:, 'sepal length (cm)':'petal width (cm)'])



2. DBSCAN (밀도 기반 클러스터링)
DBSCAN (Density-based spatial clustering of applications with noise)
밀도가 높은 부분을 클러스터링 하는 방식이다.
어느 점을 기준으로 반경 x내에 점이 n개 이상 있으면 하나의 군집으로 인식하는 방식이다.
KMeans 에서는 n_cluster의 갯수를 반드시 지정해 주어야 하나, DBSCAN에서는 필요없다.
기하학적인 clustering도 잘 찾아낸다.

from sklearn.cluster import DBSCAN
dbscan = DBSCAN(eps=0.6, min_samples=2)
dbscan_data = dbscan.fit_predict(df.loc[:, 'sepal length (cm)':'petal width (cm)'])

실루엣 스코어 (군집화 평가)
- 클러스터링의 품질을 정량적으로 평가해 주는 지표이다.
- 실루엣 스코어는 각 샘플의 클러스터 내부 거리의 평균 (a)와 인접 클러스터와의 거리 평균 (b)을 사용하여 계산한다.
- 한 샘플의 실루엣 스코어는 (b - a) / max(a, b) 이다.
- 가장 좋은 값은 1이고 최악의 값은 -1이다.
- 0 근처의 값은 클러스터가 오버랩되었다는 것을 의미한다.
- 음수 값은 샘플이 잘못된 클러스터에 배정되었다는 것을 의미한다.
from sklearn.metrics import silhouette_samples, silhouette_score
score = silhouette_score(data_scaled, kmeans.labels_)
score # 0.44366157397640527
samples = silhouette_samples(data_scaled, kmeans.labels_)
samples[:5] # array([0.73318987, 0.57783809, 0.68201014, 0.62802187, 0.72693222])
빨간 점선은 평균 실루엣 계수를 의미한다.




728x90
'데이터 분석 > Python' 카테고리의 다른 글
Kmeans 군집 분류 (0) | 2021.05.27 |
---|---|
회귀분석 (0) | 2021.05.27 |
[Sklearn] 차원 축소 (0) | 2021.05.21 |
[Sklearn] Hyperparameter 튜닝 (0) | 2021.05.17 |
[Sklearn] Cross Validation (0) | 2021.05.17 |