一、KNN算法是什麼?
KNN(K-近鄰算法)是一種常用的分類與回歸算法,在現實生活中得到廣泛應用。它被廣泛應用於語音識別、圖像識別、在線問答等領域。
KNN算法的核心思想是將待分類數據的特徵與訓練數據的特徵進行相似度計算,然後找出K個與待分類數據最相似的訓練數據,從這K個訓練數據中進行分類或回歸。
二、KNN算法的實現步驟
接下來我們將介紹KNN算法的實現步驟:
1. 收集數據
我們需要採集大量的已知數據,以及這些數據的分類或回歸信息。這些訓練數據將被作為分類或回歸的基礎。
2. 數據預處理
在收集數據後,通常需要對數據進行預處理。這一步主要涉及到特徵的選擇和數據歸一化處理。選擇合適的特徵可以提高算法的準確性,在數據歸一化處理中,將不同特徵的值進行歸一化處理可以使得不同特徵對分類結果的影響更加均衡。
3. 定義相似度計算方法
在KNN算法中,相似度計算方法通常採用歐氏距離或曼哈頓距離。根據具體問題的特點,選擇不同的相似度計算方法。
# 計算兩個數據點之間的歐氏距離 import numpy as np def euclidean_distance(x1, x2): return np.sqrt(np.sum((x1 - x2)**2))
4. 查找K個最相似的數據
在找到一個未分類的數據與訓練數據之間的相似性函數後,選擇K個與該數據相似度最高的訓練數據。
# 找到K個最近鄰 def get_neighbors(X_train, y_train, x_test, k): distances = [] for i in range(len(X_train)): distances.append((i, euclidean_distance(X_train[i], x_test))) distances.sort(key=lambda x: x[1]) neighbors = [] for i in range(k): neighbors.append((X_train[distances[i][0]], y_train[distances[i][0]])) return neighbors
5. 對K個鄰近數據進行分類或回歸
在找到K個最相似的訓練數據之後,我們要使用這些訓練數據進行分類或回歸。分類問題中,我們選擇K個訓練數據中出現頻率最高的類別作為待分類數據的類別。在回歸問題中,我們可以計算K個訓練數據的平均值作為待預測數據的預測結果。
# 對K個鄰近數據進行分類或回歸 def predict_classification(neighbors): class_votes = {} for neighbor in neighbors: response = neighbor[1] if response in class_votes: class_votes[response] += 1 else: class_votes[response] = 1 sorted_votes = sorted(class_votes.items(), key=lambda x: x[1], reverse=True) return sorted_votes[0][0] def predict_regression(neighbors): return np.mean([x[1] for x in neighbors])
三、小結
總之,KNN算法是一種常用的分類與回歸算法,它的基本理念是找到最相似的訓練數據並使用這些訓練數據進行分類或回歸。在實現KNN算法時,需要進行訓練數據的收集、數據預處理、定義相似度計算方法、查找K個最相似的數據以及對這些數據進行分類或回歸等步驟。通過以上步驟,我們可以完成基本的KNN算法實現。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/196170.html