knn詳細注釋python

2021-10-06 03:01:22 字數 2266 閱讀 3520

from numpy import

*import operator as opt

# 對資料集進行規範化

defnormdata

(dataset)

: maxvals = dataset.

max(axis=0)

# 求出一列的最大值

minvals = dataset.

min(axis=0)

# 求出一列的最小值

ranges = maxvals - minvals # 對有個資料進行規範的時候,用資料集減去這一列最小的除以這一列的最大值減去最小值,保證資料的範圍在0-1內

retdata =

(dataset - minvals)

/ ranges # 對資料集進行規範化

'''返回規範後的資料集,最大值減去最小值,以及最小值'''

return retdata, ranges, minvals

# 計算距離

defcountdist

(dataset,testdata)

: distsquaremat =

(dataset - testdata)**2

# 計算差值的平方

distsquaresums = distsquaremat.

sum(axis=1)

# 求每一行的差值平方和

distances = distsquaresums **

0.5# 開根號,得出每個樣本到測試點的距離

return distances

# knn演算法

defknn

(dataset, labels, testdata, k)

:'''

k值代表在k個最近的資料

找到距離最小的k個資料

看k個資料裡面,哪個標籤的最多,就把測試資料歸於哪一類

'''distances=countdist(dataset,testdata)

sortedindices = distances.argsort(

)# 排序,得到排序後的下標,argsort()返回從小到大的索引值

indices = sortedindices[

:k]# 取最小的k個,前面的k個

labelcount =

# 字典,前面放標籤,後面放計數,儲存每個label的出現次數

for i in indices:

label = labels[i]

labelcount[label]

= labelcount.get(label,0)

+1# 如果lable1在字典裡,則計數加一,如果不在,就拉lable加進去並且初始化為0,然後加一

sortedcount =

sorted

(labelcount.items(

), key=opt.itemgetter(1)

, reverse=

true

)# lablecount.iteritems()將lablecount字典分解為元組列表,operator.itemgetter(1)按照第二個元素的次序對元組進行排序,reverse=true是逆序,即按照從大到小的順序排列

return sortedcount[0]

[0]# 返回出現次數最大的label

if __name__ ==

"__main__"

: dataset = array([[

2,3]

,[6,

8],[

5,4]

,[4,

4]])

# 初始定義的乙個資料集

normdataset, ranges, minvals = normdata(dataset)

# 呼叫函式求出規範後的資料集,最大值減去最小值,最小值

labels =

['a'

,'b'

,'c'

,'c'

]# 標籤

testdata = array(

[3.9

,5.5])

# 測試的資料

normtestdata =

(testdata - minvals)

/ ranges # 對測試的資料進行規範化

result = knn(normdataset, labels, normtestdata,2)

# 呼叫knn函式,得到結果,輸出

print

(result)

python注釋 Python基礎 注釋

目標 01.注釋的作用 使用用自己熟悉的語言,在程式中對某些 進行標註說明,增強程式的可讀性 02.單行注釋 行注釋 為了保證 的可讀性,後面建議先新增乙個空格,然後再編寫相應的說明文字 在 後面增加的單行注釋 03.多行注釋 塊注釋 什麼時候需要使用注釋?注釋不是越多越好,對於一目了然的 不需要新...

python注釋 Python 注釋方法

1 def f text str,max len int 0 80 str 這個是函式的幫助說明文件,help時會顯示 return true 函式宣告中,text str text 是引數 冒號後面 str是引數的注釋。如果引數有預設值,還要給注釋,如下寫。max len int 0 80 str...

python注釋格式 Python 注釋

1 注釋 就是一段文本性的描述,用來對 的解釋和說明。2 注釋的特性 當程式被處理的時候,注釋會被自動忽略,不會被當做 處理。3 注釋的作用 幫助自己理清 邏輯。與他人合作開發時,能夠減少溝通成本。開發模組時,可以減少他人的使用成本。臨時注釋一段 可以方便除錯。4 注釋的分類 單行注釋 又叫行注釋 ...