【发布时间】:2022-01-03 00:35:34
【问题描述】:
我在python中使用了sklearn.dbscan,结果只给出了每个集群的标签,但我也想计算集群的置信度,或者只是集群之间的平均距离。
你们有什么想法吗?
【问题讨论】:
标签: python cluster-analysis dbscan
我在python中使用了sklearn.dbscan,结果只给出了每个集群的标签,但我也想计算集群的置信度,或者只是集群之间的平均距离。
你们有什么想法吗?
【问题讨论】:
标签: python cluster-analysis dbscan
我认为 Scikit 不支持此功能。集群置信度不是问题,因为 DBSCAN 不使用集群概率。不过,计算聚类距离相对简单。
import numpy as np
from sklearn.datasets import load_iris
from sklearn.cluster import dbscan
# Get data & 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 & 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)
【讨论】: