特徵距離計算(距離計算方法有很多,這裡先列三種)
簡單例子(電影型別)根據歐氏距離計算公式,算出未知電影與已知電影型別之間的距離。
電影名稱
打鬥鏡頭
接吻鏡頭
電影型別
歐式距離13
104愛情片
20.522
100愛情片
18.731
81愛情片
19.2
4101
10動作片
115.3599
5動作片
117.4698
2動作片
118.9?18
90未知
—根據歐式距離我們可以對電影按照距離大小進行排序,假定k=3,則最近鄰的三個電影分別是電影2,電影3,電影1,這三種電影的列別都是愛情片,所以我們可以認為未知電影的型別也是愛情片。
每年飛行里程數
每週消費冰激凌公升數
交往型別
40920
8.326976
0.953952
314488
7.153469
1.673904
226052
1.441871
0.805124
175136
13.147394
0.428964
138344
1.669788
0.134296
172993
10.141740
1.0329551…
………
@tools.funcruntime
def load_data(file_path):
try:
feature =
label =
with open(file_path) as f:
for line in f:
feature_temp =
line = [float(i) for i in line.strip().split()]
feature.extend(feature_temp)
return np.mat(feature), label
except exception as msg:
tools.printinfo(2, msg)
sys.exit()
@tools.funcruntime
def normalization_data(feature):
try:
# 計算特徵的均值和標準差
feature_u = feature.mean(axis=0)
feature_sigma = np.std(feature, axis=0)
# 計算特徵矩陣的大小
feature_size = np.shape(feature)
feature_u = feature_u.repeat(feature_size[0], axis=0)
feature_sigma = feature_sigma.repeat(feature_size[0], axis=0)
# 歸一化
feature = (feature - feature_u) / feature_sigma
return feature
except exception as msg:
tools.printinfo(2, msg)
sys.exit()
def knn(unknown_data, feature, feature_u, feature_sigma, label):
try:
# 未知資料歸一化
unknown_data = (unknown_data - feature_u) / feature_sigma
feature_size = np.shape(feature)
# 未知資料與已知資料的距離
unknown_data = unknown_data.repeat(feature_size[0], axis=0)
unknown_data = unknown_data - feature
unknown_data = np.multiply(unknown_data, unknown_data)
unknown_data = np.sum(unknown_data, axis=1)
unknown_data = np.sqrt(unknown_data)
# 未知資料距離排序取前五的類別
unknown_data = [i[0] for i in unknown_data.tolist()]
k_label = [i[0] for i in sorted(enumerate(unknown_data), key=lambda x:x[1])]
k_label = k_label[0:5]
k_label = [label_data[i] for i in k_label]
return k_label
except exception as msg:
tools.printinfo(2, msg)
sys.exit()
k近鄰演算法 python實現
k近鄰演算法 k nearest neighbor,knn 是一種非常直觀的,易於理解的有監督的演算法 對於乙個待分類的樣本,在已知的樣本集合中尋 找與它距離最近的k個樣本,及所謂的k近鄰。通過這這k個近鄰的所述類別來決定分類結果。距離度量距離度量方法有很多種,例如 歐式距離 曼哈頓距離 切比雪夫距...
K近鄰演算法 python實現
k近鄰演算法 演算法原理 將資料轉換成向量形式 計算輸入向量與樣本中的距離 比如歐式距離等 對距離計算結果排序 取前k個 根據指定規則 多數或者按照一定權重進行計算 確定輸入向量類別。python實現 import numpy as np import operator class knnmetho...
python實現k 近鄰演算法
本文不涉及k 近鄰演算法的原理,只通過python 實現演算法,並且沒有用到機器學習庫,根據演算法流程一步一步實現。假設我們已經獲取了資料及其標籤的文字檔案,如下圖所示。資料有3個屬性,標籤分為3個型別,python讀取資料 讀取資料並記錄 defreadfile filename file ope...