У вас есть массив X_scaled
входных значений (и, возможно, массив X
исходных значений до масштабирования) и массив pred_labels
меток кластера. Значение n_clusters_
будет на единицу больше, чем значение len(set(pred_labels))
, если некоторые выборки не были назначены кластеру и были отнесены к категории шумов. Но два массива имеют одинаковое количество элементов в одинаковом порядке, поэтому вы можете искать значения в массиве pred_labels
для каждого элемента в массиве X_scaled
, например, pred_labels[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)]