K近鄰演算法的那點事

2021-10-10 09:32:34 字數 1914 閱讀 6350

k近鄰演算法

k近鄰演算法是一種基本分類與回歸方法。k近鄰演算法的輸入為例項的特徵向量,對應於特徵空間的點;輸出為特徵的類別,可以取多分類。k近鄰演算法假設給定乙個訓練資料集,其中的例項類別已定。分類時,對新的例項,根據其k個最近鄰的例項的類別,用過多數表決等方式進行**。因此k近鄰演算法不具有顯示的學習過程。k近鄰演算法實際上李邕訓練資料集對特徵空間進行劃分,並作為分類的模型。

演算法k近鄰演算法簡單、直觀:給定乙個訓練資料集,對新的輸入例項,在訓練資料集中找到與該例項最近的k個例項,這k個例項的多數屬於某個類,就把該輸入例項分為該類。

模型k近鄰使用的模型實際上對應於對特徵空間的劃分。模型由三個基本要素:距離度量、k值得選擇和分類決策規則決定

例項驗證

from sklearn.datasets import load_iris

iris_dataset = load_iris(

)print

('keys of iris_dataset:{}\n'

.format

(iris_dataset.keys())

)"""

檢視資料形式

"""import numpy as np

for key in iris_dataset.keys():

print

('current keys:"{}",key type:{}'

.format

(key,

type

(iris_dataset[key]))

)# 如果 np.ndarray 可以說明是訓練資料以及對應的標籤

ifisinstance

(iris_dataset[key]

, np.ndarray)

:print

(iris_dataset[key][0

])elif

isinstance

(iris_dataset[key]

,str):

print

(iris_dataset[key][:

150]

)else

:print

(iris_dataset[key]

)"""

資料處理

"""from sklearn.model_selection import train_test_split

x_train, x_test, y_train, y_test = train_test_split(iris_dataset[

'data'

], iris_dataset[

'target'

], random_state=0,

test_size=

0.3)

# 構建模型

from sklearn.neighbors import kneighborsclassifier

from sklearn.model_selection import cross_val_score

k_range =

range(1

,31)cv_scores =

for n in k_range:

knn = kneighborsclassifier(n)

scores = cross_val_score(knn, x_train, y_train, cv=

10, scoring=

'accuracy'))

)best_knn = kneighborsclassifier(n_neighbors=3)

# 選擇最優的k=3傳入模型

best_knn.fit(x_train, y_train)

# 訓練模型

print

(best_knn.score(x_test, y_test)

)# 看看評分

k 近鄰演算法

此文章參考機器學習實戰一書,具體的理論知識可以參考該書。本文的初衷只是為了做乙個複習,將學過的知識加以整理,其中不免有一定的錯誤。2.k 近鄰演算法的原理介紹 k 近鄰演算法通過測量不同的特徵值之間的距離進行分類。它的工作原理如下 存在乙個樣本的資料集合,也成為訓練樣本集合。並且樣本集中的每個資料都...

K 近鄰演算法

k 近鄰演算法採用測量不同特徵值之間的距離方法進行分類。優點 精度高 對異常值不敏感 無資料輸入假定 缺點 計算複雜度高 空間複雜度高 適用資料範圍 數值型和標稱型 工作原理 存在乙個樣本資料集合,也稱作訓練樣本集,並且樣本集中每個資料都存在標籤,即我們知道樣本集中每一資料與所屬分類的對應關係。輸入...

K 近鄰演算法

首先,我們將 k 近鄰演算法的基本理論 其次我們將使用python從文字檔案中匯入並解析資料 再次,討論當存在許多資料 的時,如何避免計算距離時可能碰到的一些常見錯誤 最後,利用實際的例子講解如何使用k 近鄰演算法改進約會 1.1 knn演算法 工作原理 存在乙個樣本資料集合,也稱作訓練樣本集,並且...