今天學習了一點機器學習的知識,主要是機器學習最基本的演算法-k鄰近演算法。正好今天寫這篇blog可以複習鞏固,其中涉及到的code和一些內容來自《機器學習實戰》。k-近鄰演算法(knn)採用測量不同特徵值之間的距離方法進行分類。工作原理:首先存在乙個樣本資料集合(訓練樣本集),並且樣本集中每個資料都存在標籤(監督學習)。所謂的標籤就是樣本集每一資料與所屬分類的對應關係。輸入沒有標籤的新資料後,將新資料的每個特徵與樣本集中資料對應的特徵相比較,然後演算法提取樣本集中特徵最相似資料(最近鄰)的分類標籤。一般來說,我們只選擇樣本資料集中的前k個最相似的資料,這就是k近鄰演算法中k的出處,k通常不大於20的整數。最後選擇k個最相似資料中出現次數最多的分類,作為新資料的分類。這裡的距離是指d=sqrt。其中(x1,y1)表示某個樣本的兩個特徵值。下面以乙個具體的例子來說明:電影分類的例子,使用k-近鄰演算法分類愛情片和動作片。有人曾經統計過很多電影的打鬥鏡頭和接吻鏡頭,在這裡我們就選取打鬥鏡頭和接吻鏡頭的次數作為特徵來分類,下面顯示了六部電影的打鬥和接吻鏡頭次數。假設有一部未看過的電影,如何確定它是愛情片還是動作片?我們使用knn來確定。在此基礎上加了一點自己的注釋和理解。這本教程還是挺適合入門的,理論+**相結合。
電影名稱 打鬥鏡頭 接吻鏡頭 電影型別
california man 3 104 愛情片
he's not really into dudes 2 100 愛情片
beautiful woman 1 81 愛情片
kevin longblade 101 10 動作片
robo slayer 3000 99 5 動作片
amped 2 98 2 動作片
? 18 90 未知
首先我們需要知道這個位置電影存在多少個打鬥鏡頭和接吻鏡頭,資料如上表?資料,只知道打鬥鏡頭和接吻鏡頭的次數。即使不知道未知電影屬於哪種型別,我們也可以通過某種方法求出來。首先計算未知電影與樣本集中其他電影的距離。如下表:
電影名稱 與未知電影的距離
california man 20.5
he's not really into dudes 18.7
beautiful woman 19.2
kevin longblade 115.3
robo slayer 3000 117.4
amped 2 118.9
在這裡我們可以將打鬥鏡頭次數和接吻鏡頭次數作為兩個特徵,即(打鬥鏡頭次數,接吻鏡頭次數),然後計算距離。現在我們知道了樣本集中所有電影與未知電影的距離,按照距離遞增排序,找到k個距離最近的電影。假定這裡k=3,則三個最靠近的電影依次是he』s not really into dudes 、 beautiful woman 以及california man 。k-近鄰演算法按照距離最近的三部電影的型別,決定未知電影的型別。而這三部全是愛情片,因此我們判定未知電影是愛情片。
1、收集資料:可以使用任何方法。
2、準備資料:距離計算所需的數值,最好是結構化的資料格式。
3、分析資料:可以使用任何方法。
4、訓練演算法:此步驟不適用於k-近鄰演算法。
5、測試演算法:計算錯誤率。
6、使用演算法:首先需要輸入樣本資料和結構化的輸出結果,然後執行k-近鄰演算法判定輸入資料分別屬於哪個分類,最後應用對計算出的分類執行後續的處理。
關於k-近鄰演算法如何使用python實現的例子不在此贅述,具體的例子會上傳到github,感興趣的可以去看看,這裡只要闡述思想。
K 鄰近演算法
k 鄰近演算法 1.演算法描述 k 鄰近演算法 k nearest neighbor,knn 分類演算法,是最簡單的機器學習演算法。工作原理 存在乙個樣本資料集合,也稱作訓練樣本集,並且樣本集中每個資料都存在標籤,即我們知道樣本集中每乙個資料與所屬分類對應的關係。輸入沒有標籤的新資料後,將新資料的每...
K鄰近演算法
k近鄰法 k nearest neighbor,k nn 是1967年由cover t和hart p提出的一種基本分類與回歸方法。它的工作原理是 存在乙個樣本資料集合,也稱作為訓練樣本集,並且樣本集中每個資料都存在標籤,即我們知道樣本集中每乙個資料與所屬分類的對應關係。輸入沒有標籤的新資料後,將新的...
K鄰近演算法 KNN
k nearest neighbor knn演算法 如果乙個樣本在特徵空間中的k個最相似 即特徵空間中最鄰近 的樣本中的大多數屬於某乙個類別,則該樣本也屬於這個類別。所選擇的鄰居都是已經正確分類的物件。如果k 3,則綠色圓形的類別與紅色三角形相同 如果k 5,則綠色圓形的類別與藍色正方形相同 the...