《電子技術應用》
您所在的位置:首頁 > 模擬設計 > 業界動態 > 基于Dragonboard 410c開發板的機器學習研究(一)K-近鄰算法

基于Dragonboard 410c開發板的機器學習研究(一)K-近鄰算法

2017-04-19

  機器學習與人工智能一起作為當前最流行的一個概念,目前已經被廣泛的應用到各個領域,如人們常用的微信、支付寶、百度等,這些軟件里面都集成了機器學習算法,以實現各種智能化的操作,讓用戶體驗更加,如在百度的在線識別圖像應用,阿里巴巴的商品智能推薦、人臉識別驗證等這些都用到了機器學習的相關技術,當然有的是更高級的深度學習(其實質也是機器學習的一種,更加高大上,具體概念以及關于機器學習、深度學習和模式識別大家可以參考深度學習 vs 機器學習 vs 模式識別三種技術對比這篇文章),但是機器學習只能用在這些高大上的地方么?當然不是,其實在我們普通的開發者想DIY自己的東西的時候,也可以用到機器學習,如在你的智能車視覺避障中就可以用機器學習來構建障礙物模型,在人臉識別中就可以用機器學習來不斷優化識別結果,好了廢話不多說了,如果能夠在自己的DIY中,在你的Dragonboard 410c中用上機器學習,是不是更高大上?

94e677bd83813666dc78c71a315e185b.jpg

  機器學習的算法非常多,今天給大家來一個入門級別的,也是機器學習中最簡單的一個算法,K-近鄰算法(KNN),該算法是采用不同特征值之間的距離的方法來對不同的對象進行分類,在具體的操作過程中我們需要一個樣本集,這個樣本集中的所有的特征數據都有一個對應的標簽,即這個樣本集中所有的數據所對應的分類屬性我們是知道的,然后再輸入新的數據的時候,KNN算法就通過計算實現新數據與樣本數據的比較,同時提取樣本中特征最相似的數據對應的分類標簽,在具體的KNN處理過程中,通常只選取樣本數據的前k個最相似的數據,然后選取這前k個數據中出現次數最多的標簽作為結果。

  有了上述了解了,基本上你只要知道KNN就是一個簡單的分類器,將東西進行分類,既然提到了分類,我們通過生活中簡單的一個分類場景來向大家介紹KNN算法的具體實現原理和過程,并且結合Python腳本告訴大家怎么在Dragonbaord 410c上編寫和運行KNN算法。

  這里引用的是《機器學習實戰》中的一個經典的學習例子,根據電影中出現的接吻鏡頭和打斗鏡頭的數量來判斷一部電影是屬于愛情片還是屬于動作片,具體可以通過下圖來進行描述:

5994bd8ea249dcf552de7b309da50d75.jpg

  在上圖中,我們已經知道了六部電影的接吻鏡頭和打斗鏡頭的數目,但是如果給你一個新的電影,并且告訴你了接吻鏡頭和打斗鏡頭數,這個時候你該如何確定這部電影是什么類型電影呢?

  在分析中,為了更好的看出我們已經知道的六部電影的各種鏡頭的數量和所屬類型,下面給出了各個電影的鏡頭和類型分布表:

 c41d846633fb81d35e597d6295c62b80.jpg

  根據前面跟大家聊的KNN算法原理,我們主要是根據樣本數據,計算未知的數據與樣本數據的距離,然后根據標簽出現頻率來實現分類,這里我們如果用KNN來實現對根據已知的這六部電影的分類,來實現對未知電影的分類就非常簡單了。其中KNN實現核心代碼如下:

  def classify0(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

  sortedDisTIndicies = distances.argsort()

  classCount={}

  for i in range(k):

  voteIlabel = labels[sortedDisTIndicies[i]]

  classCount[voteIlabel] = classCount.get(voteIlabel,0) + 1

  sortedClassCount = sorted(classCount.iteritems(), key=operator.itemgetter(1), reverse=True)

  return sortedClassCount[0][0]

  上述代碼中classify0包含了4個參數,分別用于輸入向量inX、輸入訓練樣本集dataSet、標簽向量labels,選擇最近鄰居的數目參數k,在本文使用的KNN算法中,計算距離使用了常用的歐氏距離公式,如下:

5983a80f1941ca12025b504d9e3359b9.png

  詳細的代碼大家可以到 http://pan.baidu.com/s/1mh5W0XU 下載,

  好了,準備好代碼后,我們就可以進行測試了,將代碼通過SD卡或者U盤拷貝到我們的Dragonbaord 410c上,然后輸入cd命令跳轉到代碼目錄下,輸入Python,進入到Python命令模式,輸入下面測試命令:

  >>> import kNN

  >>> group,lables = kNN.createDataSet()

  >>>kNN,classify0([0,0],group,lables,3)

  我們可以看到輸出結果為B,如下圖所示,同時大家在測試過程中也可以改變輸入的[0,0]為其他值,測試結果。

80bf087e52ef3924596fae0cfc672b58.jpg

  到這里我們已經成功的完成在Dragonbaord 410c上借助于Python腳本完成了我們KNN算法的編寫和測試,利用測試代碼大家可以進行擴展,將該分類器用于你的DIY中的其他識別和分類中,讓你的DIY變得更加智能,后期我將在機器學習系列blog中向大家進一步介紹更為復雜的機器學習算法和在Dragonbaord410c上實現。


本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
主站蜘蛛池模板: 国产又大又粗又长免费视频 | 亚洲国产成AV人天堂无码| 精品人妻潮喷久久久又裸又黄 | 无套进入30p| 久久精品成人免费观看| 欧美多人换爱交换乱理伦片| 亚洲精品高清国产麻豆专区| 第272章推倒孕妇秦| 四虎国产精品免费视| 蜜桃麻豆www久久国产精品| 国产成人精品一区二区三区免费 | 澳门码资料2020年276期| 免费看日b视频| 精品欧美一区二区三区久久久| 国产一级做a爱片久久毛片a| 香蕉视频在线免费看| 国产成人影院在线观看| 亚洲综合第一区| 国产精品电影一区二区三区| 99久久er这里只有精品18| 天天摸夜夜摸成人免费视频| sss欧美华人整片在线观看| 小雪坐莲许老二的胯上| 东北壮汉gayxxxvideo| 新梅瓶1一5集在线观看| 久久久久人妻一区精品果冻| 日本边添边摸边做边爱的视频 | 校花的好大的奶好爽漫画| 亚洲伊人久久大香线蕉影院| 欧美成人天天综合在线视色| 亚洲校园春色小说| 波多野结衣一区二区三区88 | 一级黄色片免费观看| 成人欧美一区二区三区的电影 | 毛片免费vip会员在线看| 亚洲黄色网址在线观看| 狠狠躁夜夜躁人人爽天天古典| 伦理片中文字幕完整视频 | 国产精亚洲视频| 亚洲国产成人99精品激情在线| 国产精品一卡二卡三卡|