機(jī)器學(xué)習(xí) - k近鄰法

k 近鄰法

1森瘪、K近鄰法定義

給定一個(gè)訓(xùn)練數(shù)據(jù)集,對(duì)于新輸入的實(shí)例渊涝,在訓(xùn)練數(shù)據(jù)集中找到與該實(shí)例距離最近的K個(gè)實(shí)例,看這K個(gè)實(shí)例多數(shù)屬于某個(gè)類稳其,則將該實(shí)例分為這個(gè)類驶赏。

2.K近鄰法算法

2.1 k近鄰算法步驟

輸入:數(shù)據(jù)集T=\lbrace (x_1,y_1),(x_2,y_2),...,(x_N,y_N) \rbrace,其中 x_i \in X \subseteq R^n,y \in Y = \lbrace c_1,c_2,...,c_K \rbrace,i=1,2,..,N;實(shí)例特征向量x
輸出:實(shí)例s所屬的類y
步驟:
(1)根據(jù)給定的距離度量,在訓(xùn)練集T中找出與x最近鄰的K個(gè)點(diǎn)既鞠,涵蓋著K個(gè)點(diǎn)的x的鄰域記作N_k(x);
(2)在N_k(x)中煤傍,根據(jù)分類決策規(guī)則(例如多數(shù)表決)決定x所屬于的類別y
y = argmax_{c_j} \sum_{x_i \in N_k(x)} I(y_i = c_i),i=1,2,...,N;j=1,2,..,K
其中I為指示函數(shù),即當(dāng)y_i=c_j時(shí)嘱蛋,I為1蚯姆,否則I為0。
K近鄰算法沒有顯示的學(xué)習(xí)過程洒敏。k近鄰法的特殊情況是K=1的情形龄恋,稱為最近鄰算法。

2.2實(shí)現(xiàn)

import numpy as np

# 1.數(shù)據(jù)集(擴(kuò)充perceptron中的數(shù)據(jù)),6個(gè)正例凶伙,3個(gè)負(fù)例
data_coord = np.asarray(((3, 3), (4, 3), (5, 5), (4.5), (5, 4), (3, 5),
                         (1, 1), (0.0), (1, -1)))
data_label = np.asarray((1, 1, 1, 1, 1, 1,
                         -1, -1, -1))

# 2.測(cè)試數(shù)據(jù)
test_data = np.asarray((0.3,0.4))
K = 2

# 計(jì)算兩點(diǎn)的距離(兩個(gè)向量)
def get_dis(a,b):
    return np.linalg.norm(a - b)


# knn
def knn(test_data, train_data,train_label, K):
    max_distance = np.Inf
    # test_data k個(gè)鄰居的距離
    knn_list = list((max_distance-i) for i in range(K))
    # test_data k個(gè)鄰居,的下標(biāo)
    label_list = list(-1 for i in range(K))
    label = 0

    for i in range(len(train_label)):
        vec_train = train_data[i]
        label_train = train_label[i]
        # 計(jì)算train集合中郭毕,每個(gè)點(diǎn)與test_data的距離
        test_train_dist = get_dis(test_data, vec_train)
        curr_max_knn = np.argmax(knn_list)
        curr_max_dist = knn_list[curr_max_knn]
        # 找到train集合中,跟test_data距離最近的K個(gè)點(diǎn)
        if test_train_dist < curr_max_dist:
            knn_list[curr_max_knn] = curr_max_dist
            label_list[curr_max_knn] = label_train

    # 在knn_list中函荣,“投票表決”
    print("label_list = ",label_list)
    outcome = np.sum(label_list)
    if outcome > 0:
        label = 1
    elif outcome < 0:
        label = -1
    print("label = ",label)
    return label;

# run it
knn(test_data = test_data,train_data=data_coord,train_label=data_label,K=K)

結(jié)果:test_data屬于-1類

參考與致謝:
[1]《統(tǒng)計(jì)學(xué)習(xí)方法》
[2] WenDesi/lihang_book_algorithm

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末显押,一起剝皮案震驚了整個(gè)濱河市扳肛,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌乘碑,老刑警劉巖挖息,帶你破解...
    沈念sama閱讀 221,820評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異兽肤,居然都是意外死亡套腹,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門资铡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來熄守,“玉大人屑咳,你說我怎么就攤上這事莹菱」冻埽” “怎么了?”我有些...
    開封第一講書人閱讀 168,324評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵宛官,是天一觀的道長(zhǎng)葫松。 經(jīng)常有香客問我,道長(zhǎng)底洗,這世上最難降的妖魔是什么腋么? 我笑而不...
    開封第一講書人閱讀 59,714評(píng)論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮亥揖,結(jié)果婚禮上珊擂,老公的妹妹穿的比我還像新娘。我一直安慰自己费变,他們只是感情好摧扇,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,724評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著挚歧,像睡著了一般扛稽。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上滑负,一...
    開封第一講書人閱讀 52,328評(píng)論 1 310
  • 那天在张,我揣著相機(jī)與錄音,去河邊找鬼矮慕。 笑死帮匾,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的痴鳄。 我是一名探鬼主播瘟斜,決...
    沈念sama閱讀 40,897評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了哼转?” 一聲冷哼從身側(cè)響起明未,我...
    開封第一講書人閱讀 39,804評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤槽华,失蹤者是張志新(化名)和其女友劉穎壹蔓,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體猫态,經(jīng)...
    沈念sama閱讀 46,345評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡佣蓉,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,431評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了亲雪。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片勇凭。...
    茶點(diǎn)故事閱讀 40,561評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖义辕,靈堂內(nèi)的尸體忽然破棺而出虾标,到底是詐尸還是另有隱情,我是刑警寧澤灌砖,帶...
    沈念sama閱讀 36,238評(píng)論 5 350
  • 正文 年R本政府宣布璧函,位于F島的核電站,受9級(jí)特大地震影響基显,放射性物質(zhì)發(fā)生泄漏蘸吓。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,928評(píng)論 3 334
  • 文/蒙蒙 一撩幽、第九天 我趴在偏房一處隱蔽的房頂上張望库继。 院中可真熱鬧,春花似錦窜醉、人聲如沸宪萄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,417評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽拜英。三九已至,卻和暖如春读串,著一層夾襖步出監(jiān)牢的瞬間聊记,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,528評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工恢暖, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留排监,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,983評(píng)論 3 376
  • 正文 我出身青樓杰捂,卻偏偏與公主長(zhǎng)得像舆床,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,573評(píng)論 2 359

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