例えば、私はベクトルx
とa
が最も近いneigbourです。それで、b
はその次に近い隣りです。 PytonやRには、[a, b]
のようなものを出力するパッケージがあります。これは、最も近い隣人(おそらく多数決による)であり、bは2番目に近い隣人です。2つ以上の最近傍を返すKNNアルゴリズム
0
A
答えて
2
これは、これらのメトリックツリーが構築されているものです。うち
import numpy as np
from sklearn.neighbors import KDTree
X = np.array([[1,1],[2,2], [3,3]]) # 3 points in 2 dimensions
tree = KDTree(X)
dist, ind = tree.query([[1.25, 1.35]], k=2)
print(ind) # indices of 2 closest neighbors
print(dist) # distances to 2 closest neighbors
:
[[0 1]]
[[ 0.43011626 0.99247166]]
そして、ちょうどにあなたがsklearnのKDTreeを(劇中のあなたのメトリックに応じて、BallTreeを考慮)を使用して、そのような単純なものを求めているとしてあなたの質問は読み込み
明確である:KNN 通常は、分類作業のためのメトリクスツリー(KDTree、BallTree)に基づくいくつかの事前構築アルゴリズムを指す。多くの場合、これらのデータ構造は、1が興味を持っている唯一のものです。
編集
私が正しくあなたのコメントを解釈する場合は、manhattan/taxicab/l1 metricを使用します。
これらの空間ツリーの互換性リストについては、hereを参照してください。
あなたはちょうどそのようにそれを使用します。
X = np.array([[1,1],[2,2], [3,3]]) # 3 points in 2 dimensions
tree = KDTree(X, metric='l1') # !!!
dist, ind = tree.query([[1.25, 1.35]], k=2)
print(ind) # indices of 2 closest neighbors
print(dist) # distances to 2 closest neighbors
アウト:
[[0 1]]
[[ 0.6 1.4]]
関連する問題
- 1. 最速の最近傍アルゴリズム
- 2. K最近傍アルゴリズム疑問
- 3. Pythonのインクリメンタルな最近傍アルゴリズム
- 4. MATLABの最近傍補間アルゴリズム
- 5. K最近傍
- 6. Scikit-learn KNN(K最近傍)Apache Sparkを使用して並列化
- 7. はIndexError:K最近傍のPythonのK最近傍
- 8. K最近傍を見つける
- 9. 処理中に最も近い近傍アルゴリズムを実行する方法
- 10. kNN - 計算された距離に基づいてトレーニング行列の最近傍点を見つける方法
- 11. UWPの最近傍レンダリング
- 12. PCAとKNNアルゴリズム
- 13. PostGis最近傍問合せ
- 14. Visual Studio 2010で6つ以上の最近のプロジェクトを表示
- 15. 緯度と経度に基づいて最近傍点を計算するアルゴリズム
- 16. 配列の3つ以上の最も近い数字
- 17. のKdツリー欠陥K最近傍
- 18. 移動ポイントの2D最近傍検索
- 19. 繰り返し(以上2)
- 20. SQL:2つ以上の一致を含むレコードを返す
- 21. Scipyラベルの近傍
- 22. 2つ以上のs式を返すClojureマクロ
- 23. 2行以上を返す2つのSQLサブクエリの結果を差し引く
- 24. サブクエリが2つ以上の値を返しました。エラー
- 25. サブクエリーが2つ以上の値を返しました。声明
- 26. MySQLサブクエリが2つ以上の行を返しました
- 27. サブクエリが2つ以上の値を返しました。
- 28. Rstudioの別の点へのベクトルのK最近傍点を見つける
- 29. 2つのポリゴンの最も近い点
- 30. 2つ以上のフォームを持つビュー
感謝。あなたはベクトルの要素の距離行列である私自身の距離メトリックを挿入することで私を助けてくれるのですか?例えば、2つのベクトル[x1、x2]と[y2、y2]がある場合、ベクトル間の距離を距離行列から要素ごとに求める距離メトリックを挿入することが可能です。したがって、xとyとの間の距離は| x1-y1 | + | x2-y2 |となる。 – spartan
floatを返すdisting関数dist(x、y)を使って 'tree = KDTree(X、metric = dist)' 'を試してみるとエラーが出ます:ValueError:metric PyFuncDistanceはKDTreeに対して無効です – spartan
@spartan – sascha