K最近鄰
- 1、引言
- 2、決策樹
- 2.1 定義
- 2.2 原理
- 2.3 實現方式
- 2.3.1 距離度量
- 2.3.2 K值的選擇
- 2.4 算法公式
- 2.5 代碼示例
- 3、總結
1、引言
小屌絲:魚哥, 這么長時間沒更新了,是不是得抓緊時間了。
小魚:最近可都是在忙的呢, 這不正在寫著呢。
小屌絲:我這一提醒你,你就說已經開始寫了,我要是不提醒你呢
小魚:不提醒我,那我照樣在寫啊。
小屌絲:…行啊,魚哥,你這說的我竟然無力反駁。
小魚:這就對了哦,今天來分享一下 K最近鄰
小屌絲:????乛?乛????
2、決策樹
2.1 定義
K最近鄰(K-Nearest Neighbors,簡稱KNN)是一種基本的機器學習分類與回歸方法。
基本思想:在特征空間中,如果一個實例的大部分近鄰都屬于某一個類別,則該實例也屬于這個類別。
2.2 原理
KNN算法的原理相對簡單。對于給定的測試實例,基于某種距離度量找出訓練集中與其最靠近的K個訓練實例,然后統計這K個實例中多數屬于的類別,并將其作為預測結果。
KNN算法的核心在于兩點:
- 如何計算實例之間的距離,
- 如何選擇K值。
2.3 實現方式
實現方式有2種,及 距離度量 和 K值選擇
2.3.1 距離度量
- 距離度量:常用的距離度量有歐氏距離、曼哈頓距離等。
- 歐氏距離:
(d(x, y) = \sqrt{\sum_{i=1}^{n} (x_i - y_i)^2})
- 曼哈頓距離:
(d(x, y) = \sum_{i=1}^{n} |x_i - y_i|)
- 歐氏距離:
2.3.2 K值的選擇
- K值的選擇:K值的選擇會對預測結果產生很大的影響。如果K值選擇過小,可能會導致模型對噪聲數據過于敏感;如果K值選擇過大,可能會使模型過于簡單,忽略數據的局部特征。
2.4 算法公式
在K近鄰算法中,我們需要使用距離度量方法來計算樣本之間的距離。其中,歐氏距離(Euclidean Distance)是應用廣泛的一種距離度量方法。
歐氏距離的計算公式如下:
d(x, y) = √((x1 - y1)2 + (x2 - y2)2 + ... + (xn - yn)2)
其中,d(x, y)表示點x和點y之間的距離。x1, x2, …, xn是點x的n個維度的坐標,y1, y2, …, yn是點y的n個維度的坐標。
該公式計算的是點x和點y之間的直線距離。
2.5 代碼示例
# -*- coding:utf-8 -*-
# @Time : 2024-02-21
# @Author : Carl_DJ'''
實現功能:使用scikit-learn庫實現的KNN分類器'''
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
from sklearn.datasets import load_iris # 加載數據集
iris = load_iris()
X = iris.data
y = iris.target # 劃分訓練集和測試集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # 數據標準化
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test) # 創建KNN分類器
knn = KNeighborsClassifier(n_neighbors=3) # 訓練模型
knn.fit(X_train, y_train) # 預測測試集結果
y_pred = knn.predict(X_test) # 輸出預測結果
print(y_pred)
3、總結
K最近鄰算法是一種簡單而有效的機器學習算法,適用于多種分類和回歸任務。
它基于實例學習,不需要顯式的訓練過程,而是通過計算測試實例與訓練實例之間的距離來進行預測。
然而,KNN算法也存在一些局限性,如對數據的預處理和特征選擇較為敏感,計算復雜度較高,特別是當數據集較大時。
因此,在實際應用中,需要根據具體問題和數據集特點來選擇合適的算法和參數。
我是小魚:
- CSDN 博客專家;
- 阿里云 專家博主;
- 51CTO博客專家;
- 多個知名企業認證講師;
- 認證金牌面試官;
- 職場面試培訓、職場規劃師;
- 多個國內主流技術社區的認證專家博主;
- 多款主流產品(阿里云等)測評一、二等獎獲得者;
關注小魚,學習機器學習領域的知識。