我想使用HDBSCAN聚类技术来预测异常值。我已经训练了我的模型来优化参数,但是当我对新数据应用approximate_predict时,我得到了与原始模型中不同的聚类和标签。我将在这里解释流程。
我有一个数据集,如下所示:

我应该注意到,这个数据集有我人工添加的异常值,目的是优化参数。然后,我申请:
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这里,我的测试标签如下: array( -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()

我们可以观察到我们有不应该有的异常值。
我真的不知道approximate_predict是如何做我的集群,但它似乎不工作,有人可以帮助我?
谢谢!
发布于 2021-07-01 21:04:18
我也有同样的问题。删除cluster_selection_epsilon作为参数,只使用min_samples和min_cluster_size来调优集群。这对我很管用。
https://stackoverflow.com/questions/60815892
复制相似问题