共計 917 個字符,預計需要花費 3 分鐘才能閱讀完成。
下面是一個簡單的示例代碼,實現了 knn 算法:
python
import numpy as np
from collections import Counter
def knn(train_X, train_y, test_X, k):
distances = []
# 計算測試樣本與訓練樣本之間的距離
for i in range(len(train_X)):
distance = np.sqrt(np.sum(np.square(test_X - train_X[i])))
distances.append((distance, train_y[i]))
# 按距離從小到大排序
distances.sort(key=lambda x: x[0])
# 選擇距離最近的 k 個樣本
neighbors = []
for i in range(k):
neighbors.append(distances[i][1])
# 根據 k 個樣本的標簽進行投票,選擇出現次數最多的標簽作為預測結果
counter = Counter(neighbors)
prediction = counter.most_common(1)[0][0]
return prediction
# 測試數據
train_X = np.array([[1, 1], [1, 2], [2, 2], [3, 3], [4, 4]])
train_y = np.array([0, 0, 1, 1, 1])
test_X = np.array([[2, 3]])
# 使用 knn 算法進行預測
prediction = knn(train_X, train_y, test_X, 3)
print(" 預測結果:", prediction)
在這個示例中,我們使用 numpy 庫進行數據處理,collections 庫中的 Counter 類用于計算標簽的出現次數。首先,計算測試樣本與訓練樣本之間的歐式距離,并將距離和對應的標簽保存在列表中。然后,根據距離從小到大排序,選擇距離最近的 k 個樣本。最后,根據 k 個樣本的標簽進行投票,選擇出現次數最多的標簽作為預測結果。在這個例子中,我們使用一個簡單的二維數據集進行測試,預測結果為 1。
丸趣 TV 網 – 提供最優質的資源集合!