0

hdbscan を使用して、Python Jupyter ノートブックのデータセット内のクラスターを検索しています。

import pandas as pandas
import numpy as np
data = pandas.read_csv('data.csv')

そのデータは次のようになります。

データ

import hdbscan
clusterSize = 6
clusterer = hdbscan.HDBSCAN(min_cluster_size=clusterSize).fit(data)

そしてイェーイ!すべてがうまくいくようです!

次に、いくつかの結果を確認したいので、これらの結果をデータ フレームに追加します。

data.insert(18,"labels",clusterer.labels_)
data.insert(19,"probabilities",clusterer.probabilities_)

しかし、待ってください。確率が 0 のクラスターのラベルが付いた行があります。クラスター内のどのオブジェクトも確率値 > 0 を持つべきではありませんか? ああ、すべての確率は 0 または 1 にすぎません。

したがって、これをJupyterノートブックで再実行します。具体的には、再実行するだけです

clusterer = hdbscan.HDBSCAN(min_cluster_size=clusterSize).fit(data)

clusterer.labels_との値を確認しましたclusterer.probabilities_が、それらは異なります。これは一貫しているはずではありませんか?なぜそれらの値が変わるのでしょうか? 私が知らされていない隠された状態はありますか?しかし、今はclusterer.probabilities_0 から 1 の間の値を持っているので、それでいいのでしょうか?

したがって、私は明らかにこの hdbscan ツールにあまり詳しくありませんが、複数回実行したときに異なる回答が得られる理由と、ラベル付き/クラスター化されたオブジェクトの確率 0 が理にかなっている理由を誰かが説明できますか?

4

1 に答える 1

0

APIによると:

  • labels: fit() に指定されたデータセット内の各ポイントのクラスター ラベル。ノイズの多いサンプルには -1 というラベルが付けられます。
  • 確率: 各サンプルが割り当てられたクラスターのメンバーである強度。ノイズ ポイントの確率は 0 です。クラスター内のポイントには、クラスターの一部として保持される程度に比例して値が割り当てられます。

したがって、ゼロの確率には意味があります。また、同じデータに対する異なる実行の結果が同じであることも期待していましたが、正確にはそうではないようです。ウィキによると:

  • DBSCAN は完全に決定論的ではありません。複数のクラスターから到達可能な境界点は、データが処理される順序に応じて、いずれかのクラスターの一部になる可能性があります。ほとんどのデータ セットとドメインでは、この状況は頻繁には発生せず、クラスタリングの結果にほとんど影響を与えません。[4] コア ポイントとノイズ ポイントの両方で、DBSCAN は決定論的です。DBSCAN* は、境界点をノイズとして扱うバリエーションであり、この方法により、完全に決定論的な結果と、密度接続コンポーネントのより一貫した統計的解釈を実現します。

したがって、特定のアルゴリズムを選択すると、クラスタリングを決定論的に修正するのに役立つ可能性があります。

于 2020-11-19T20:18:17.403 に答える