Проблемы с HDBSCAN и приблизительным прогнозом - PullRequest
0 голосов
/ 23 марта 2020

Я бы хотел использовать метод кластеризации HDBSCAN для прогнозирования выбросов. Я обучил свою модель оптимизировать параметры, но затем, когда я применяю оканчивать на новые данные, я получаю различные кластеры и метки, которые есть в моей исходной модели. Я объясню здесь процесс.

У меня есть набор данных, который выглядит следующим образом:

enter image description here

Я должен заметить, что это В набор данных искусственно добавлены выбросы, с целью оптимизации параметров. Затем я применяю:

clusterer = hdbscan.HDBSCAN(min_cluster_size=10, gen_min_span_tree=True, 
                            cluster_selection_epsilon=0.1,min_samples=1,allow_single_cluster=True, prediction_data=True, leaf_size=30)
clusterer.fit(X_scaled)

Получение трех кластеров (включая кластер выбросов -1):

enter image description here

Здесь вы можете Посмотрите, как выглядит кластеризация:

enter image description here

После этого я создаю фрейм данных, который я назвал "new_observation", который на самом деле представляет собой некоторые случайные наблюдения, взятые из исходный набор данных, и я применяю:

test_labels, strengths = hdbscan.approximate_predict(clusterer, new_observation)
test_labels

Здесь мои тестовые метки выглядят так: массив ([-1, 56, 150, -1])

Что означает, что из этих наблюдений, он обнаруживает два выброса и два наблюдения, отнесенные к кластерам, которых у меня нет.

Более того, взглянем на график так:

from matplotlib import cm
cmap = cm.get_cmap('Set1')
plt.scatter(x='wind_speed',y='temperature',data=X_scaled, c=clusterer.labels_, cmap=cmap)
plt.scatter(x='wind_speed',y='temperature',data=new_observation, c=test_labels, cmap=cmap, s=120)
plt.show()

enter image description here

Мы можем наблюдать, что у нас есть выбросы, которых у нас не должно быть.

Я действительно не знаю, как приблизительный_предик делает мою кластеризацию, но, кажется, не работает, кто-то может пожалуйста, помогите мне ???

Спасибо !!!!

...