Я бы хотел использовать метод кластеризации HDBSCAN для прогнозирования выбросов. Я обучил свою модель оптимизировать параметры, но затем, когда я применяю оканчивать на новые данные, я получаю различные кластеры и метки, которые есть в моей исходной модели. Я объясню здесь процесс.
У меня есть набор данных, который выглядит следующим образом:
Я должен заметить, что это В набор данных искусственно добавлены выбросы, с целью оптимизации параметров. Затем я применяю:
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):
Здесь вы можете Посмотрите, как выглядит кластеризация:
После этого я создаю фрейм данных, который я назвал "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()
Мы можем наблюдать, что у нас есть выбросы, которых у нас не должно быть.
Я действительно не знаю, как приблизительный_предик делает мою кластеризацию, но, кажется, не работает, кто-то может пожалуйста, помогите мне ???
Спасибо !!!!