DBSCAN의 이해
DBSCAN은 밀도 기반 클러스터링 방법으로
데이터 포인트를 찍고 해당 포인트 주변에 다른 데이터 포인트가 얼마나 있는지를 기준으로
클러스터를 형성하는 방법으로 데이터 포인트의 근처의 포인트가 기준치를 미달하면 군집 형성을
멈추고 새로운 군집을 형성하며
최종적으로 아무 군집에도 포함되지 못한 포인트를 이상치로 간주한다
사용하기
정규화
https://bigcat5312.tistory.com/94
파이썬 머신러닝 데이터 정규화
https://bigcat5312.tistory.com/80 파이썬 머신러닝 지도학습 - 데이터 분리 (sklearn - train_test_split import from sklearn.model_selection import train_test_split train_test_split 데이터를 머신러닝에 사용하기 위해서 학습 데
bigcat5312.tistory.com
를 참고해서
데이터 x를 정규화 한다
import 및 선언
#임포트
from sklearn.cluster import DBSCAN
#선언
model = DBSCAN(eps= , min_samples= , metric= ,algorithm= , leaf_size= )
모델의 파라미터를 설명하자면
- eps (Epsilon): 기본값 0.5 , 클러스터링을 수행할 때 고려되는 거리의 최대 반경
- min_samples: 기본값 5 , 최소 이웃 데이터 포인트의 개수를 나타냅니다.
- metric: 기본값 유클리드, 거리를 계산하는 방법
- algorithm: 기본값 'auto' , auto, ball_tree, kd_tree, brute 중 하나를 고를 수 있음
- leaf_size: ball_tree 또는 kd_tree 알고리즘의 경우 기본값 30, 리프 노드의 최대 크기를 지정
학습
#학습
model.fit(x)
다른 모델과 동일한 방법으로 학습을 시킨다
이후
model.labels_
코드로 클러스터링 결과를 확인 할 수 있다
elbow method 이용하기
DBSCAN도 최적의 하이퍼 파라미터를 찾기 위해 elbow method를 사용 할 수 있다
# 필요한 모델 임포트
from sklearn.neighbors import NearestNeighbors
# 각점과 근처 n개 점과의 평균 거리
n = #n 개의 점 지정
knnDist = NearestNeighbors(n_neighbors = n+1).fit(x) #계산시 스스로를 포함해서 n+1을 해줌
distances, _ = knnDist.kneighbors(x)
# 평균 거리
dist = np.mean(distances[:,1:], axis = 1)
# 정렬
dist = np.sort(dist)
# 그래프
plt.figure(figsize = (10,8))
plt.plot(dist)
plt.grid()
plt.show()
여기서 Y축은 거리의 구간이고 X축은 평균 거리를 의미한다
이 그래프를 보고 적절한 Y축의 값을 eps로 넣어주면 된다
'파이썬 > 머신러닝-비지도학습' 카테고리의 다른 글
파이썬 머신러닝 비지도학습 - 클러스터링 (K-means (0) | 2023.09.25 |
---|---|
파이썬 머신러닝 비지도학습 - 차원축소 - t-SNE (1) | 2023.09.21 |
파이썬 머신러닝 비지도학습 - 차원축소 - 주성분 분석(PCA) (0) | 2023.09.21 |