在python中的DBSCAN中查找属于集群的点

在python中的DBSCAN中查找属于集群的点,python,machine-learning,unsupervised-learning,dbscan,Python,Machine Learning,Unsupervised Learning,Dbscan,大家好,我在一组点上安装了DBSCAN模型(4953点)。现在我需要找到属于不同簇的点,即所有输入值都属于哪些簇。我总共有10个簇。我怎样才能找到这个 db = DBSCAN(eps=0.0003,min_samples=20,n_jobs=-1).fit(X_scaled) y_pred = db.fit_predict(X_scaled) pred_labels = db.labels_ print(len(pred_labels)) n_clusters_ = len(set(pred_l

大家好,我在一组点上安装了DBSCAN模型(4953点)。现在我需要找到属于不同簇的点,即所有输入值都属于哪些簇。我总共有10个簇。我怎样才能找到这个

db = DBSCAN(eps=0.0003,min_samples=20,n_jobs=-1).fit(X_scaled)
y_pred = db.fit_predict(X_scaled)
pred_labels = db.labels_
print(len(pred_labels))
n_clusters_ = len(set(pred_labels))- (1 if -1 in pred_labels else 0)
print(n_clusters_)
plt.scatter(list(range(len(df_median2))),X_scaled[:,0],c=y_pred, cmap='Paired')
plt.ylim(0.1,0.4)

上面是代码。

您有输入值的
X\u缩放
数组(可能还有缩放前原始值的
X
数组)和簇标签的
pred\u标签
数组。如果某些样本未分配给簇,且被归类为噪声,则
n_簇的值将比
len(set(pred_标签))
的值高一个。但是这两个aray具有相同顺序的相同元素数,因此您可以在
pred_标签
数组中查找
X_缩放
数组中每个元素的值,例如,
pred_标签[0]
将返回第一个样本的集群标签。如果在任何标签中看到
-1
,则这些标签不是簇标签,而只是表示未分配给任何簇的噪声样本的一种方式

还可以连接两个阵列,以便将簇标签与原始样本并排保存:

import numpy as np
samples_w_lbls = np.concatenate((X_scaled,pred_labels[:,np.newaxis]),axis=1)
然后,可以将该组合数组筛选为具有特定群集标签值的行:

#Get rows with cluster label value of 5:
filter = np.asarray([5])
samples_w_lbls[np.in1d(samples_w_lbls[:,-1], filter)]