Knn演算法實戰

2021-09-29 18:34:34 字數 3399 閱讀 9655

三、完整**

或者尋找最近的k個資料,推測新資料的分類。

import csv

with

open

('e:\資資\python練習\knn\prostate_cancer.csv'

,'r')as

file

:#dictreader把資料讀成字典

reader = csv.dictreader(

file

) datas=

[row for row in reader]

print

(datas)

k=

5def

knn(data)

:#1距離

res =

[for train in train_set

]print

(res)

knn(test_set[0]

)

#2排序

res =

sorted

(res,key=

lambda item:item[

'distance'])

print

(res)

def

knn(data)

:#1距離

res =

[for train in train_set

]#2排序

res =

sorted

(res,key=

lambda item:item[

'distance'])

#取前k個

res2=res[

0:k]

#加權平均

result=

#總距離

sum=

0for r in res2:

sum+=r[

'distance'

]#距離進的權重反而高

for r in res2:

result[r[

'result']]

+=1-r['distance']/

sum#輸出**的結果

print

(result)

#輸出本身結果

#測試階段

correct=

0for test in test_set:

result=test[

'diagnosis_result'

] result2=knn(test)

if result==result2:

correct+=

1print

("準確率:%"

.format

(100

*correct/

len(test_set)

))

import random

import csv

#資料讀取

with

open

('e:\資資\python練習\knn\prostate_cancer.csv'

,'r')as

file

:#dictreader把資料讀成字典

reader = csv.dictreader(

file

) datas=

[row for row in reader]

#分組#分成訓練集和測試集

#打亂順序,防止偶然性

random.shuffle(datas)

n =len

(datas)//3

test_set = datas[

0:n]

train_set = datas[n:

]#knn

#距離def

distance

(d1,d2)

: res =

0for key in

("radius"

,"texture"

,"perimeter"

,"area"

,"smoothness"

,"compactness"

,"symmetry"

,"fractal_dimension"):

res +=

(float

(d1[key])-

float

(d2[key]))

**2return res**

0.5k=

5def

knn(data)

:#1距離

res =

[for train in train_set

]#2排序

res =

sorted

(res,key=

lambda item:item[

'distance'])

#取前k個

res2=res[

0:k]

#加權平均

result=

#總距離

sum=

0for r in res2:

sum+=r[

'distance'

]#距離進的權重反而高

for r in res2:

result[r[

'result']]

+=1-r['distance']/

sum#輸出**的結果

#print(result)

#輸出本身結果

#print(data['diagnosis_result'])

if result[

'b']

>result[

'm']

:return

'b'else

:return

'm'#測試階段

correct=

0for test in test_set:

result=test[

'diagnosis_result'

] result2=knn(test)

if result==result2:

correct+=

1print

("準確率:%"

.format

(100

*correct/

len(test_set)

))

KNN演算法實戰

time 2021 1 4 20 37 file knn.py from sklearn.datasets import load iris from sklearn.model selection import train test split from sklearn.preprocessing...

機器學習實戰 kNN演算法

今天看了第乙個機器學習演算法 k 鄰近演算法。大概意思就是,先根據已有分劃分好類別的資料集,然後輸入新的資料向量,就計算與資料集裡各個向量的距離,排序找到前k個資料,統計前k資料中各個類別 標籤 出現的次數,最多的那個類別 標籤 就是輸入向量所屬的類別,然後返回。哈哈get乙個機器學習的演算法開心。...

機器學習實戰 KNN演算法

k 近鄰演算法的工作機制非常簡單 對給定的測試樣本,基於某種距離度量找出訓練集中與其最靠近的 k 個訓練樣本,然後基於這 k 個 鄰居 的資訊來進行 通常,在分類任務中可使用 投票法 即選擇這 k 個樣本中出現最多的類別標記作為 結果 在回歸任務中時使用 平均法 即將這k 個樣本的實值輸出標記的平均...