Как использовать HDBSCAN в python для обнаружения выбросов на графике?

#python #graph #networkx #outliers #hdbscan

Вопрос:

Я создал взвешенный график с помощью NETWORKX и хочу определить выбросы этого графика. В своей документации они показывают, как это сделать, проблема в том, что clusterer.labels_ не отображается список кластеров по порядку, чтобы я мог определить, какой узел является выбросом, чтобы удалить его. Как я могу это сделать?

 distance_matrix=np.array(A.todense())
clusterer = hdbscan.HDBSCAN(metric='precomputed')
clusterer.fit(distance_matrix)
clusterer.labels_

output: array([ 0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  1,  1,  1,  1,  1,  1,
    1,  1,  1,  1, -1], dtype=int64)
 

Комментарии:

1. Значения в clusterer.labels_ массиве действительно находятся в том же порядке, что и исходный distance_matrix массив, в который вы передали clusterer . Вы можете просто повторить и то, и другое и сопоставить первую точку с первой меткой и так далее. В выводе, который вы показали здесь, видно, что самая последняя точка в вашем массиве является единственной, которая считается помехой при этой процедуре подгонки.