01、KNN算法

一、python手寫KNN算法測試案例

import matplotlib.pyplot as plt
import numpy as np
from math import sqrt
from collections import Counter

# 原始數(shù)據(jù)
raw_data_x = [[3.393533211, 2.331273381],
    [3.110073483, 1.781539638],
    [1.343808831, 3.368360954],
    [3.582294042, 4.679179110],
    [2.280362439, 2.866990263],
    [7.423436942, 4.696522875],
    [5.745051997, 3.533989803],
    [9.172168622, 2.511101045],
    [7.792783481, 3.424088941],
    [7.939820817, 0.791637231]]
raw_data_y = [0, 0, 0, 0, 0, 1, 1, 1, 1, 1]
target = [8.093607318, 3.365731514]

# 轉(zhuǎn)成numpy類型矩陣
X_train = np.array(raw_data_x)
y_train = np.array(raw_data_y)

# 繪制圖像
plt.scatter(X_train[y_train == 0, 0], X_train[y_train == 0, 1], color="r")
plt.scatter(X_train[y_train == 1, 0], X_train[y_train == 1, 1], color="b")
plt.scatter(target[0], target[1], color="y")
plt.show()

def KNN_classify(k, X_train, y_train, x):
    distances = [sqrt(np.sum((x_train - x)**2)) for x_train in X_train]
    nearest_k = np.argsort(distances)[:k]
    topk_y = y_train[nearest_k]
    # 統(tǒng)計元素和元素出現(xiàn)的頻次
    votes = Counter(topk_y)
    # most_common(n):找出票數(shù)最多的n個元素
    return votes.most_common(1)[0][0]

predict_y = KNN_classify(6, X_train, y_train, target)
print(predict_y)
```
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容