k-近隣アルゴリズム(KNN)
5307 ワード
k-近隣アルゴリズム(KNN)
一、概念
異なる特徴値間の距離を測定する方法で分類する異なる特徴値間の距離を測定する方法で分類する
新たに入力された無分類データと訓練セットの各サンプルとの距離(欧式距離:d=(x A 0−x B 0)2+(x A 1−x B 1)2 d=sqrt{(x_{A_0}−x_{B_0})^2+(x_{A_1}−x_{B_1})^2}d=(xA 0−xB 0)2+(xA 1−xB 1)2)を算出し、最も類似(距離最小)のk個のサンプルのうち、カテゴリ出現回数が最も多いものを新規データのカテゴリとして選択する.
二、特徴
三、正規化数値
ranges = max_val - min_val
val = (val - min_val) / ranges
四、主な分類コード
'''
:
inx:
data_mat: ,numpy ,
labels:
k: k
:
sorted_vote[0][0]:
'''
def classify(in_x, data_mat, labels, k):
x_mat = tile(in_x, (data_mat.shape[0], 1))
result_mat = (data_mat- x_mat ) **2
result_mat = result_mat .sum(axis = 1) ** 0.5
sorted_index = result_mat .argsort()
class_vote = {}
for i in range(k):
label = labels[sorted_index [i]]
if label not in class_vote .keys():
class_vote [label] = 1
else:
class_vote [label] = class_vote [label] + 1
sorted_vote = sorted(class_vote .items(), key=operator.itemgetter(1), reverse=True)
return sorted_vote[0][0]