k 鄰近演算法和決策樹

2021-09-29 19:38:59 字數 4333 閱讀 1546

k-近鄰演算法概述

k-近鄰演算法採用測量不同特徵值之間的距離方法進行分類。

工作原理

存在乙個樣本數 據集合,也稱作訓練樣本集,並且樣本集中每個資料都存在標籤,即我們知道樣本集中每一資料 與所屬分類的對應關係。輸入沒有標籤的新資料後,將新資料的每個特徵與樣本集中資料對應的 特徵進行比較,然後演算法提取樣本集中特徵最相似資料(最近鄰)的分類標籤。一般來說,我們 只選擇樣本資料集中前k個最相似的資料,這就是k-近鄰演算法中k的出處,通常k是不大於20的整數。 最後,選擇k個最相似資料**現次數最多的分類,作為新資料的分類。

k-近鄰演算法的一般流程

(1) 收集資料:可以使用任何方法。

(2) 準備資料:距離計算所需要的數值,最好是結構化的資料格式。

(3) 分析資料:可以使用任何方法。

(4) 訓練演算法:此步驟不適用於k-近鄰演算法。

(5) 測試演算法:計算錯誤率。

(6) 使用演算法:首先需要輸入樣本資料和結構化的輸出結果,然後執行k-近鄰演算法判定輸 入資料分別屬於哪個分類,最後應用對計算出的分類執行後續的處理。

開發流程

收集資料:任何方法

準備資料:距離計算所需要的數值,最好是結構化的資料格式

分析資料:任何方法

訓練演算法:此步驟不適用於 k-近鄰演算法

測試演算法:計算錯誤率

使用演算法:輸入樣本資料和結構化的輸出結果,然後執行 k-近鄰演算法判斷輸入資料分類屬於哪個分類,最後對計算出的分類執行後續處理

3、knn 專案案例

專案案例:手寫數字識別系統

專案概述

構造乙個能識別數字 0 到 9 的基於 knn 分類器的手寫數字識別系統。需要識別的數字是儲存在文字檔案中的具有相同的色彩和大小:寬高是 32 畫素 * 32 畫素的黑白影象。

開發流程

收集資料:提供文字檔案。

準備資料:編寫函式 img2vector(), 將影象格式轉換為分類器使用的向量格式

分析資料:在 python 命令提示符中檢查資料,確保它符合要求

訓練演算法:此步驟不適用於 knn

測試演算法:編寫函式使用提供的部分資料集作為測試樣本,測試樣本與非測試樣本的區別在於測試樣本是已經完成分類的資料,如果**分類與實際類別不同,則標記為乙個錯誤

使用演算法:本例沒有完成此步驟,若你感興趣可以構建完整的應用程式,從影象中提取數字,並完成數字識別,美國的郵件分揀系統就是乙個實際執行的類似系統

收集資料: 提供文字檔案

準備資料:將影象文字資料轉換為向量

分析資料:在 python 命令提示符中檢查資料,確保它符合要求

訓練演算法:此步驟不適用於 knn

測試演算法:編寫函式使用提供的部分資料集作為測試樣本,如果**分類與實際類別不同,則標記為乙個錯誤

knn是分類資料最簡單最有效的演算法,本章通過兩個例子講述了如何使用k-近鄰演算法 構造分類器。k-近鄰演算法是基於例項的學習,使用演算法時我們必須有接近實際資料的訓練樣本數

據。k-近鄰演算法必須儲存全部資料集,如果訓練資料集的很大,必須使用大量的儲存空間。

此外, 由於必須對資料集中的每個資料計算距離值,實際使用時可能非常耗時。 k-近鄰演算法的另乙個缺陷是它無法給出任何資料的基礎結構資訊,因此我們也無法知曉平均

例項樣本和典型例項樣本具有什麼特徵。

決策樹1、決策樹 概述

決策樹(decision tree)演算法是一種基本的分類與回歸方法,是最經常使用的資料探勘演算法之一。這裡只討論用於分類的決策樹。

決策樹模型呈樹形結構,在分類問題中,表示基於特徵對例項進行分類的過程。它可以認為是

if-then 規則的集合,也可以認為是定義在特徵空間與類空間上的條件概率分布。

決策樹學習通常包括 3 個步驟:特徵選擇、決策樹的生成和決策樹的修剪。

決策樹的定義:

分類決策樹模型是一種描述對例項進行分類的樹形結構。決策樹由結點(node)和有向邊(directed edge)組成。結點有兩種型別:內部結點(internal node)和葉結點(leaf node)。內部結點表示乙個特徵或屬性(features),葉結點表示乙個類(labels)。

用決策樹對需要測試的例項進行分類:從根節點開始,對例項的某一特徵進行測試,根據測試結果,將例項分配到其子結點;這時,每乙個子結點對應著該特徵的乙個取值。如此遞迴地對例項進行測試並分配,直至達到葉結點。最後將例項分配到葉結點的類中。

2、決策樹 原理

須知概念

熵(entropy): 熵指的是體系的混亂的程度,在不同的學科中也有引申出的更為具體的定義,是各領域十分重要的參量。(大多數學過物理化學的人應該很熟悉這個概念,沒什麼變化。)

資訊理論(information theory)中的熵(夏農熵): 是一種資訊的度量方式,表示資訊的混亂程度,也就是說:資訊越有序,資訊熵越低。(說白了也是講資訊的混亂程度,我的理解是:一堆資訊中不同的類很多,說明混亂程度高,熵就高;一堆資訊中只有一兩種類,那熵就比較低。)

資訊增益(information gain): 在劃分資料集前後資訊發生的變化稱為資訊增益。(就是劃分資料到不同子集前後,熵的變化。)

計算方法如下圖:

工作原理使用 createbranch() 方法,如下所示:

開發流程

收集資料:可以使用任何方法。

準備資料:樹構造演算法 (這裡使用的是id3演算法,只適用於標稱型資料,這就是為什麼數值型資料必須離散化。

還有其他的樹構造演算法,比如cart)

分析資料:可以使用任何方法,構造樹完成之後,我們應該檢查圖形是否符合預期。

訓練演算法:構造樹的資料結構。

測試演算法:使用訓練好的樹計算錯誤率。

使用演算法:此步驟可以適用於任何監督學習任務,而使用決策樹可以更好地理解資料的內在含義。

3、決策樹 專案案例

使用決策樹****眼鏡型別

專案概述

**眼鏡型別包括硬材質、軟材質以及不適合佩戴**眼鏡。眼科醫生是如何判斷患者需要佩戴的鏡片型別;一旦理解了決策樹的工作原理,我們甚至也可以幫助人們判斷需要佩戴的鏡片型別。

開發流程

收集資料: 提供的文字檔案。

解析資料: 解析 tab 鍵分隔的資料行

分析資料: 快速檢查資料,確保正確地解析資料內容,使用createplot() 函式繪製最終的樹形圖。

訓練演算法: 使用

createtree() 函式。 測試演算法:

編寫測試函式驗證決策樹可以正確分類給定的資料例項。

使用演算法: 儲存樹的資料結構,以便下次使用時無需重新構造樹。

收集資料:提供的文字檔案文字檔案資料格式如下:

解析資料:解析 tab 鍵分隔的資料行

分析資料:快速檢查資料,確保正確地解析資料內容,使用 createplot() 函式繪製最終的樹形圖。

如圖所示的決策樹非常好地匹配了實驗資料,然而這些匹配選項可能太多了。我們將這種 問題稱之為過度匹配(overfitting)。為了減少過度匹配問題,我們之後會討論裁剪決策樹,去掉一些不 必要的葉子節點。

訓練演算法:使用 createtree() 函式

訓練演算法:使用 createtree() 函式

測試演算法: 編寫測試函式驗證決策樹可以正確分類給定的資料例項。

使用演算法: 儲存樹的資料結構,以便下次使用時無需重新構造樹。

4、決策樹 小結

決策樹分類器就像帶有終止塊的流程圖,終止塊表示分類結果。開始處理資料集時,我們首 先需要測量集合中資料的不一致性,也就是熵,然後尋找優方案劃分資料集,直到資料集中的所有資料屬於同一分類。id3演算法可以用於劃分標稱型資料集。構建決策樹時,我們通常採用遞 歸的方法將資料集轉化為決策樹。一般我們並不構造新的資料結構,而是使用python語言內嵌的資料結構字典儲存樹節點資訊。

使用matplotlib的註解功能,我們可以將儲存的樹結構轉化為容易理解的圖形。python語言的 pickle 模組可用於儲存決策樹的結構。**眼鏡的例子表明決策樹可能會產生過多的資料集劃分,

從而產生過度匹配資料集的問題。我們可以通過裁剪決策樹,合併相鄰的無法產生大量資訊增益的葉節點,消除過度匹配問題。

決策樹和CART決策樹

首先簡單介紹下決策樹 說到決策樹肯定離不開資訊熵 什麼是資訊熵 不要被這名字唬住,其實很簡單 乙個不太可能的時間居然發生了,要比乙個非常可能的時間發生提供更多的資訊。訊息說 今天早上太陽公升起 資訊量是很少的,以至於沒有必要傳送。但另一條訊息說 今天早上日食 資訊量就很豐富。概率越大資訊量就越少,與...

決策樹演算法

決策樹是一種樹型結構,其中每個內部結點表示在乙個屬性上的測試,每個分支代表乙個測試輸出,每個葉結點代表一種類別。決策樹學習是以例項為基礎的歸納學習,採用的是自頂向下的遞迴方法,其基本思想是以資訊熵為度量構造一棵熵值下降最快的樹,到葉子結點處的熵值為零,此時每個葉節點中的例項都屬於同一類。決策樹學習演...

決策樹演算法

本文主要介紹id3 c4.5和cart演算法 決策樹起源於概念學習系統 cls 概念學習模型 是乙個事先定義的範疇集合和一些有關例子是否落入給定範疇的判定 概念學習的主要任務 是判斷所給定事物的屬性或特性,並且正確地區分這些事物,將其劃分到某乙個範疇 對於如下決策樹模型 我們首先考慮他的屬性outl...