Python DBSCAN 집합 알고리즘 및 샘플 테스트 실현

집합 알고리즘 이란 무엇 입 니까?
집합 은 기계 학습 기술 로 데이터 점 의 그룹 과 관련된다.한 그룹의 데이터 점 을 지정 하면 우 리 는 집합 알고리즘 을 사용 하여 모든 데이터 점 을 특정한 그룹 으로 나 눌 수 있다.이론 적 으로 같은 그룹의 데이터 점 은 비슷 한 속성 과/또는 특징 을 가 져 야 하고 서로 다른 그룹의 데이터 점 은 고도 로 다른 속성 과/또는 특징 을 가 져 야 한다.집합 은 감독 없 이 학습 하 는 방법 으로 많은 분야 에서 자주 사용 하 는 통계 데이터 분석 기술 이다.
상용 알고리즘 은 K-MEANS,가우스 혼합 모델(Gaussian Mixed Model,GMM),자체 조직 매 핑 신경 망(Self-Organizing Map,SOM)을 포함한다.
파 이 썬 이 DBSCAN 집합 알고리즘 을 실현 하고 간단 한 사례 테스트 를 통 해
고밀도 의 핵심 샘플 을 발견 하고 그 중에서 팽창 덩어리 를 발견 하 다.
Python 코드 는 다음 과 같 습 니 다:

# -*- coding: utf-8 -*-
"""
Demo of DBSCAN clustering algorithm
Finds core samples of high density and expands clusters from them.
"""
print(__doc__)
#      
import numpy as np
from sklearn.cluster import DBSCAN
from sklearn import metrics
from sklearn.datasets.samples_generator import make_blobs
from sklearn.preprocessing import StandardScaler
import matplotlib.pyplot as plt
#        
centers = [[1, 1], [-1, -1], [1, -1]]
X, labels_true = make_blobs(n_samples=750, centers=centers, cluster_std=0.4,
                            random_state=0)
X = StandardScaler().fit_transform(X)
#   DBSCAN
db = DBSCAN(eps=0.3, min_samples=10).fit(X)
core_samples_mask = np.zeros_like(db.labels_, dtype=bool)
core_samples_mask[db.core_sample_indices_] = True
labels = db.labels_
#      
n_clusters_ = len(set(labels)) - (1 if -1 in labels else 0)
n_noise_ = list(labels).count(-1)
print('Estimated number of clusters: %d' % n_clusters_)
print('Estimated number of noise points: %d' % n_noise_)
print("Homogeneity: %0.3f" % metrics.homogeneity_score(labels_true, labels))
print("Completeness: %0.3f" % metrics.completeness_score(labels_true, labels))
print("V-measure: %0.3f" % metrics.v_measure_score(labels_true, labels))
print("Adjusted Rand Index: %0.3f"
      % metrics.adjusted_rand_score(labels_true, labels))
print("Adjusted Mutual Information: %0.3f"
      % metrics.adjusted_mutual_info_score(labels_true, labels,
                                           average_method='arithmetic'))
print("Silhouette Coefficient: %0.3f"
      % metrics.silhouette_score(X, labels))
#     
unique_labels = set(labels)
colors = [plt.cm.Spectral(each)
          for each in np.linspace(0, 1, len(unique_labels))]
for k, col in zip(unique_labels, colors):
    if k == -1:
        col = [0, 0, 0, 1]
    class_member_mask = (labels == k)
    xy = X[class_member_mask & core_samples_mask]
    plt.plot(xy[:, 0], xy[:, 1], 'o', markerfacecolor=tuple(col),
             markeredgecolor='k', markersize=14)
    xy = X[class_member_mask & ~core_samples_mask]
    plt.plot(xy[:, 0], xy[:, 1], 'o', markerfacecolor=tuple(col),
             markeredgecolor='k', markersize=6)
plt.title('Estimated number of clusters: %d' % n_clusters_)
plt.show()
테스트 결 과 는 다음 과 같다.
최종 결과 그림 그리 기:

구체 적 인 데이터:

이상 은 Python 이 DBSCAN 집합 알고리즘(간단 한 사례 테스트)을 실현 하 는 상세 한 내용 입 니 다.Python 집합 알고리즘 에 관 한 자 료 는 우리 의 다른 관련 글 을 주목 하 십시오!

좋은 웹페이지 즐겨찾기