統計學習方法(2)——K近鄰模型
本部落格只記錄實現李航老師《統計學習方法》中討論的演算法,具體的演算法流程和推導,請看書中相關章節
這篇部落格用最簡單的方法實現了K近鄰模型。
之後會利用KD樹實現K-近鄰演算法。
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# author='icesun'
import numpy as np
from collections import Counter
#距離量度,根據p的不同,生成不同的距離零度
#p=1,曼哈頓距離
#p=2, 歐氏距離
#p為無窮大是,是各個座標距離的最大值
def distance(p, x1, x2):
dis = np.float_power(np.sum(np.float_power(x1 - x2, p)), 1 / p)
return dis
def KNN_classfier(test_datasets, test_labels, train_dataset, train_labels, k, distance):
# 記錄每一個測試樣例的預測結果
prdict = []
for test_vec in test_datasets:
# 記錄最近k個的距離以及label
knn_dist_list = []
knn_label_list = []
for i in range(len(train_dataset)):
label = train_labels[i]
train_vec = train_dataset[i]
dist = distance(train_vec, test_vec)
# 前k個訓練資料,直接填充到knn列表中
if i < k:
knn_dist_list.append(dist)
knn_label_list. append(label)
# 後面每一個數據,都要計算與測試資料之間的距離,
#若果距離小於knn列表中距離的最大值,則替換
else:
# 距離最大值
max_dis = max(knn_dist_list)
if dist < max_dis:
#替換資料
max_index = knn_dist_list.index(max_dis)
knn_dist_list[max_index] = dist
knn_label_list[max_index] = label
# 對標籤進行統計,出現最多的是測試樣例對應的label
label_counts = Counter(knn_label_list)
prdict.append(label_counts.most_common(1))
# 計算預測準確率
acc = np.sum(test_labels == np.array(prdict)) / len(prdict)
return prdict, acc
#if __name__ == '__main__':
# a = np.array([1,1,1,1,0])
# b = np.array([1,1,1,1,1])
# print(np.sum(a == b))
相關推薦
統計學習方法(2)——K近鄰模型
本部落格只記錄實現李航老師《統計學習方法》中討論的演算法,具體的演算法流程和推導,請看書中相關章節 這篇部落格用最簡單的方法實現了K近鄰模型。 之後會利用KD樹實現K-近鄰演算法。 #!/usr/bin
機器學習實戰(2)—— k-近鄰演算法
老闆:來了,老弟! 我:來了來了。 老闆:今天你要去看看KNN了,然後我給你安排一個工作! 我:好嘞!就是第二章嗎? 老闆:對!去吧! 可惡的老闆又給我安排任務了! 《機器學習實戰》這本書中的第二章為我們介紹了K-近鄰演算法,這是本書中第一個機器學習演算法,它非常有效而且易於
《統計學習方法》學習筆記(三)——K近鄰法
K近鄰法對於已標記類別,在新的例項樣本進行分類時,根據離其最近的K個訓練樣本例項,統計每類的相應的個數,通過多數表決等方式進行預測。舉個最簡單的例子,就是當K=1時,就是我們所熟悉的最近鄰方法(NN)。 首先,我們需要判斷離新的例項樣本最近的K個訓
養成良好的學習習慣-淺談學習方法(2)
成功最有效的方法是想有經驗的人學習成功最有效的方法是想有經驗的人學習!借鑒成功的人的態度和習慣。你可以讓你在任何想達到的目標表提高成功率!1、學習不專心。上課期間少幹別的。上課保持最大化的輸入,討論自己把知識最大化的輸出。課下把知識最大化會化的輸出。2、分組學習,找1-2個同伴,共同學習。今天上午學一個點,共
《統計學習方法》筆記三 k近鄰法
學習 屬於 基本 mage 容易 向量 規則 統計學 圖片 k近鄰是一種基本分類與回歸方法,書中只討論分類情況。輸入為實例的特征向量,輸出為實例的類別。k值的選擇、距離度量及分類決策規則是k近鄰法的三個基本要素。 k近鄰算法 給定一個訓練數據集,對新的輸入實例,在訓練數
機器學習實戰(一)k-近鄰kNN(k-Nearest Neighbor)
目錄 0. 前言 1. k-近鄰演算法kNN(k-Nearest Neighbor) 2. 實戰案例 2.1. 簡單案例 2.2. 約會網站案例 2.3. 手寫識別案例 學習完機器學習實戰的k-近鄰演算法,簡單的做個筆記。文中
統計學習方法(5)整合學習(提升方法)
統計學習方法(4)整合學習(提升方法) 1、Bagging: 基於並行策略:基學習器之間不存在依賴關係,可同時生成。 基本思路: 利用自助取樣法對訓練集隨機取樣,重複進行 T 次; 基於每個取樣集訓練一個基學習器,並得到 T 個基學習器; 預測時,集體投票決策
機器學習實戰(一)k-近鄰演算法kNN(k-Nearest Neighbor)
目錄 0. 前言 簡單案例 學習完機器學習實戰的k-近鄰演算法,簡單的做個筆記。文中部分描述屬於個人消化後的理解,僅供參考。 如果這篇文章對你有一點小小的幫助,請給個關注喔~我會非常開心的~ 0. 前言 k-近鄰演算法kNN(k-Neare
《機器學習實戰》學習筆記(1)——k-近鄰演算法
1 k-近鄰演算法概述 k-近鄰演算法,採用測量不同特徵值之間的距離方法進行分類。 工作原理: 存在一個樣本資料集,也成為訓練樣本集,並且樣本集中每個資料都存在標籤,即我們知道樣本集中的每一資料與所屬分類的對應關係。輸入沒有標籤的新資料後,將新資
演算法工程師修仙之路:李航統計學習方法(一)
第1章 統計學習方法概論 統計學習 統計學習的特點 統計學習(statistical learning)是關於計算機基於資料構建概率統計模型並運用模型對資料進行預測與分析的一門學科,統計學習也稱為統計機器學習(statistical machine learnin
機器學習筆記(3)——K近鄰法
K-nearest neighbor(KNN) k近鄰法一種基本的分類與迴歸方法,原理和實現都比較直觀。其輸入為樣本的特徵向量,輸出為樣本的類別,可以進行多類別分類。k近鄰法是通過統計與未知樣本最近點的訓練樣本的類別來投票決定未知樣本的類別,不具有顯式的學習過
六、改進神經網路的學習方法(2):Softmax輸出層
本部落格主要內容為圖書《神經網路與深度學習》和National Taiwan University (NTU)林軒田老師的《Machine Learning》的學習筆記,因此在全文中對它們多次引用。初出茅廬,學藝不精,有不足之處還望大家不吝賜教。
機器學習實戰(一)--k近鄰演算法
機器學習實戰(一)–k近鄰演算法 最近在學習機器學習,順便做個記錄,一方面給自己加深印象,另一方面與大家共勉,希望能給大家一些幫助,我也是剛入門的新手,有不對的地方還請多多指教。 我用的Python3.5,有些程式碼與書上不太一樣。 程式清單2-1 k-近
《統計學習方法(李航)》k近鄰 學習筆記
作者:jliang https://blog.csdn.net/jliang3 1.重點歸納 1)k近鄰是一種基本分類與迴歸方法,不具有顯式的學習過程。 2)模型由三個基本要素決定:距離度量、k值選擇和分類決策規則。 3)k近鄰法最簡單的實現方法是線性掃描,當
統計學習方法筆記(三)K近鄰演算法
K近鄰法(KNN)是一種基本的分類和迴歸的方法,KNN的基本思想是給出一定數量帶有標籤的訓練樣本,使用這些訓練樣本將特徵空間劃分成許多的子空間,當一個新的測試樣本進來以後,這個測試樣本一定會落在一個超矩形區域內部,然後找到距離這個測試樣本最近的K個訓練樣本,用這些訓練樣本的
《統計學習方法(李航)》講義 第04章 樸素貝葉斯
ima .cn 效率 常用 1-1 估計 實現 技術 com 樸素貝葉斯(naive Bayes) 法是基於貝葉斯定理與特征條件獨立假設的分類方法。對於給定的訓練數據集,首先基於特征條件獨立假設學習輸入/輸出的聯合概率分布;然後基於此模型,對給定的輸入x,利用貝
《統計學習方法(李航)》講義 第05章 決策樹
lan 定義 if-then 利用 建立 then 統計 來源 根據 決策樹(decision tree) 是一種基本的分類與回歸方法。本章主要討論用於分類的決策樹。決策樹模型呈樹形結構,在分類問題中,表示基於特征對實例進行分類的過程。它可以認為是if-then
Linux內核學習筆記(2)-- 父進程和子進程及它們的訪問方法
endif eric 有一個 generic inter 做的 int inf ati Linux系統中,進程之間有一個明顯的繼承關系,所有進程都是 PID 為1的 init 進程的後代。內核在系統啟動的最後階段啟動 init 進程。該進程讀取系統的初始化腳本(init
機器學習十大經典演算法:(2)k-means演算法
1.基本Kmeans演算法[1] [cpp] view plain copy 選擇K個點作為初始質心 repeat
機器學習-7(實戰演練k-近鄰演算法)
首先,這裡不討論你如何獲取資料,我們假設這些都已存在我們的庫裡面了,並已經建立好了正確的分類了。 這裡我直接截圖我的實驗庫吧: 現在我們的任務就是隨便輸入一個經緯度,來看看它屬於哪一個國家 先來把我們的讀取任務搞定吧 OK,初步清洗完成,把標籤國家拿出來了,經緯度拿出