【機(jī)器學(xué)習(xí)3】 k-近鄰算法(kNN)—手寫數(shù)字識別

k近鄰法(k-nearest neighbor, k-NN)

原理:

存在一個樣本數(shù)據(jù)集合,也稱作訓(xùn)練樣本集,并且樣本集中每個數(shù)據(jù)都存在標(biāo)簽,即我們知道樣本集中每一數(shù)據(jù)與所屬分類的對應(yīng)關(guān)系。輸入沒有標(biāo)簽的新數(shù)據(jù)后,將新數(shù)據(jù)的每個特征與樣本集中數(shù)據(jù)對應(yīng)的特征進(jìn)行比較,然后算法提取樣本集中特征最相似數(shù)據(jù)(最近鄰)的分類標(biāo)簽。一般來說,我們只選擇樣本數(shù)據(jù)集中前k個最相似的數(shù)據(jù),這就是k-近鄰算法中k的出處,通常k是不大于20的整數(shù)。 最后,選擇k個最相似數(shù)據(jù)中出現(xiàn)次數(shù)最多的分類,作為新數(shù)據(jù)的分類。?

優(yōu)缺點(diǎn):

優(yōu)點(diǎn):精度高、對異常值不敏感、無數(shù)據(jù)輸入假定。

缺點(diǎn):計(jì)算復(fù)雜度高、空間復(fù)雜度高。

適用范圍:數(shù)值型和標(biāo)稱型。

sklearn簡介

sklearn(Scikit learn),是機(jī)器學(xué)習(xí)領(lǐng)域當(dāng)中最知名的python模塊之一。

使用sklearn可以很方便的實(shí)現(xiàn)一個機(jī)器學(xué)習(xí)算法。?有效減少我們特定任務(wù)的實(shí)現(xiàn)周期。達(dá)到只需要調(diào)用幾行API即可實(shí)現(xiàn)一個復(fù)雜算法的效果。

包含了很多機(jī)器學(xué)習(xí)的方式:

??Classification 分類

??Regression 回歸

??Clustering 非監(jiān)督分類

??Dimensionality reduction 數(shù)據(jù)降維

??Model Selection 模型選擇

?? Preprocessing 數(shù)據(jù)與處理

Python實(shí)踐案例:sklearn手寫數(shù)字識別

已知:?軟件處理后的?“需要識別的數(shù)字 ”的TXT數(shù)據(jù)文件。

? ? ? ? ? ?特點(diǎn):??具有相同的色彩和大?。簩捀呤?2像素x32像素。

? ? ? ? ? ? ? ? ? ? ? ??? 文件有統(tǒng)一命名格式:數(shù)字的值_該數(shù)字的樣本序號? ?

? ? ? ? ? ? ? ? ? ? ? ?? 按 0-9 十個數(shù)字分類的文件,每個數(shù)字200個樣本? ? ? ? ??

求:? ?未知數(shù)字文件是 0-9 中哪一個數(shù)字


數(shù)字文件示例

代碼:


結(jié)果:



學(xué)習(xí)來源:《機(jī)器學(xué)習(xí)實(shí)戰(zhàn)》 [美] Peter Harrington

? ? ? ? ? ? ? ? ? ?Jack Cui 博文https://cuijiahua.com/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容