<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

        Python語言實現(xiàn)機(jī)器學(xué)習(xí)的K-近鄰算法

        來源:懂視網(wǎng) 責(zé)編:小采 時間:2020-11-27 14:41:03
        文檔

        Python語言實現(xiàn)機(jī)器學(xué)習(xí)的K-近鄰算法

        Python語言實現(xiàn)機(jī)器學(xué)習(xí)的K-近鄰算法:寫在前面 額、、最近開始學(xué)習(xí)機(jī)器學(xué)習(xí)嘛,網(wǎng)上找到一本關(guān)于機(jī)器學(xué)習(xí)的書籍,名字叫做《機(jī)器學(xué)習(xí)實戰(zhàn)》。很巧的是,這本書里的算法是用Python語言實現(xiàn)的,剛好之前我學(xué)過一些Python基礎(chǔ)知識,所以這本書對于我來說,無疑是雪中送炭啊。接下來,我還是給大家
        推薦度:
        導(dǎo)讀Python語言實現(xiàn)機(jī)器學(xué)習(xí)的K-近鄰算法:寫在前面 額、、最近開始學(xué)習(xí)機(jī)器學(xué)習(xí)嘛,網(wǎng)上找到一本關(guān)于機(jī)器學(xué)習(xí)的書籍,名字叫做《機(jī)器學(xué)習(xí)實戰(zhàn)》。很巧的是,這本書里的算法是用Python語言實現(xiàn)的,剛好之前我學(xué)過一些Python基礎(chǔ)知識,所以這本書對于我來說,無疑是雪中送炭啊。接下來,我還是給大家
        寫在前面

        額、、、最近開始學(xué)習(xí)機(jī)器學(xué)習(xí)嘛,網(wǎng)上找到一本關(guān)于機(jī)器學(xué)習(xí)的書籍,名字叫做《機(jī)器學(xué)習(xí)實戰(zhàn)》。很巧的是,這本書里的算法是用Python語言實現(xiàn)的,剛好之前我學(xué)過一些Python基礎(chǔ)知識,所以這本書對于我來說,無疑是雪中送炭啊。接下來,我還是給大家講講實際的東西吧。

        什么是K-近鄰算法?

        簡單的說,K-近鄰算法就是采用測量不同特征值之間的距離方法來進(jìn)行分類。它的工作原理是:存在一個樣本數(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-近鄰算法是屬于監(jiān)督學(xué)習(xí)還是無監(jiān)督學(xué)習(xí)呢?

        使用Python導(dǎo)入數(shù)據(jù)

        從K-近鄰算法的工作原理中我們可以看出,要想實施這個算法來進(jìn)行數(shù)據(jù)分類,我們手頭上得需要樣本數(shù)據(jù),沒有樣本數(shù)據(jù)怎么建立分類函數(shù)呢。所以,我們第一步就是導(dǎo)入樣本數(shù)據(jù)集合。

        建立名為kNN.py的模塊,寫入代碼:

         from numpy import *
         import operator
         
         def createDataSet():
         group = array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]])
         labels = ['A','A','B','B']
         return group, labels
        
        

        代碼中,我們需要導(dǎo)入Python的兩個模塊:科學(xué)計算包NumPy和運算符模塊。NumPy函數(shù)庫是Python開發(fā)環(huán)境的一個獨立模塊,大多數(shù)Python版本里沒有默認(rèn)安裝NumPy函數(shù)庫,因此這里我們需要單獨安裝這個模塊。

        下載地址:http://sourceforge.net/projects/numpy/files/

        有很多的版本,這里我選擇的是numpy-1.7.0-win32-superpack-python2.7.exe。

        實現(xiàn)K-近鄰算法

        K-近鄰算法的具體思想如下:

        (1)計算已知類別數(shù)據(jù)集中的點與當(dāng)前點之間的距離

        (2)按照距離遞增次序排序

        (3)選取與當(dāng)前點距離最小的k個點

        (4)確定前k個點所在類別的出現(xiàn)頻率

        (5)返回前k個點中出現(xiàn)頻率最高的類別作為當(dāng)前點的預(yù)測分類

        Python語言實現(xiàn)K-近鄰算法的代碼如下:

         # coding : utf-8
         from numpy import *
         import operator 
         import kNN
         group, labels = kNN.createDataSet()
         def classify(inX, dataSet, labels, k):
         dataSetSize = dataSet.shape[0] 
         diffMat = tile(inX, (dataSetSize,1)) - dataSet
         sqDiffMat = diffMat**2
         sqDistances = sqDiffMat.sum(axis=1)
         distances = sqDistances**0.5
         sortedDistances = distances.argsort()
         classCount = {}
         for i in range(k):
         numOflabel = labels[sortedDistances[i]]
         classCount[numOflabel] = classCount.get(numOflabel,0) + 1
         sortedClassCount = sorted(classCount.iteritems(), key=operator.itemgetter(1),reverse=True)
         return sortedClassCount[0][0]
         my = classify([0,0], group, labels, 3)
         print my
        
        

        運算結(jié)果如下:

        輸出結(jié)果是B:說明我們新的數(shù)據(jù)([0,0])是屬于B類。

        代碼詳解

        相信有很多朋友們對上面這個代碼有很多不理解的地方,接下來,我重點講解幾個此函數(shù)的關(guān)鍵點,以方便讀者們和我自己回顧一下這個算法代碼。

        classify函數(shù)的參數(shù):

        inX:用于分類的輸入向量
        dataSet:訓(xùn)練樣本集合
        labels:標(biāo)簽向量
        k:K-近鄰算法中的k
        shape:是array的屬性,描述一個多維數(shù)組的維度

        tile(inX, (dataSetSize,1)):把inX二維數(shù)組化,dataSetSize表示生成數(shù)組后的行數(shù),1表示列的倍數(shù)。整個這一行代碼表示前一個二維數(shù)組矩陣的每一個元素減去后一個數(shù)組對應(yīng)的元素值,這樣就實現(xiàn)了矩陣之間的減法,簡單方便得不讓你佩服不行!

        axis=1:參數(shù)等于1的時候,表示矩陣中行之間的數(shù)的求和,等于0的時候表示列之間數(shù)的求和。

        argsort():對一個數(shù)組進(jìn)行非降序排序

        classCount.get(numOflabel,0) + 1:這一行代碼不得不說的確很精美啊。get():該方法是訪問字典項的方法,即訪問下標(biāo)鍵為numOflabel的項,如果沒有這一項,那么初始值為0。然后把這一項的值加1。所以Python中實現(xiàn)這樣的操作就只需要一行代碼,實在是很簡潔高效。

        后話

        K-近鄰算法(KNN)原理以及代碼實現(xiàn)差不多就這樣了,接下來的任務(wù)就是更加熟悉它,爭取達(dá)到裸敲的地步。

        以上所述上就是本文的全部內(nèi)容了,希望大家能夠喜歡。

        聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        Python語言實現(xiàn)機(jī)器學(xué)習(xí)的K-近鄰算法

        Python語言實現(xiàn)機(jī)器學(xué)習(xí)的K-近鄰算法:寫在前面 額、、最近開始學(xué)習(xí)機(jī)器學(xué)習(xí)嘛,網(wǎng)上找到一本關(guān)于機(jī)器學(xué)習(xí)的書籍,名字叫做《機(jī)器學(xué)習(xí)實戰(zhàn)》。很巧的是,這本書里的算法是用Python語言實現(xiàn)的,剛好之前我學(xué)過一些Python基礎(chǔ)知識,所以這本書對于我來說,無疑是雪中送炭啊。接下來,我還是給大家
        推薦度:
        標(biāo)簽: 實現(xiàn) python 算法
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲精华国产精华精华液网站| 亚洲国产高清在线精品一区 | 亚洲国产女人aaa毛片在线| 免费无码婬片aaa直播表情| 国产高清免费观看| 亚洲欧美国产国产综合一区| 精品免费久久久久久成人影院| 一本色道久久88亚洲精品综合| 毛片A级毛片免费播放| 亚洲av成本人无码网站| 日本特黄特色免费大片| 免费一级全黄少妇性色生活片 | 亚洲国产美女精品久久久| 成年在线观看免费人视频草莓| 亚洲色大网站WWW永久网站| 日韩视频在线免费| 黄页网址在线免费观看| 久久影院亚洲一区| 免费国产黄网站在线观看可以下载| 日韩精品一区二区亚洲AV观看| 亚洲香蕉免费有线视频| 亚洲日本在线电影| heyzo亚洲精品日韩| 在线成人精品国产区免费| 91亚洲精品视频| 欧美在线看片A免费观看| 亚洲精品国产精品乱码不卡√ | 国产aⅴ无码专区亚洲av| 99久久99热精品免费观看国产| 亚洲人成高清在线播放| 免费爱爱的视频太爽了 | 91大神在线免费观看| 亚洲乱码日产精品BD在线观看| 免费无码又爽又刺激高潮| 一级大黄美女免费播放| 久久亚洲精品国产精品| 国产在线19禁免费观看国产| 国产一级a毛一级a看免费视频| 亚洲精品国产啊女成拍色拍| 免费国产成人高清在线观看麻豆| 国产精品视频白浆免费视频|