問題タブ [knn]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
4038 参照

c# - C# での K-Nearest Neighbor と OpenCV について

KNN を実行する OpenCV に組み込み関数があるかどうか疑問に思っていますか?

存在する場合、どうすれば対処できますか..検索しましたが、有用なものは見つかりませんでした

感謝

0 投票する
3 に答える
18563 参照

machine-learning - ANN、SVM、およびKNN分類器の違いは何ですか?

リモートセンシング画像分類を行っています。私はオブジェクト指向の方法を使用しています。最初に画像をさまざまな領域にセグメント化し、次に色、形状、テクスチャなどの領域から特徴を抽出します。リージョン内のすべての特徴の数は30であり、通常は全部で2000のリージョンがあり、クラスごとに15のサンプルを持つ5つのクラスを選択します。

要約すれば:

  • サンプルデータ1530
  • テストデータ197530

適切な分類子を選択するにはどうすればよいですか?3つの分類器(ANN、SVM、およびKNN)がある場合、より適切な分類のためにどちらを選択する必要がありますか?

0 投票する
0 に答える
213 参照

machine-learning - Johnson Lindenstrauss Lemmaを使用するK-NN実装はありますか?

この方法を使ったK-NN実装はあるのだろうか。Python や Ruby は、それ以上に素晴らしいものになるでしょう。

0 投票する
2 に答える
1645 参照

machine-learning - K最近傍にスパースデータセットがある場合の距離の計算方法

非常にスパースなデータに対して、K最近傍アルゴリズムを実装しています。テストインスタンスとトレーニングセット内の各サンプルの間の距離を計算したいのですが、混乱しています。

トレーニングサンプルのほとんどの機能がテストインスタンスに存在しないか、その逆であるためです(機能がありません)。

この状況で距離を計算するにはどうすればよいですか?

0 投票する
1 に答える
6366 参照

r - R knn 大規模データセット

Rでknnを使用して(いくつかのパッケージ(knnflexclass)を使用)、8つの変数に基づいてデフォルトの確率を予測しようとしています。データセットは 8 列の約 100k 行ですが、私のマシンは 10k 行のサンプルに問題があるようです。データセット > 50 行 (つまり) で knn を実行するための提案はありirisますか?

編集:

明確にするために、いくつかの問題があります。

1)classおよびknnflexパッケージの例は少し不明確であり、予測したい変数とモデルのトレーニングに使用したいデータを与える randomForest パッケージに似た実装があるかどうか興味がありました:

次に、モデルを使用して、テスト データ セットを使用してデータを予測します。

knn2)モデルを構築するためにトレーニングとテストデータが必要な理由がよくわかりません。私が知る限り、パッケージはマトリックス ~ を作成しnrows(trainingData)^2ます。これは、予測データのサイズの上限でもあるようです。5000 行を使用してモデルを作成しました (それ以上では # メモリ割り当てエラーが発生しました) が、5000 行を超えるテスト セットを予測できませんでした。したがって、次のいずれかが必要です。

a)トレーニングセットで5000行以上を使用する方法を見つける

また

b) 完全な 100k 行でモデルを使用する方法を見つけます。

0 投票する
2 に答える
6167 参照

weka - Java / Wekaのk最近傍法に別の距離測定を使用するにはどうすればよいですか?

私はweka(http://weka.sourceforge.net/doc.dev/weka/classifiers/lazy/IBk.html)でk最近傍分類器を使用しています。

ユークリッド距離がデフォルトの距離関数だと思います。その関数を変更して、自分の距離関数で同じクラスを使用するにはどうすればよいですか?

ありがとう、

マルコ

0 投票する
4 に答える
3633 参照

recommendation-engine - インクリメンタル SVD レコメンダー システムを使用してレコメンデーションを作成する方法

Simon Funk のアルゴリズムに従って構築されたレコメンデーション システムをテストしています。(Timely Dev によって書かれました。http://www.timelydevelopment.com/demos/NetflixPrize.aspx )

問題は、すべてのインクリメンタル SVD アルゴリズムが user_id と movie_id の評価を予測しようとすることです。しかし、実際のシステムでは、これによりアクティブなユーザーに新しいアイテムのリストが生成されるはずです。Incremental SVD の後に kNN を使用した人もいると思いますが、何かを見逃していなければ、Incremental SVD でモデルを作成した後に kNN を使用すると、パフォーマンスの向上がすべて失われます。

Incremental SVD/Simon Funk メソッドを使用した経験のある方は、新しい推奨アイテムのリストを作成する方法を教えてください。

0 投票する
2 に答える
6553 参照

matlab - 分類器の精度を見つける方法

KNN分類器を使用していますが、MATLABでknnclassifyが分類を行っていることがわかりました。

コード:

私が今直面している問題は、knnclassifyがポイントを分類して値を与えるだけですが、この分類の精度を見つけたいと思います。

私はこのようなことを試みました:

それは私にこのエラーを与えています:

分類器の精度を見つけるためのより良い方法はありますか、または上記のコードを改善するためにどのような修正を行う必要がありますか?

0 投票する
3 に答える
5920 参照

c++ - 「std::priority_queue」要素を逆順に取得していますか?

特定のクエリ ポイントに最も近いポイントのリストを作成する K 最近傍クエリ メソッドをいくつか作成しました。隣接要素のリストを維持するためにstd::priority_queue、最上位の要素がクエリ ポイントから最も遠い隣接要素になるように を使用します。このようにして、現在調査中の新しい要素をプッシュする必要があるかどうか (現在の最も遠い隣接要素よりも距離が短い場合) を認識し、優先度キューに K 個を超える要素がある場合に最も遠い要素を pop() できます。

これまでのところ、すべて順調です。ただし、要素を出力するときは、最も近いものから最も遠いものへと並べたいと思います。現在、単純にプライオリティ キューからすべての要素をポップし、(反復子を介して) 出力コンテナーに配置します。これにより、最も遠いものから最も近いものへと順序付けられたポイントのシーケンスが生成されます。次に、std::reverse出力反復子の範囲を呼び出します。 .

簡単な例として、プライオリティ キューを使用する線形検索を次に示します (明らかに、私が使用する実際の最近傍クエリ方法ははるかに複雑です)。

上記は、1 つのことを除いてすべてダンディです。出力イテレータの型が双方向であり、本質的に事前に割り当てられたコンテナーを指している必要があります。さて、出力イテレータによって規定された範囲内に出力を格納するというこのプラクティスは、優れており、かなり標準的でもあります (たとえばstd::copy、他の STL アルゴリズムはその良い例です)。ただし、この場合、STL コンテナーおよび iostream に提供されているような back-inserter イテレーターを使用できるようにするために、フォワード出力イテレーター・タイプのみを要求できるようにしたいと考えています。

したがって、これは要約すると、出力イテレータにコンテンツをダンプする前に、プライオリティ キューを逆にすることになります。したがって、これらは私が思いついたより良いオプションです。

  • を作成しstd::vector、その中の優先度キューの内容をダンプし、ベクトルの逆反復子を使用して要素を出力反復子にダンプします。

  • std::priority_queueをソートされたコンテナー (例: ) に置き換えてからstd::multimap、適切なトラバーサル順序を使用してコンテンツを output-iterator にダンプします。

他に合理的な選択肢はありますか?

std::multimap上記の2番目のオプションのように、このアルゴリズムや他のアルゴリズムの以前の実装で aを使用していました。しかし、 に切り替えるとstd::priority_queue、パフォーマンスが大幅に向上しました。したがって、隣人のリストを維持するために優先度キューを使用する方が、並べ替えられた配列に依存するよりもはるかに優れているように思われるため、2 番目のオプションは使用したくありません。std::vectorところで、私は で並べ替えを維持しているも試しましたstd::inplace_merge。これはマルチマップよりも優れていましたが、優先キューとは一致しませんでした。

この時点での私の最良のオプションである最初のオプションについては、このデータの二重転送 (キュー -> ベクトル -> 出力) を行う必要があるのは無駄に思えます。これを行うにはもっと簡単な方法が必要だと思う傾向があります...私が見逃しているもの..

最初のオプションは、このアプリケーションではそれほど悪くはありませんが (それに先行するアルゴリズムの複雑さを考慮すると)、この二重のメモリ転送を回避するトリックがあれば、それについて知りたいです。

0 投票する
1 に答える
2258 参照

android - openCV Android:knnMatcherは1つの記述子に一致するもののみを返します

修士論文のために、Android用のロゴ検出アルゴリズムを実装する必要があります。私は現在、NDKでopenCV androidライブラリを使用しており、SURFを使用してこれらのキーポイントのキーポイントとセットアップ記述子を検出することができました。

私にとっての次のステップは、knnMatchを使用して、すべてのキーポイントに最も近い2つの一致を見つけることです。その後、2番目の一致と比較して最良のknn一致があまり区別できない一致を破棄します(これら2つの距離の比率が低すぎます)。私のコードの一部:

ここでの私の問題は、たとえばクエリロゴに500個の記述子があり、電車のロゴに400個の記述子がある場合、knnは500個の一致を返しますが、すべてが1つの同じキーポイントに対するものです。通常、すべての記述子に対して2つの最適な一致が返されるため、500の異なる記述子が返されますが、1つの同じ記述子に対して500倍の最適な一致が返されます。

したがって、これらのknnマッチを描画すると、常に同じキーポイント間に500回描画された1つのマッチラインがあります。

単純にベストマッチを返すシンプルマッチャーを試してみると、より多くの行が得られます。画像をそれ自体と比較してこれをテストしました。Knnは、この1行を返します。ここで、単純な一致は500の一致すべてを描画しますが、この場合はもちろん正しいです。

この同様の問題が処理された投稿が見つかりません。誰かがこの問題を抱えているか、ここで私が間違っていることを知っていますか?

よろしくお願いします。