1. 程式人生 > >《機器學習實戰》第二章——k-近鄰演算法——筆記

《機器學習實戰》第二章——k-近鄰演算法——筆記

在看這一章的書之前,在網上跟著博主Jack-Cui的部落格學習過,非常推薦。

部落格地址:http://blog.csdn.net/c406495762 

《Python3《機器學習實戰》學習筆記(一):k-近鄰演算法(史詩級乾貨長文)》

講述的非常細緻,文字幽默有趣,演算法細節也講述的非常清楚,較書中而言還有sklearn調庫的補充內容。

因此,在這裡,我只總結自己的筆記。

1.本章內容主要包含:k-近鄰分類演算法;從文字檔案中解析和匯入資料;使用Matplotlib建立擴散圖;歸一化數值。k-

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

優點:精度高、對異常值不敏感、無資料輸入假定。

缺點:計算複雜度高、空間複雜度高。

適用資料範圍:數值和標稱型。

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

4.k-近鄰演算法一般流程

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

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

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

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

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

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

5.錯誤率是常用的評估方法,主要用於評估分類器在某個資料集上的執行效果。

6.在處理不同取值範圍的特徵值時,我們通常採用的方法是將數值歸一化

7.機器學習一個很重要的工作就是評估演算法的正確率,通常我們只提供已有資料90%作為訓練樣本來訓練分類器,而使用其餘的10%資料(隨機選擇)去測試分類器,檢測分類器的正確率。

8.示例1:在約會網站上使用k-近鄰演算法

1)收集資料:提供文字檔案;

2)準備資料:使用python解析文字檔案;

3)分析資料:使用Matplotlib畫二維擴散圖;

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

5)測試演算法:使用海倫提供的部分資料作為測試樣本。

測試樣本和非測試樣本的區別在於:測試樣本是已經完成分類的資料,如果預測分類與實際類別不同,則標記為一個錯誤。

6)使用演算法:產生簡單的命令列程式,然後海倫可以輸入一些特徵資料以判斷對方是否為自己喜歡的型別。

9.示例2:使用k-近鄰演算法的手寫識別系統

1)收集資料:提供文字檔案;

2)準備資料:編寫函式classify0(),將影象格式轉換為分類器使用的list格式;

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

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

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

6)使用演算法:本章未涉及。

10.k-近鄰演算法是分類資料最簡單最有效的演算法,但是在使用時我們必須有接近實際資料的訓練樣本資料,必須儲存全部資料集,如果訓練資料集很大,必須使用大量的儲存空間。此外,由於必須對資料集中的每個資料計算距離值,實際使用時可能非常耗時。k-近鄰演算法另一個缺陷是它無法給出任何資料的基礎結構資訊,因此我們也無法知曉平均例項樣本和典型例項樣本具有什麼特徵。