使用K近鄰對iris資料集進行分類

2021-10-23 08:28:58 字數 1315 閱讀 2863

聽了好幾年的k近鄰演算法 今天終於接觸到了

原理很簡單 講樣本對映為多維空間中的點

無標籤新樣本 由空間中與其最近的k個點中數量最多的標籤來定義

以下為暴力實現 高效演算法留坑

from sklearn import datasets

def cmp(elem):

return elem[0]

iris=datasets.load_iris()

data=iris.data

target=iris.target

num_data,num_feature=data.shape

num_target=len(iris.target_names)

data_train,target_train=,#訓練集大小為120

data_test,target_test=,#測試集大小為30

for i in range(num_data):

if i%5!=0:

else:

num_train,num_test=len(data_train),len(data_test)

k=int(10)#只考慮最近的10個鄰居

#p=2

count=int(0)

for i in range(num_test):

list=

for j in range(num_train):

val=0.0

for k in range(num_feature):

val+=(data_test[i][k]-data_train[j][k])*(data_test[i][k]-data_train[j][k])

val=val**0.5

"""for k in range(num_feature):

val+=abs(data_test[i][k]-data_train[j][k])

"""tmp=

list.sort(key=cmp)

vote=

for j in range(num_target):

for j in range(k):

id=int(list[j][1])

vote[id]=vote[id]+1

maxx,ans=int(-1),int(-1)

for j in range(num_target):

if maxxmaxx,ans=vote[j],j

if ans==target_test[i]:

count=count+1

print(count,num_test)

ML KNN(K近鄰,iris資料集為例)

knn筆記 演算法大致步驟 y的類別為例 1 計算樣本y與訓練樣本 已知標籤樣本 的距離 2 找出距離最近的k個樣本 3 選擇這k個樣本中出現最多的類別作為y的類別標記 資料集 iris為鳶尾花樣本,前四列為特徵,最後一列為標籤,如下圖 資料連線 有點笨,直接手動將資料分為訓練集和測試集 如下 co...

對PASCAL VOC 資料集進行資料增強

目的 對voc資料集的物件檢測的資料進行資料增強。如果能幫到您請給本人一顆 拜託了!dataaugmentlabelimg 增強功能 show picture 檔案用的的 testdata 測試資料集 augment scripy.py 指令碼 readme.md 更詳細的解析 tree maste...

使用KNN對鳶尾花資料集進行分類處理

author tao contact 1281538933 qq.com file knn.py time 2020 12 21 software vscode from sklearn.datasets import load iris 匯入資料集iris import matplotlib.py...