機器學習 統計學習方法 3 k近鄰法 筆記

2021-10-09 06:55:09 字數 2368 閱讀 4095

注:本章只介紹分類問題的k近鄰演算法。

t

=t = \

t=其中,xi∈

x⊂rn

x_i \in\mathcal\subset r^n

xi​∈x⊂

rn為例項的特徵變數,yi∈

y=

y_i \in \mathcal =\

yi​∈y=

為例項的類別,i=1

,2,3

,...

,n

i=1,2,3,...,n

i=1,2,

3,..

.,n;例項特徵變數 xxx。

k值的選擇

分類決策規則

構造演算法:

搜尋演算法:

在樹中找到包含目標點x的葉結點:從根結點出發,遞迴的訪問當前結點對應子樹,直到當前的子節點為葉結點為止。

以此葉結點為「當前最近點」

遞迴回退,對於每乙個結點規則如下:

如果該節點的例項點比當前最近距離點距離目標更近,則該例項點「為當前最近點」

對於乙個包含最近點的區域,要檢查該節點的父節點和兄弟節點是否存在更近的點。如果存在的區域包含距目標點更近的點,移動到另乙個自己點上,之後繼續遞迴搜尋。不相交時,回退上一級。

回到根結點時,搜尋結束

# numpy實現k近鄰法(線性掃瞄)

'''資料集:

(1.0,1.1) a

(1.0,1.0) a

(0,0) b

(0,0.1) b

實驗資料:(0.7,0.7)

k = 1

'''from numpy import

*import operator

defcreatedataset()

: group = array([[

1.0,

1.1],[

1.0,

1.0],[

0,0]

,[0,

0.1]])

labels =

['a'

,'a'

,'b'

,'b'

]return group,labels

defclassify

(inx,dataset,labels,k)

: datasetsize = dataset.shape[0]

diffmat = tile(inx,

(datasetsize,1)

)-dataset

sqdiffmat = diffmat**

2 sqdistances = sqdiffmat.

sum(axis =1)

distances = sqdistances**

0.5 sorteddistindicies = distances.argsort(

) classcount =

for i in

range

(k):

voteilabel = labels[sorteddistindicies[i]

] classcount[voteilabel]

= classcount.get(voteilabel,0)

+1sortedclasscount =

sorted

(classcount.items(

),key = operator.itemgetter(1)

,reverse =

true

)return sortedclasscount[0]

[0]group,labels = createdataset(

)print

(group)

print

(labels)

ina =

[0.7

,0.7

]labelofa = classify(ina,group,labels,1)

print

(labelofa)

input : 資料集dataset

output: 二叉樹kdtree(根結點treeroot)

-------

1 struct node* treeroot

2 //樹的結點的個數並非資料集個數

3 //node的結構為:左子節點指標left,右子節點指標right,item陣列data

4 //item的結構為:int陣列x

3 treenode->data = dataset

4 void cuttheset(node* root,int divisionnum, int mid)

5

統計學習方法 3K近鄰法

1968年由cover和hart提出。k近鄰法假設給定乙個訓練資料集,其中的例項類別已定。分類時,對新的例項,根據其k個最近鄰的訓練例項的類別,通過多數表決等方式進行 k近鄰法實際上利用訓練資料集對特徵向量空間進行劃分,並作為其分類的 模型 k近鄰法三要素 k值得選擇 距離度量和分類決策規則。lp距...

《統計學習方法》筆記(3) k近鄰

k近鄰 knn 是相對基本的機器學習方法,特點是不需要建立模型,而是直接根據訓練樣本的資料對測試樣本進行分類。1 k近鄰的演算法?演算法對測試樣本進行分類的一般過程如下 1 根據給定的k值,搜尋與測試樣本距離最近的k個訓練樣本 2 統計k個樣本對應的每種分類數量 3 根據每種分類的數量投票決定樣本點...

統計學習方法 k近鄰法

k近鄰法 knn 是一種基本的分類與回歸方法 分類這種需求,滲透到我們生活的方方面面 分類演算法可以幫助我們完成這些繁瑣的操作,並根據我們的要求不斷修正分類結果。分類演算法其實蠻多的,這裡順著書本順序,詳細講解knn演算法,再與k means k means 演算法進行簡單對比。k近鄰法是這樣乙個過...