鳶尾花KNN演算法的重構

2021-09-28 14:49:58 字數 2780 閱讀 8864

一:作業題目:鳶尾花的knn演算法重構

knn演算法又稱為k近鄰演算法,k的含義是指考慮訓練集中與新資料點最近的任意k個鄰居(比如說,距離新資料點最近的3個或5個鄰居),而不是只考慮距離新資料點最近的那乙個。然後,我們可以利用這些鄰居中數量最多的類分別作出**。

二:演算法設計:

(1):knn演算法的原理:

如果乙個樣本在特徵空間中的k個最相似(即特徵空間中最鄰近)的樣本中的大多數屬於某乙個類別,則該樣本也屬於這個類別。通俗地說便是:近朱者赤,近墨者黑。

(2):具體過程:

①:計算任意兩點間距離:即計算出給定測試物件與測試集中每個物件的距離,也就是計算多維陣列間的距離。

②:在眾多鄰居中找出最近鄰:計算出測試物件與測試集中每個物件的距離後,對距離進行排序並從中找出距離最近的k個物件。

③:對k個近鄰進行分類:

(1):使用恰當的資料集:此次我們使用scikit-learn的datasets模組中的鳶尾花(iris)資料集,我們可以呼叫load_iris函式來進行資料的載入。

(2)衡量模型是否成功:訓練集與測試集的劃分:為測定模型是否有效,我們將收集好的帶標籤資料分為兩部分,一部分資料作為訓練資料用於構建機器學習模型;另一部分資料作測試資料用於評估模型效能;在對資料進行拆分之前,先利用偽隨機數生成器將資料集打亂。給偽隨機數設立隨機種子random.seed(0),使得每次切割的資料集一致。其中訓練集佔75%,測試集佔25%;

定義函式:splitdatesets(),預設訓練集的比例為0.75

返回值為x_train,y_train,y_test和y_test。

(3)k取值的確定以及k演算法的實現:

主要包括knn訓練以及knn模型精度的計算,既包括利用訓練資料構建模型的演算法,亦包括對新資料點進行**的演算法,並且還包括從訓練集中所提取的資訊。

構建模型只需對訓練資料加以儲存,若想做到**新資料點,需要在訓練資料集中找到最近的資料點作為最近鄰。

(4)最終分類決策時確定樣本類別的方法如何選擇;

④:兩點間距離的計算:又稱歐幾里得距離,二維空間中任意兩點間距離計算公式為:d=√((x-x1)2+〖(y-y1)〗2 )

三:有注釋的源**:

(1):載入資料集,生成隨機數列:

(2):分割資料集為:75%訓練集和25%測試集

(3):**功能的實現:

(4):knn評估模型的建立:

(5):主函式;輸出**結果:

四:測試用例設計以及除錯過程截圖:

(1)測試用例設計:

(2):除錯過程:

:評估模型的除錯

生成隨機數列功能的除錯

:**功能實現的除錯

五:總結:

通過此次作業我得以將knn演算法進行再次的

複習和熟悉,由於不能對庫中的函式進行呼叫,就要求我們必須對knn演算法的每一步驟及其功能都要非常的熟悉。此次作業難就難在:首先對於第一次接觸python的人來說,利用程式語言來敘述乙個演算法的流程是有難度的,如果基礎不夠紮實只能邊寫邊查,但是這樣的做法顯然十分浪費時間,因此極易使人產生挫敗感。

對於split()函式,課本及其他書籍中均呼叫sciket-learn中的函式時使用過乙個種子數,使得它能夠每次生成相同的序列。而使用permutation()每次的執行結果都是不同的。這裡應當改進下,可以使用python中的集合或者列表及推導式,集合的內部實現保證了元素不重複。

knn演算法 鳶尾花

knn分類演算法實現鳶尾花 對鳶尾花利用knn演算法進行分類,利用python的sklean庫極大方便了python的使用,減少了大量 的書寫。knn演算法的 是通過計算歐氏距離來確定 鳶尾花的結果,遍歷所有樣本集,計算待分類樣本與每個樣本的距離,計算並儲存後排序,尋找k個近鄰,最後輸出最小結果即為...

knn 鳶尾花例子

1.獲取資料集 2.資料基本處理 3.特徵工程 4.機器學習 模型訓練 5.模型評估 from sklearn.datasets import load iris from sklearn.model selection import train test split from sklearn.pr...

KNN演算法進行鳶尾花分類

import numpy as np import matplotlib.pylab as pyb matplotlib inline from sklearn.neighbors import kneighborsclassifier from sklearn import datasets fr...