k-nearest neighborアルゴリズムのシリアルC/C++実装はどこにありますか?
これを持っているライブラリを知っていますか?
私はopenCVを見つけましたが、実装はすでに並行しています。
シリアル実装から始め、pthreads openMPとMPIで並列化したいと考えています。
K-nearest neighbor C/C++の実装
おかげで、
k-nearest neighborアルゴリズムのシリアルC/C++実装はどこにありますか?
これを持っているライブラリを知っていますか?
私はopenCVを見つけましたが、実装はすでに並行しています。
シリアル実装から始め、pthreads openMPとMPIで並列化したいと考えています。
K-nearest neighbor C/C++の実装
おかげで、
ANNはどうですか? http://www.cs.umd.edu/~mount/ANN/。私はかつてkdtree実装を使用しましたが、他にもオプションがあります。
「ANNはC++で書かれたライブラリで、任意の高次元で正確かつ近似的な近似検索のためのデータ構造とアルゴリズムをサポートしています。
ありがとう、ANNは良い出発点です。 – alexsardan
これを実現する最も簡単な方法は、すべての要素およびストアK最寄りをループです。 (ちょうど比較して)。これの複雑さはO(n)
であまり良くありませんが、前処理は必要ありません。今は本当にあなたのアプリケーションに依存します。 knnを検索する領域を分割するには、空間インデックスを使用する必要があります。いくつかのアプリケーショングリッドベースの空間構造は、ちょうど良い(ちょうどあなたの世界を固定ブロックに分割し、最初に閉ブロック内でのみ検索する)。これは、エンティティが均等に分散されている場合に適しています。より良いアプローチは、KDツリーのようないくつかの階層構造を使用することです...それは本当にすべてあなたがこれらのプレゼンテーションでの擬似コードの外観などの詳細は、
が必要なものに依存します:
返事をありがとう。実際には、すでに実装されているバージョンから始めなければなりません。 – alexsardan
私は最近隣の検索でC++ implementation for a KD-treeを書きました。プライオリティキューを追加することで、K最近隣のユーザのために簡単に拡張できます。
アップデート:私は何の問題についてはN次元
ありがとうございますが、ライセンス情報は表示されません。 –
におけるk最近傍探索のためのサポートを追加し、このアルゴリズムを適用するつもりですか? KNNは本当にシンプルで、独自のアプローチを実装しようとすることができます。 –