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演算法 工作原理 存在乙個樣本資料集合,也稱作訓練樣本集,並且...