k近接アルゴリズムの実現
908 ワード
欧風距離
訓練データセットが与えられ、新しい入力インスタンスに対して、両者の間の距離が計算され、k個の最小距離のラベルと分類される.通俗的には点から直線への派生であり、点は実例である.直線は分類器です.
訓練データセットが与えられ、新しい入力インスタンスに対して、両者の間の距離が計算され、k個の最小距離のラベルと分類される.通俗的には点から直線への派生であり、点は実例である.直線は分類器です.
import numpy as np
class knn:
def knn(inX, dataSet, labels, k):
'''
:param inX:
:param dataSet:
:param labels:
:param k:
:return sortedClassCount[0][0]
'''
#inX - dataSet
a = dataSet.shape[0]
b = np.tile(inX, (a, 1)) - dataSet
c = b ** 2
d = c.sum(axis=1)
e = d ** 0.5
classCount = {}
for i in range(k):
f = labels[e[i]]
classCount[f]= classCount.get(f, 0) + 1
sortedClassCount = sorted(classCount.iteritems(), key = operater.itemgetter(1), reverse = True)
return sortedClassCount[0][0]