2017-10-06 12 views
0

私は4つの異なるデータセットを持っています。各データセットには、1つまたは2つのクラスのいずれかに属する2次元のサンプルが含まれています。各サンプルのクラスラベル(1または2)は最後の列にあります。第1列と第2列には、サンプルを表す2D点の座標が含まれます。私の仕事は、あるkの最高値を見つけるのk-NNの場合kの最良値を見つける方法k-NNについては?

  1. 、およびScikit

私は機械学習とのpythonに新しいですを使用して1-NNのそれと比較します。最良のkを見つける方法を教えてください

答えて

1

あなたの場合、khyperparameterです。それを調整するには、データセットをトレインバケットとテストバケットに分割し、値の範囲k(例えば1〜20)に対してテストの各要素を複数回に分類する必要があります。

次に、すべてのkの精度値をプロットし、十分小さいkを選択すると、「良い」精度が得られます。通常、人々はチャートの傾きを見て、前の値k-1のような最小のkを選択すると精度が大幅に低下します。

kは、データに大きく依存することに注意してください。たとえば、下の表(クレジット:https://kevinzakka.github.io/2016/07/13/k-nearest-neighbor/)では、kという良い選択は、誤った分類エラーが最も少ないため、8になります。

enter image description here

このリンクは、同様に役に立つかもしれません:あなたの応答のためのhttps://en.wikipedia.org/wiki/K-nearest_neighbors_algorithm#Parameter_selection

+0

感謝。私は別の疑問を持っている...私はkの値を見つけるが、私は1つ以上のkに対して同じ精度を得た。だから、この条件でkを選ぶべきですか?最小k値または最大k値? – dinesh12

+0

一般に、min kはシステムが同じ結果を生成するために必要な情報量が少ないほど優れています。また、実験ごとに異なるk回の実験を複数回実行し、平均精度を試すこともできます。それはアルゴリズムのより良い頑健性をもたらすかもしれない。 –

関連する問題