как получить уверенность в кластеризации, созданной dbscan в python

#python #cluster-analysis #dbscan

Вопрос:

Я использовал sklearn.dbscan в python, и результат дает только метки каждого кластера, но я также хочу рассчитать степень достоверности кластеризации или просто среднее расстояние кластера друг от друга.

У вас, ребята, есть какие-нибудь идеи?

Ответ №1:

Я не думаю, что эта функциональность не поддерживается Scikit. Кластерная уверенность-это не вещь, так как DBSCAN не использует кластерные вероятности. Однако расчет расстояний между кластерами относительно прост.

 import numpy as np from sklearn.datasets import load_iris from sklearn.cluster import dbscan   # Get data amp; labels data = load_iris()['data'] labels = dbscan(data)[1]  import numpy as np from sklearn.datasets import load_iris from sklearn.cluster import dbscan   # Get data amp; labels data = load_iris()['data'] labels = dbscan(data)[1]  # Initialize results cluster_means = np.zeros((len(set(labels)) - 1, data.shape[1])) cluster_distances = np.zeros((len(data), len(set(labels)) - 1))  # Loop through clusters for i, cluster in enumerate(set(labels)):  # Skip noise  if cluster == -1:  continue   # Get cluster mean  cluster_mean = np.mean(data[labels == cluster], axis=0)   # Set cluster mean  cluster_means[i, :] = cluster_mean   # Set cluster distances  cluster_distances[:, i] = np.linalg.norm(data - cluster_mean, axis=1)