DBSCAN を適用して Denisty Based Cluster of data を作成する vb.net または C#.net のライブラリまたはコードにアドバイスを提供するために、あなたのサポートが必要です。GPS データがあり、DBSCAN アルゴリズムを使用して滞在ポイントを見つけたいと考えています。しかし、私はアルゴリズムの技術的な部分の多くを理解していません.
2 に答える
アルゴリズムはwikipediaで非常によく説明されているため、探しているものかどうかはわかりません。アルゴリズムの説明または C# での翻訳 (または優れたライブラリ) が必要ですか?
一般的なクラスタリング アルゴリズムも参照できます。
アルゴリズム
イプシロンを選択し、クラスターを開始する要素の数が 4 であるとします。
距離関数、DBSCAN 関数、およびクラスター展開関数を定義する必要があります。
ウィキペディアから:
DBSCAN(D, eps, MinPts)
C = 0
for each unvisited point P in dataset D
mark P as visited
N = getNeighbors (P, eps)
if sizeof(N) < MinPts
mark P as NOISE
else
C = next cluster
expandCluster(P, N, C, eps, MinPts)
expandCluster(P, N, C, eps, MinPts)
add P to cluster C
for each point P' in N
if P' is not visited
mark P' as visited
N' = getNeighbors(P', eps)
if sizeof(N') >= MinPts
N = N joined with N'
if P' is not yet member of any cluster
add P' to cluster C
ポイントのリストがあります:
最初: 点をランダムに選択します:
ポイントの数が 4 の場合、イプシロンでテストします (イプシロンは円の半径です)。はいの場合はクラスターを開始します (緑)、そうでない場合はノイズとしてマークします (赤):(未訪問の各ポイントの関数 DBSCAN) 矢印はすべてのポイントを示しますあなたが訪問した
次に: クラスターを展開します。クラスターが見つかったら、すべてのポイントを緑色でマークし、このクラスター内の他のポイントを確認します
注: 以前のノイズ ポイントは、クラスター内にある場合は緑に変更できます。
2つの赤い点は実際にはクラスター内にあります...
すべてのポイントを通過したら、停止します
OPTICS
、その拡張によりDBSCAN
、イプシロンパラメータを選択するのが難しい場合があります(ただし、地理データがあるため、実際にはかなり簡単な場合があります。1kmまたは適切と思われるものに設定するだけです)。
これは、のかなり優れた強力な拡張機能ですDBSCAN
が、残念ながら、実装が少し難しくなります。