k-鄰近演算法:有監督演算法
演算法工作原理:
存在乙個樣本資料集合,也稱作訓練樣本集,並且樣本集中每個資料都存在標籤,即我們知道樣本集中每乙個資料與所屬分類的對應關係。輸入沒有標籤的新資料後,將新資料的每乙個特徵與樣本集中資料對應的特徵進行比較,然後演算法提供樣本集中特徵最相似資料(最鄰近)的分類標籤。一般來說,我們只選擇樣本資料集中前k個最相似的資料,這就是k-鄰近演算法中k的出處。
實驗**:
"""
function:k鄰近演算法實現uci資料集分類.
"""from numpy import *
import numpy as np
from collections import counter
def datasetload(filepath):
data =
labels =
fr = open(filepath)
for line in fr.readlines():
curline = line.strip().split(',')
fltline = list(map(float, curline[:5]))
return data, labels
# 計算歐式距離衡量資料間的相似度.
def disteclud(veca, vecb):
return sqrt(np.sum(power(np.array(veca) - np.array(vecb), 2)))
def knn(k):
exact_amount = 0
for i in range(len(goal_data)):
distance = {} # distance字典: key(資料編號):value(歐式距離).
k_labels = # 儲存前k個鄰近資料的類標籤.
for j in range(len(train_data)):
distance.update()
# 對計算結果進行排序,找出最鄰近的前k個值.
distance = sorted(distance.items(), key=lambda x: x[1])
for t in range(k):
# 取出前k個鄰近資料的編號及類標籤構成k_labels.
# print("前k個鄰近資料排序:{}".format(distance[t][0]))
# counts_label鄰近資料中頻率最大的類標籤及頻率.
counts_label = counter(k_labels).most_common(1)
print("第{}條目標資料**類別為:{}---正確類別為:{}".format(i+1, (counts_label[0])[0],goal_labels[i])[0]))
if (counts_label[0])[0] == ((goal_labels[i])[0]):
exact_amount = exact_amount + 1
# 準確率計算.
accuracy = format(float(exact_amount) / float(len(goal_data)), '.2f')
print("程式分類準確率:{}".format(accuracy))
print("------------------分隔符------------------")
if __name__ == '__main__':
train_path = 'd:/pycharm/code/python_learning_test/knn/train_data.txt'
goal_path = 'd:/pycharm/code/python_learning_test/knn/goal_data.txt'
train_data, train_labels = datasetload(train_path)
goal_data, goal_labels = datasetload(goal_path)
# 定義k鄰近演算法引數k.
for k in range(1, 9):
knn(k)
實驗中資料的距離度量用的是最簡單的歐氏距離方法:
通過將目標資料與訓練資料間的歐氏距離從小到大排列,選取前k個訓練資料的類別,其中最多出現的類別為目標資料的**類別。
機器學習 k鄰近演算法 KNN
title 機器學習 k鄰近演算法 knn date 2019 11 16 20 20 41 mathjax true categories 外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳 img ae8zaru7 1573908679258 1573907207887.png 現在我們...
機器學習鄰近演算法(KNN)
臨近演算法 臨近演算法 knn 是資料探勘分類技術中最簡單的方法之一。所謂k最近鄰,就是k個最近的鄰居的意思,說的是每個樣本都可以用它最接近的k個鄰居來代表,knn方法既可以做分類,也可以做回歸。knn演算法的核心思想是如果乙個樣本在特徵空間中的k個最相鄰的樣本中的大多數屬於某乙個類別,則該樣本也屬...
機器學習 KNN鄰近演算法
1 knn 演算法概述 cover和hart在1968年提出了最初的鄰近演算法。所謂k最近鄰,就是k個最近的鄰居的意思,說的是每個樣本都可以用它最接近的k個鄰居來代表。knn是一種分類 classification 演算法,它輸入基於例項的學習 instance based learning 屬於懶...