一、題目說明
原生python實現knn演算法,用鳶尾花資料集
二、程式分析
讀取資料
withopen
('iris.csv'
,'r'
)asfile:
#csv
裡的函式,以字典形式讀取檔案
reader=csv.dictreader(file)#推導
datas= [rowforrowinreader]
資料分組
random.shuffle(datas)計算距離函式test_set=datas[0:
106]
train_set=datas[
106:]
defdistance(d1總函式,d2):
res =
0forkeyin(
"sepal length"
,"sepal width"
,"petal length"
,"petal width"
): res += (
float
(d1[key])-
float
(d2[key]))**
2returnres**
0.5
k =三、演算法構造3defknn(data):
res = [
fortrainintrain_set
]sorted
(res
,key
=lambdaitem:item[
'distance'
])
#取前k個值
res2 = res[
0:k]
#加權平均(result是最終判據)
result =
#總長度
sum_dist =
0forr1inres2:
sum_dist += r1[
'distance'
]
#逐個分類加和
forr2inres2:
result[r2[
"result"
]] +=
1-r2[
"distance"
]/sum_dist
(result)
ifresult[
'iris-setosa'
] > result[
'iris-versicolor'
]andresult[
'iris-setosa'
]> result[
'iris-virginica'
]:return'iris-setosa'
elifresult[
'iris-versicolor'
] > result[
'iris-setosa'
]andresult[
'iris-versicolor'
]>result[
'iris-virginica'
]:return'iris-versicolor'
else:
return'iris-virginica'
correct =
0fortestintest_set:
result = test[
'species'
] result2 = knn(test)
ifresult == result2:
correct = correct + 1;
(str
(correct/
len(test_set)))
四、除錯
讀取資料
計算距離
主函式五、測試
第二次執行:
原生python實現knn演算法
1 knn演算法的思想 就是在訓練集中資料和標籤已知的情況下,輸入測試資料,將測試資料的特徵與訓練集中對應的特徵進行相互比較,找到訓練集中與之最為相似的前k個資料,則該測試資料對應的類別就是k個資料 現次數最多的那個分類。2 演算法設計 根據knn演算法的思想可以得到knn演算法的步驟為 1 計算測...
原生Python實現KNN分類演算法
原生python實現knn分類演算法,用鳶尾花資料集。knn是一種聚類演算法,用於對新的資料點進行分類。對於乙個只知道特徵的資料點,首先計算它和已知訓練集所有點的距離,然後選擇最近的k個點進行 投票表決 來決定所屬型別。因為訓練集的標籤是已知的,所以根據 投票 結果,判定該點的型別為 票數 最多的類...
原生python實現knn分類演算法
一 題目 原生python實現knn分類演算法 二 演算法設計 k 近鄰 k nearset neighbor,簡稱 knn 學習是一種常用的監督學習方法,其工作機制非常簡單 給定測試樣本,基於某種距離度量找出訓練集中與其最靠近的 k 個訓練樣本,然後基於這 k 個 鄰居 的資訊來進行觀測。通常,在...