機器學習 kNN演算法

2021-08-25 02:33:34 字數 1591 閱讀 4072

最近鄰居法(knn演算法,又譯k-近鄰演算法)是一種用於分類和回歸的非引數統計方法。

例如:根據腫瘤大小和時間兩個特徵對腫瘤的良性和惡性的**。其中綠色為良性,紅色為惡性,現在要**藍色這一資料是良性還是惡性,那麼對於knn演算法是怎麼**的呢?

大概思路:首先取乙個k值(要點一:k值的取法),之後取離索要**的點最近的k個資料(要點二:資料距離的計算),選取k個資料中所屬最多的一類作為所**的值。(要點三:如何分類

以上是一種簡單的思路,對於不同的要點中,所選擇的演算法不同,則**的準確度也不相同。下面進行詳細的分析。

如何設定k使得效果最好?這裡涉及到兩個概念超引數模型引數。k就是乙個超引數。

對於我們來講,要找乙個好的引數,一般是在乙個有限的數值範圍內進行選取,然後迴圈測試找出使得評價函式最高的k的值。

如果k的值是臨界值,比如:1或者10,則說明在這個範圍外有可能還存在更好的k值,這時我們應該擴大範圍進行選取。

best_score = 0.0

best_k = -1

for k in range(1,11):

knn_cls = kneighborsclassifier(n_neighbors=k)

knn_cls.fit(x_train, y_train)

score = knn_cls.score(x_test, y_test)

if score > best_score:

best_k = k

best_score = score

print("best_k = ", best_k)

print("best_score = ", best_score)

結果:best_k = 4

best_score = 0.9916666666666667

對於兩個資料點之間的距離的計算,我們使用歐氏距離來進行計算,當然在這之前,需要進行資料歸一化(見:)的處理。

距離公式如下:

其中,a,b為兩個樣本點,n為樣本特徵數量。

1、最簡單的分類方法就是按照樣本個數最多的來進行分類。

2、但是,若是存在個數相等情況則1無法解決。(用到網格搜尋

若是存在三類,且**資料距離樣本點如圖所示,這時候可以通過距離作為權重來進行分類。將距離的倒數大小作為分類的標準。紅色:1;紫色:1/3;藍色:1/4;則屬於紅色。

機器學習 演算法 KNN

參考 我感覺knn是最簡單的乙個機器學習演算法,實現很簡單,效果也一般般 就是算個euclideam distance,還有一些可以優化的地方,比如可以加權,第二篇文章提到了 python 如下 coding utf 8 created on aug 30,2013 author blacklaw ...

機器學習 KNN 演算法

一 主要目的 在樣本空間中,找到與待估計的樣本最臨近的k個鄰居,用這幾個鄰居的類別來估計待測樣本的類別 二 適用性 樣本容量比較大的類域的自動分類,而樣本容量較小的類域則容易誤分。尤其適用於樣本分類邊界不規則的情況 三 不足 1 當樣本不平衡時,比如乙個類的樣本容量很大,其他類的樣本容量很小,輸入乙...

機器學習 KNN演算法

一 近 鄰 算 法 knn 原理 工 作 原 理 是 存 在 一 個 樣 本 資料 集 合 也 稱 作 訓練 樣 本 集 並 且 樣 本 集 中 每 個 數 據 都 存 在 標 籤 即 我 們 知 道 樣 本 集 中 每 一 數 據與 所 屬 分 類 的 對 應關係 輸 人 沒 有 標 籤 的 新 ...