KNN(K-近隣)アルゴリズム

1231 ワード

KNNアルゴリズム
KNNアルゴリズムはK近隣アルゴリズムとも呼ばれ、KNNアルゴリズムは思想が極めて簡単で、応用する数学知識が極めて少なく、それだけでなくKNNアルゴリズムの計算の効果は非常に良い.
パターン認識の分野では,最近隣接法(KNNアルゴリズム,K−近隣アルゴリズムとも訳す)は分類と回帰のための非パラメータ統計法である.いずれの場合も,特徴空間(Feature Space)に含まれるk個の最も近い訓練サンプルを入力した.
k−NN分類では,出力は分類クラスタである.1つのオブジェクトの分類は、その隣接する「多数決」によって決定され、k個の最近の隣接する(kは正の整数であり、通常は小さい)の中で最も一般的な分類は、そのオブジェクトに付与されるカテゴリを決定する.k=1の場合、そのオブジェクトのカテゴリは、最も近いノードによって直接与えられる.
プログラムで特徴点間の距離を求めるには,Euler距離(Euler distance)を計算する必要があり,Euler距離の具体的な意味と計算方法は本論文では特に述べず,Euler距離によりn次元ベクトルを持つ特徴点間の距離を計算する.以下はpythonから得られたX_ですtrainの各フィーチャーポイントx_trainとxの距離
dis = sqrt(numpy.sum[((x_train-x)**2)for x_train in X_train]

各点とx特徴点との距離を算出すると、これらの点を近から遠までソートし、最近の前K点を取り、これらの点の特徴を表示し、pthonを使用して以下の符号化を行うことができます.
nearest = numpy.argsort(dis)
top_K_y = [y_train[i] for i in nearest[:k]]

ただし、y_trainに格納されているのは、各特徴値の特徴です.前のK個の最も近い特徴を得た後、これらの特徴とその出現頻度を統計し、頻度が最も多いカスタムN個の要素を出力することができます.ここでは、頻度が最も多い前の1つの要素だけを取り、pythonでは以下のように符号化することができます.
import collections import Counter
votes = Counter(topK_y)
votes.most_common(1)

もちろん、この要素が表す特徴を知りたい場合は、次のような符号化を行うことができます.
a = votes.most_common(1)[0][0]

したがって,xとaは一種の特徴であると考えられる.