DBSCAN Python - Как построить кластеры на основе среднего вектора? - PullRequest
0 голосов
/ 10 октября 2018

Привет, я получил среднее значение векторов и использовал DBSCAN для их кластеризации.Тем не менее, я не уверен, как мне составить график результатов, так как мои данные не имеют формат [x, y, z ...].

пример набора данных:

mean_vec = [[2.2771908044815063],
 [3.0691280364990234],
 [2.7700443267822266],
 [2.6123080253601074],
 [2.6043469309806824],
 [2.6386525630950928],
 [2.7034034729003906],
 [2.3540258407592773]]

Iиспользовал этот код ниже (из scikit-learn), чтобы достичь моих кластеров:

X = StandardScaler().fit_transform(mean_vec)
db = DBSCAN(eps = 0.15, min_samples = 5).fit(X)
core_samples_mask = np.zeros_like(db.labels_, dtype=bool)
core_samples_mask[db.core_sample_indices_] = True
labels = db.labels_

# Number of clusters in labels, ignoring noise if present.
n_clusters_ = len(set(labels)) - (1 if -1 in labels else 0)

print('Estimated number of clusters: %d' % n_clusters_)

возможно ли построить мои кластеры?сюжет из scikit-learn не работает для меня.Ссылка на Scikit-Learn можно найти здесь

1 Ответ

0 голосов
/ 11 октября 2018

по одномерным данным.Используйте оценку плотности ядра вместо DBSCAN.Это намного лучше подтверждается теорией и намного лучше понимается.DBSCAN можно рассматривать как быстрое приближение к KDE для многомерного случая.

В любом случае, построение одномерных данных не так сложно.Например, вы можете построить гистограмму .

Также кластеры обязательно будут соответствовать интервалам, поэтому вы также можете построить линии для (мин, макс) каждого кластера.

Вы можете даже злоупотреблять 2-мя точечными графиками.Просто используйте метку в качестве значения y.

...