4.1 K近鄰算法

4.1 K近鄰算法

  • 思想極度簡單
  • 應(yīng)用數(shù)學(xué)知識少
  • 可以解釋機器學(xué)習(xí)算法使用過程中的很多細節(jié)問題
  • 更完整的刻畫機器學(xué)習(xí)的應(yīng)用流程

??K近鄰算法的本質(zhì)其實是認為兩個樣本如果足夠相似篙悯,就有更高的概率屬于同一個類別随橘。兩個樣本的相似性就是由在空間上兩個樣本的距離來決定的。</br>
??K近鄰算法可以解決監(jiān)督學(xué)習(xí)的分類問題,也可以解決回歸問題。

import numpy as np
import matplotlib.pyplot as plt
# 模擬樣本數(shù)據(jù)集
raw_data_x = [[3.423749247, 2.334567896],
              [3.110073483, 1.745697878],
              [1.347946498, 3.368464565],
              [3.582294042, 4.679565478],
              [2.280364646, 2.866699256],
              [7.423454548, 4.696522875],
              [5.745051465, 3.533989946],
              [9.172456464, 2.051111010],
              [7.792783481, 3.424088941],
              [7.939820184, 0.791637231]
            ]
raw_data_y = [0,0,0,0,0,1,1,1,1,1]
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='g')
plt.scatter(X_train[y_train==1, 0], X_train[y_train==1, 1], color='r')
plt.show()
image
# 此時來了新的樣本
x = np.array([8.093607318, 3.3657315144])
plt.scatter(X_train[y_train==0, 0], X_train[y_train==0, 1], color='g')
plt.scatter(X_train[y_train==1, 0], X_train[y_train==1, 1], color='r')
plt.scatter(x[0], x[1], color='b')
plt.show()
image

由此可以看出新的樣本點應(yīng)該是和紅色點是一類咏花。

KNN過程

歐拉距離:

\sqrt{(x^(a)-x^(b))^2 + (y^(a)-y^(b))^2}

\sqrt{(x^(a)-x^(b))^2 + (y^(a)-y^(b))^2 + (z^(a)-z^(b))^2}

\sqrt{(X_1^(a)-X_1^(b))^2 + (X_2^(a)-X_2^(b))^2 + ... + (X_n^(a)-X_n^(b))^2}

\sqrt{\sum_{i=1}^n(X_i^(a)-X_i^(b))^2}
from math import sqrt
distances = []
for x_train in X_train:
    d = sqrt(np.sum((x_train -x)**2))
    distances.append(d)
distances

# 等價于下面這行代碼
distances = [sqrt(np.sum((x_train -x)**2)) for x_train in X_train]
distances

運行結(jié)果如下:

image

計算完距離之后還不夠,因為我們主要想知道距離樣本點最近的點。

np.argsort(distances)

運行結(jié)果:
array([8, 5, 7, 6, 9, 3, 0, 1, 4, 2])贼急,我們可以看出距離最近的是索引為為8的點,距離第二近的是索引為5的點捏萍。

# 設(shè)置k值太抓,找出離樣本點最近的k個點的y值
k = 6
nearest = np.argsort(distances)
topK_y = [y_train[i] for i in nearest[:k]]

運行結(jié)果:[1, 1, 1, 1, 1, 0]我們可以看出,距離樣本點最近的6個點中令杈,前5個點的y值均為1.

# 計算不同類的點的個數(shù)走敌,統(tǒng)計頻數(shù)
from collections import Counter
Counter(topK_y)

運行結(jié)果:Counter({1: 5, 0: 1})這就表示值為1的元素有5個,值為0的元素只有1個逗噩。

# 就像投票一樣掉丽,我們選出票數(shù)最多的一位
votes = Counter(topK_y)
votes.most_common(1)
# 由上面我們得到的是一個列表跌榔,但是我們只關(guān)心新樣本所屬的類別,因此只需要取出的類別值即可捶障。
votes.most_common(1)[0][0]
image

由此我們可以看出僧须,新的樣本最有可能是1這一類。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末项炼,一起剝皮案震驚了整個濱河市担平,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌锭部,老刑警劉巖暂论,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異拌禾,居然都是意外死亡空另,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進店門蹋砚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來扼菠,“玉大人,你說我怎么就攤上這事坝咐⊙埽” “怎么了?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵墨坚,是天一觀的道長秧饮。 經(jīng)常有香客問我,道長泽篮,這世上最難降的妖魔是什么盗尸? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮帽撑,結(jié)果婚禮上泼各,老公的妹妹穿的比我還像新娘。我一直安慰自己亏拉,他們只是感情好扣蜻,可當我...
    茶點故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著及塘,像睡著了一般莽使。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上笙僚,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天芳肌,我揣著相機與錄音,去河邊找鬼。 笑死亿笤,一個胖子當著我的面吹牛檬嘀,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播责嚷,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼鸳兽,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了罕拂?” 一聲冷哼從身側(cè)響起揍异,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎爆班,沒想到半個月后衷掷,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡柿菩,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年戚嗅,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片枢舶。...
    茶點故事閱讀 40,090評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡懦胞,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出凉泄,到底是詐尸還是另有隱情躏尉,我是刑警寧澤,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布后众,位于F島的核電站胀糜,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏蒂誉。R本人自食惡果不足惜教藻,卻給世界環(huán)境...
    茶點故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望右锨。 院中可真熱鬧括堤,春花似錦、人聲如沸陡蝇。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽登夫。三九已至,卻和暖如春允趟,著一層夾襖步出監(jiān)牢的瞬間恼策,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留涣楷,地道東北人分唾。 一個月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓,卻偏偏與公主長得像狮斗,于是被迫代替她去往敵國和親绽乔。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,033評論 2 355

推薦閱讀更多精彩內(nèi)容