機器學習-K近鄰演算法-KNN

Gazikel發表於2024-04-27

1 K-緊鄰演算法簡介

1.1 什麼是K-近鄰演算法

直觀上理解,就是根據距離的遠近來判斷你所處於的類別。

但是,也會存在一些問題,距離最近的樣本所屬於的類別與你需要判斷的類別可能不是同一種類別。

1.1 KNN概念

K Nearest Neighbor演算法又叫做KNN演算法,這個演算法是機器學習裡面比較經典的演算法,總體來說KNN演算法是相對比較容易理解的演算法。

  • 定義
    如果一個樣本再特徵空間中的k個最相似(即特徵空間中最鄰近)的樣本大多數屬於某一個類別,則該樣本也屬於這個類別。

  • 距離公式
    兩個樣本的距離可以透過如下公式計算,又叫歐氏距離,關於距離公式會在後面進行討論

2 K緊鄰演算法API

Scikit-learn工具介紹

官方網址

  • Python語言的機器學習工具
  • Scikit-learn包括許多知名的機器學習演算法的實現
  • Scikit-learn文件完善,容易上手,豐富的API
  • 目前穩定版本1.4.2

安裝

pip install scikit-learn==1.4.2

安裝完成後可以透過以下命令檢視是否安裝成功

import sklearn
  • 安裝scikit-learn時需要依賴numpy、scipy等庫

API使用

  • sklearn.neighbors.KNeighborsClassifier(n_neighbors=5)

案例

"""
scikit-learn中關於knn的簡單案例
"""
from sklearn.neighbors import KNeighborsClassifier

# 獲取資料
x = [[1], [2], [3], [4]]
y = [1, 1, 0, 0]

# 機器學習
# 例項化一個訓練模型
estimator = KNeighborsClassifier(n_neighbors=2)
# 呼叫fit方法進行訓練
estimator.fit(x, y)

# 預測其它值
ret = estimator.predict([[10]])
print(ret)

3 距離度量

歐氏距離

歐式距離時最容易直觀理解的距離度量方法。

曼哈頓距離(Manhattan Distance)

在曼哈頓街區要從一個十字路口開車到另一個十字路口,駕駛距離顯然不是兩點間的直線距離。這個實際駕駛距離就是“曼哈頓距離”。曼哈頓距離也稱為“城市街區距離”(City Block Distance)

相關文章