<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      川山甲

      追求內(nèi)心的非常平靜!瞬間清空所有的雜念,達(dá)到物我兩忘!

        博客園  :: 首頁  ::  :: 聯(lián)系 :: 訂閱 訂閱  :: 管理
       
      keyword
        
        文本分類算法、簡單的機(jī)器學(xué)習(xí)算法、基本要素、距離度量、類別判定、k取值、改進(jìn)策略
       
      摘要
        
        kNN算法是著名的模式識別統(tǒng)計(jì)學(xué)方法,是最好的文本分類算法之一,在機(jī)器學(xué)習(xí)分類算法中占有相當(dāng)大的地位,是最簡單的機(jī)器學(xué)習(xí)算法之一。
       
      基本信息
        
        外文名:k-Nearest Neighbor(簡稱kNN)
        中文名:k最鄰近分類算法
        應(yīng)用:文本分類、模式識別、圖像及空間分類
        典型:懶惰學(xué)習(xí)
        訓(xùn)練時(shí)間開銷:0
        提出時(shí)間:1968年
        作者:Cover和Hart提出
        關(guān)鍵字:kNN算法、k近鄰算法、機(jī)器學(xué)習(xí)、文本分類
       
       
      工作原理
        
      思想:
        
        官方:給定測試樣本,基于某種距離度量找出訓(xùn)練集中與其最靠近的k個訓(xùn)練樣本,然后基于這k個"鄰居"的信息來進(jìn)行預(yù)測。
        通俗點(diǎn)說:就是計(jì)算一個點(diǎn)與樣本空間所有點(diǎn)之間的距離,取出與該點(diǎn)最近的k個點(diǎn),然后統(tǒng)計(jì)這k個點(diǎn)里面所屬分類比例最大的(“回歸”里面使用平均法),則點(diǎn)A屬于該分類。
       k鄰近法實(shí)際上利用訓(xùn)練數(shù)據(jù)集對特征向量空間進(jìn)行劃分,并作為其分類的“模型”。
        三個基本要素:k值的選擇、距離度量、分類決策規(guī)則
       
       
      圖例說明:
       
       
          上圖中,綠色圓要被決定賦予哪個類,是紅色三角形還是藍(lán)色四方形?如果K=3,由于紅色三角形所占比例為2/3,綠色圓將被賦予紅色三角形那個類,如果K=5,由于藍(lán)色四方形比例為3/5,因此綠色圓被賦予藍(lán)色四方形類。
       
      算法計(jì)算步驟

       

        


        
        1、算距離: 給定測試對象,計(jì)算它與訓(xùn)練集中的每個對象的距離;
        2、找鄰居:圈定距離最近的k個訓(xùn)練對象,作為測試對象的近鄰;
        3、做分類:根據(jù)這k個近鄰歸屬的主要類別,來對測試對象分類; 
       
      距離的計(jì)算方式(相似性度量):

       

        
        歐式距離:

        曼哈頓距離:

       
      類別的判定:
        
        投票法:少數(shù)服從多數(shù),近鄰中哪個類別的點(diǎn)最多就分為該類。
        加權(quán)投票法:根據(jù)距離的遠(yuǎn)近,對鄰近的投票進(jìn)行加權(quán),距離越近則權(quán)重越大(權(quán)重為距離平方的倒數(shù))。
       
       
      優(yōu)、缺點(diǎn)
       
      優(yōu)點(diǎn):
        1、簡單,易于理解,易于實(shí)現(xiàn),無需估計(jì)參數(shù),無需訓(xùn)練;
        2、適合對稀有事件進(jìn)行分類;
        3、特別適合于多分類問題(multi-modal,對象具有多個類別標(biāo)簽), kNN比SVM的表現(xiàn)要好。 
      缺點(diǎn):
        1、樣本容量較小的類域采用這種算法比較容易產(chǎn)生誤分。
          該算法在分類時(shí)有個主要的不足是,當(dāng)樣本不平衡時(shí),如一個類的樣本容量很大,而其他類樣本容量很小時(shí),有可能導(dǎo)致當(dāng)輸入一個新樣本時(shí),該樣本的K個鄰居中大容量類的樣本占多數(shù)。 該算法只計(jì)算“最近的”鄰居樣本,某一類的樣本數(shù)量很大,那么或者這類樣本并不接近目標(biāo)樣本,或者這類樣本很靠近目標(biāo)樣本。無論怎樣,數(shù)量并不能影響運(yùn)行結(jié)果。
        2、該方法的另一個不足之處是計(jì)算量較大,因?yàn)閷γ恳粋€待分類的文本都要計(jì)算它到全體已知樣本的距離,才能求得它的K個最近鄰點(diǎn)。
        3、可理解性差,無法給出像決策樹那樣的規(guī)則。
       
       
      算法實(shí)例
       
      流程:
        1、計(jì)算距離
        2、選擇距離最小的k個點(diǎn)
        3、通過投票方式,選擇點(diǎn)最多的標(biāo)簽。
       
      #-*- coding:utf-8 -*-
      import numpy as np
      import operator
      
      def createDataset():
          #四組二維特征
          group = np.array([[5,115],[7,106],[56,11],[66,9]])
          #四組對應(yīng)標(biāo)簽
          labels = ('動作片','動作片','愛情片','愛情片')
          return group,labels
      
      """
      KNN算法
      """
      def classify(intX, dataSet, labels, k):
          '''
          numpy中shape[0]返回?cái)?shù)組的行數(shù),shape[1]返回列數(shù)
          '''
          dataSetSize = dataSet.shape[0]
      
          """
          將intX在橫向重復(fù)dataSetSize次,縱向重復(fù)1次
          例如intX=([1,2])--->([[1,2],[1,2],[1,2],[1,2]])便于后面計(jì)算
          """
          diffMat = np.tile(intX, (dataSetSize, 1)) - dataSet
      
          """
          計(jì)算距離:歐式距離, 特征相減后乘方,然后再開方
          """
          sqdifMax = diffMat**2
          seqDistances = sqdifMax.sum(axis=1)
          distances = seqDistances**0.5
      
          #返回distance中元素從小到大排序后的索引
          print ("distances:",distances)
          sortDistance = distances.argsort()
          print ("sortDistance:", sortDistance)
      
          """
          取出前k個元素的類別
          """
          classCount = {}
          for i in range(k):
              voteLabel = labels[sortDistance[i]]
              s = "第{}個voteLabel={}".format(i, voteLabel)
              print(s)
              classCount[voteLabel] = classCount.get(voteLabel,0)+1
      
          #dict.get(key,default=None),字典的get()方法,返回指定鍵的值,如果值不在字典中返回默認(rèn)值。
          #計(jì)算類別次數(shù)
      
          #key=operator.itemgetter(1)根據(jù)字典的值進(jìn)行排序
          #key=operator.itemgetter(0)根據(jù)字典的鍵進(jìn)行排序
          #reverse降序排序字典
          sortedClassCount = sorted(classCount.items(), key = operator.itemgetter(1), reverse = True)
          #結(jié)果sortedClassCount = [('動作片', 2), ('愛情片', 1)]
          print ("sortedClassCount:")
          print(sortedClassCount)
          return sortedClassCount[0][0]
      
      if __name__ == '__main__':
          group,labels = createDataset()
          test = [20,101]
          test_class = classify(test,group,labels,3)
          print (test_class)
      

        

       
      運(yùn)行結(jié)果 :

       


       
      改進(jìn)策略
       
        1、對樣本屬性進(jìn)行約簡。——刪除對分類結(jié)果影響較小的屬性。
        2、采用權(quán)值的方法(和該樣本距離小的鄰居權(quán)值大)來改進(jìn)。——依照訓(xùn)練集合中各種分類的樣本數(shù)量,選取不同數(shù)目的最近鄰居,來參與分類。
       

       
      常見問題
       
      1、k值設(shè)定
         k值選擇過小,得到的近鄰數(shù)過少,會降低分類精度,同時(shí)也會放大噪聲數(shù)據(jù)的干擾;而如果k值選擇過大,并且待分類樣本屬于訓(xùn)練集中包含數(shù)據(jù)數(shù)較少的類,那么在選擇k個近鄰的時(shí)候,實(shí)際上并不相似的數(shù)據(jù)亦被包含進(jìn)來,造成噪聲增加而導(dǎo)致分類效果的降低。
        如何選取恰當(dāng)?shù)腒值也成為KNN的研究熱點(diǎn)。k值通常是采用交叉檢驗(yàn)來確定(以k=1為基準(zhǔn))。
        經(jīng)驗(yàn)規(guī)則:k一般低于訓(xùn)練樣本數(shù)的平方根。
       
       2、類別的判定方式
        投票法沒有考慮近鄰的距離的遠(yuǎn)近,距離更近的近鄰也許更應(yīng)該決定最終的分類,所以加權(quán)投票法更恰當(dāng)一些。
       
      3、距離度量方式的選擇
        高維度對距離衡量的影響:眾所周知當(dāng)變量數(shù)越多,歐式距離的區(qū)分能力就越差。
        變量值域?qū)嚯x的影響:值域越大的變量常常會在距離計(jì)算中占據(jù)主導(dǎo)作用,因此應(yīng)先對變量進(jìn)行標(biāo)準(zhǔn)化。
       
      4、訓(xùn)練樣本的參考原則
         學(xué)者們對于訓(xùn)練樣本的選擇進(jìn)行研究,以達(dá)到減少計(jì)算的目的,這些算法大致可分為兩類。第一類,減少訓(xùn)練集的大小。KNN算法存儲的樣本數(shù)據(jù),這些樣本數(shù)據(jù)包含了大量冗余數(shù)據(jù),這些冗余的數(shù)據(jù)增了存儲的開銷和計(jì)算代價(jià)。縮小訓(xùn)練樣本的方法有:在原有的樣本中刪掉一部分與分類相關(guān)不大的樣本樣本,將剩下的樣本作為新的訓(xùn)練樣本;或在原來的訓(xùn)練樣本集中選取一些代表樣本作為新的訓(xùn)練樣本;或通過聚類,將聚類所產(chǎn)生的中心點(diǎn)作為新的訓(xùn)練樣本
        
        在訓(xùn)練集中,有些樣本可能是更值得依賴的。可以給不同的樣本施加不同的權(quán)重,加強(qiáng)依賴樣本的權(quán)重,降低不可信賴樣本的影響。
       
      5、性能問題
        kNN是一種懶惰算法,而懶惰的后果:構(gòu)造模型很簡單,但在對測試樣本分類地的系統(tǒng)開銷大,因?yàn)橐獟呙枞坑?xùn)練樣本并計(jì)算距離。
        已經(jīng)有一些方法提高計(jì)算的效率,例如壓縮訓(xùn)練樣本量等。
       
       
      參考文獻(xiàn)
       
       
       
      推薦
      posted on 2018-10-08 20:20  川山甲  閱讀(7884)  評論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 国产在线精品欧美日韩电影| 无码人妻h动漫| 亚洲有无码中文网| 国产精品久久中文字幕| 97精品亚成在人线免视频| 18禁精品一区二区三区| 人妻偷拍一区二区三区| 亚洲精品日韩精品久久| 亚洲乱码精品久久久久..| 久久综合亚洲鲁鲁九月天| 国内女人喷潮完整视频| 国产精品无码a∨精品| 国产精品一区在线免费看| caoporn免费视频公开| 最新亚洲人成网站在线影院| 国内免费视频成人精品| 日产无人区一线二码三码2021| 奇米777四色成人影视| 99久久国语露脸精品国产| 日韩美女一区二区三区视频| 成人免费无遮挡在线播放| 国产性天天综合网| 亚洲男人天堂一级黄色片| 亚洲另类激情专区小说图片| 国产成人精品一区二区秒拍1o| 亚洲人成电影网站色mp4| 国产系列高清精品第一页| 亚洲人成网线在线播放VA | 国产a在视频线精品视频下载| 亚洲综合av永久无码精品一区二区| 国产一区二区三中文字幕| av中文无码乱人伦在线观看| 男女猛烈激情xx00免费视频| 麻豆麻豆麻豆麻豆麻豆麻豆| 亚洲日本va午夜在线影院| 久久永久视频| 在线精品另类自拍视频| 精品亚洲AⅤ无码午夜在线| 性姿势真人免费视频放| 亚洲国产大胸一区二区三区| 日韩精品 在线 国产 丝袜|