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 注釋的分類 單行注釋 又叫行注釋 ...