DBSCANのepsを決定するためのKnn距離プロット


9

DBSCANアルゴリズムに対してどのeps値を選択すればよいかを知るために、knn距離プロットを使用したいと思います。このページに基づく:

アイデアは、すべてのポイントからk個の最近傍への距離の平均を計算することです。kの値はユーザーによって指定され、MinPtsに対応します。次に、これらのk距離は昇順でプロットされます。目的は、最適なepsパラメータに対応する「膝」を決定することです。

numpy / sklearnでpythonを使用すると、次の点が得られます。6-knnの距離は次のとおりです。

X = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]])
nbrs = NearestNeighbors(n_neighbors=len(X)).fit(X)
distances, indices = nbrs.kneighbors(X)

# Indices

[[0 1 2 3 4 5]
 [1 0 2 3 4 5]
 [2 1 0 3 4 5]
 [3 4 5 0 1 2]
 [4 3 5 0 1 2]
 [5 4 3 0 1 2]]

# Distances
[[ 0.          1.          2.23606798  2.82842712  3.60555128  5.        ]
[ 0.          1.          1.41421356  3.60555128  4.47213595  5.83095189]
[ 0.          1.41421356  2.23606798  5.          5.83095189  7.21110255]
[ 0.          1.          2.23606798  2.82842712  3.60555128  5.        ]
[ 0.          1.          1.41421356  3.60555128  4.47213595  5.83095189]
[ 0.          1.41421356  2.23606798  5.          5.83095189  7.21110255]]

次に、平均距離を計算しました:

distances.mean()
2.9269575028354495

問題は、pythonを使用して、y軸の距離とx軸の距離に応じた点の数でそれらと同じプロットをどのように正確に表すことができるか理解できないことです。

助けてくれてありがとう。


![ここに画像の説明を入力してください ](i.stack.imgur.com/KFDbs.png)隣接するポイントグラフにこの形状があるのはなぜですか?私を助けてください!!!
Dung Le

回答:


8

君は

  1. その行列の最後の列を取る
  2. 降順で並べ替え
  3. プロットインデックス、距離
  4. 膝が見えることを望みます(距離がうまく機能しない場合。距離がない場合もあります)

同じプロットで、私はこれを異なるkに対して行いますか?または例のように1つのプロットに対して1つのkだけですか?「インデックス」とはどういう意味ですか
マークランベルティ2016

6ポイントしかないときに6NNを使用するのは、もちろんナンセンスです。適切なkのためにそれを行います。「配列インデックス」のようなインデックス。プロットするには2Dが必要だからです。
QUITあり--Anony-Mousse 2016年

そして、距離行列の最後の列のみを使用します。例では、それらは、平均距離について話なので...
マルク・ランベルティ

その記事が誤っている、少なくとも別の場所(あなたがシードを設定する必要はありません)に
Anony-ムース-終了しました

1
kは1つしかありません。DBSCANペーパーを使ってみませんか?しかし、さまざまな低品質のWebサイトをマッシュアップしますか?
QUITあり--Anony-Mousse 2016年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.