K-近鄰算法的python實(shí)現(xiàn)代碼分享
k-近鄰算法概述:
所謂k-近鄰算法KNN就是K-Nearest neighbors Algorithms的簡稱,它采用測(cè)量不同特征值之間的距離方法進(jìn)行分類
用官方的話來說,所謂K近鄰算法,即是給定一個(gè)訓(xùn)練數(shù)據(jù)集,對(duì)新的輸入實(shí)例,在訓(xùn)練數(shù)據(jù)集中找到與該實(shí)例最鄰近的K個(gè)實(shí)例(也就是上面所說的K個(gè)鄰居), 這K個(gè)實(shí)例的多數(shù)屬于某個(gè)類,就把該輸入實(shí)例分類到這個(gè)類中。
k-近鄰算法分析
優(yōu)點(diǎn):精度高、對(duì)異常值不敏感、無數(shù)據(jù)輸入假定。
缺點(diǎn):計(jì)算復(fù)雜度高、空間復(fù)雜度高。
適用數(shù)據(jù)范圍:數(shù)值型和標(biāo)稱型
k-近鄰算法工作原理:
它的工作原理是:存在一個(gè)樣本數(shù)據(jù)集合,也稱作訓(xùn)練樣本集,并且樣本集中每個(gè)數(shù)據(jù)都存在標(biāo)簽,即我們知道樣本集中每一數(shù)據(jù)與所屬分類的對(duì)應(yīng)關(guān)系。輸入沒有標(biāo)簽的新數(shù)據(jù)后,將新數(shù)據(jù)的每個(gè)特征與樣本集中數(shù)據(jù)對(duì)應(yīng)的特征進(jìn)行比較,然后算法提取樣本集中特征最相似數(shù)據(jù)(最近鄰)的分類標(biāo)簽。一般來說,我們只選擇樣本數(shù)據(jù)集中前k個(gè)最相似的數(shù)據(jù),這就是k-近鄰算法中k的出處,通常k是不大于20的整數(shù)。最后,選擇k個(gè)最相似數(shù)據(jù)中出現(xiàn)次數(shù)最多的的分類,作為新數(shù)據(jù)的分類。
k-近鄰算法實(shí)現(xiàn)過程:
對(duì)未知類別屬性的數(shù)據(jù)集中的每個(gè)點(diǎn)依次執(zhí)行以下操作:
(1)計(jì)算已知類別數(shù)據(jù)集中的點(diǎn)與當(dāng)前點(diǎn)之間的距離;
(2)按照距離遞增次序排序;
(3)選取與當(dāng)前點(diǎn)距離最小的k個(gè)點(diǎn);
(4)確定前k個(gè)點(diǎn)所在類別的出現(xiàn)頻率;
(5)返回前k個(gè)點(diǎn)出現(xiàn)頻率最高的類別作為當(dāng)前點(diǎn)的預(yù)測(cè)分類。
k-近鄰算法python代碼實(shí)現(xiàn):
編輯kNN.py文件代碼如下:
編輯完成后保存,linux下確保當(dāng)前路徑為存儲(chǔ)kNN.py文件的位置,進(jìn)入python開發(fā)環(huán)境開始測(cè)試:
上圖給出了點(diǎn)[0,0]、[1,0.9]的測(cè)試輸出分類結(jié)果分別為B、A。至此,我們已經(jīng)構(gòu)造完成了一個(gè)分類器,使用這個(gè)分類器可以完成很多分類任務(wù)。從這個(gè)實(shí)例出發(fā),構(gòu)造使用分類算法將會(huì)更加容易。
分類器測(cè)試評(píng)估:
為了測(cè)試分類器的效果,需要對(duì)分類器做出評(píng)估,我們可以通過大量的測(cè)試數(shù)據(jù)得到分類器的錯(cuò)誤率——分類器給出錯(cuò)誤結(jié)果的次數(shù)除以測(cè)試執(zhí)行的總數(shù)。錯(cuò)誤率是常用的評(píng)估方法,主要用于評(píng)估分類器在某個(gè)數(shù)據(jù)集上的執(zhí)行效果。完美分類器的錯(cuò)誤率為0,最差分類器的錯(cuò)誤率是1.0,在這種情況下,分類器根本就無法找到一個(gè)正確答案。
結(jié)束語:
本文首先對(duì)kNN做了簡單介紹,通過了解其工作原理和實(shí)現(xiàn)流程,并使用k-近鄰算法構(gòu)造了分類器。我們也可以檢驗(yàn)分類器給出的答案是否符合我們的預(yù)期。此外,還可以對(duì)分類器做大量的測(cè)試,并以錯(cuò)誤率來評(píng)估該分類器的分類效果。
以上就是本文關(guān)于K-近鄰算法的python實(shí)現(xiàn)代碼分享的全部內(nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題。如有不足之處,歡迎留言指出。感謝朋友們對(duì)本站的支持!
- python k-近鄰算法實(shí)例分享
- 詳解opencv Python特征檢測(cè)及K-最近鄰匹配
- Python語言實(shí)現(xiàn)機(jī)器學(xué)習(xí)的K-近鄰算法
- Python機(jī)器學(xué)習(xí)k-近鄰算法(K Nearest Neighbor)實(shí)例詳解
- python K近鄰算法的kd樹實(shí)現(xiàn)
- python機(jī)器學(xué)習(xí)實(shí)戰(zhàn)之最近鄰kNN分類器
- python實(shí)現(xiàn)K最近鄰算法
- python機(jī)器學(xué)習(xí)案例教程——K最近鄰算法的實(shí)現(xiàn)
- Python實(shí)現(xiàn)KNN(K-近鄰)算法的示例代碼
- Python利用Faiss庫實(shí)現(xiàn)ANN近鄰搜索的方法詳解
相關(guān)文章
django頁面跳轉(zhuǎn)問題及注意事項(xiàng)
這篇文章主要介紹了django頁面跳轉(zhuǎn)問題及注意事項(xiàng),本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-07-07從訓(xùn)練好的tensorflow模型中打印訓(xùn)練變量實(shí)例
今天小編就為大家分享一篇從訓(xùn)練好的tensorflow模型中打印訓(xùn)練變量實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-01-01class類在python中獲取金融數(shù)據(jù)的實(shí)例方法
在本篇文章里小編給大家整理了關(guān)于class類怎樣在python中獲取金融數(shù)據(jù)的相關(guān)內(nèi)容,有需要的朋友們可以學(xué)習(xí)下。2020-12-12python中Scikit-learn庫的高級(jí)特性和實(shí)踐分享
Scikit-learn是一個(gè)廣受歡迎的Python庫,它用于解決許多機(jī)器學(xué)習(xí)的問題,在本篇文章中,我們將進(jìn)一步探索Scikit-learn的高級(jí)特性和最佳實(shí)踐,需要的朋友可以參考下2023-07-07Python在for循環(huán)里處理大數(shù)據(jù)的推薦方法實(shí)例
這篇文章主要介紹了Python在for循環(huán)里處理大數(shù)據(jù)的推薦方法實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01