ML IA K 近鄰演算法 classify0

2022-05-08 17:00:08 字數 2031 閱讀 4598

knn.py

1

#!/usr/bin/python2#

-*- coding:utf8 -*-34

from numpy import *

5import

operator67

#創造資料集

8def

createdataset():

9 group = array([[1.0, 1.1], [1.0, 1.0], [0, 0], [0, 0.1]])

10 labels = ['

a', '

a', '

b', 'b'

]11return

group, labels

1213

"""14

#將inx擴充套件到和訓練樣本集dataset一樣的行數

15diffmat = tile(inx, (datasetsize, 1)) - dataset

16tile(inx, n):拓展長度

17tile(inx, (m, n):m-拓展個數,拓展長度

1819

sortedclasscount = sorted(classcount.iteritems(), key=operator.itemgetter(1), reverse=true)

20以排出的每組資料的第乙個元素的大小為準,按降序排列。

21e.g:[('a', 2), ('b', 1)]

22"""

23def

classify0(inx, dataset, labels, k):

24 datasetsize = dataset.shape[0] #

訓練樣本行數(矩陣第一維度的長度)

25 diffmat = tile(inx, (datasetsize, 1)) -dataset

26 sqdiffmat = diffmat**2

27 sqdistances = sqdiffmat.sum(axis=1)

28 distances = sqdistances**0.5 #

歐氏距離計算

29 sorteddistindicies = distances.argsort()#

按元素大小公升序,將無數對應的索引(index)輸出

30 classcount ={}

31for i in

range(k):

32 voteilabel = labels[sorteddistindicies[i]] #

輸出上面相應索引(index)對應的label

33 classcount[voteilabel] = classcount.get(voteilabel, 0) + 1 #

統計label個數

34 sortedclasscount = sorted(classcount.iteritems(), key=operator.itemgetter(1), reverse=true)

35return sortedclasscount[0][0]

knn_test.py

1

import

knn2

3 group, labels =knn.createdataset()

4print

(group)

5print

(labels)

67 inx = [2, 1]

8 testresult = knn.classify0(inx, group, labels, 3)

9print (testresult)

result:

1 [[ 1.   1.1]

2 [ 1. 1. ]

3[ 0. 0. ]

4 [ 0. 0.1]]

5 ['

a', '

a', '

b', 'b'

]6 a

KNN k近鄰演算法

現在假如我們已經擁有了一些資料 稱為訓練資料集 ts,並且擁有所有資料的類別名 即每條資料應該歸於哪個類別。當我們要判斷一條不知類別的資料時,首先讓這條資料m和已經擁有的所有的資料ts中的每一條資料進行比較,然後根據比較結果選擇出和m最相似 一般是基於距離 的k條資料 k是個整數,並且通常是小於20...

k 近鄰演算法

此文章參考機器學習實戰一書,具體的理論知識可以參考該書。本文的初衷只是為了做乙個複習,將學過的知識加以整理,其中不免有一定的錯誤。2.k 近鄰演算法的原理介紹 k 近鄰演算法通過測量不同的特徵值之間的距離進行分類。它的工作原理如下 存在乙個樣本的資料集合,也成為訓練樣本集合。並且樣本集中的每個資料都...

K 近鄰演算法

k 近鄰演算法採用測量不同特徵值之間的距離方法進行分類。優點 精度高 對異常值不敏感 無資料輸入假定 缺點 計算複雜度高 空間複雜度高 適用資料範圍 數值型和標稱型 工作原理 存在乙個樣本資料集合,也稱作訓練樣本集,並且樣本集中每個資料都存在標籤,即我們知道樣本集中每一資料與所屬分類的對應關係。輸入...