最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用python實(shí)現(xiàn)knn算法

 更新時(shí)間:2017年12月20日 10:47:17   作者:chenge_j  
這篇文章主要為大家詳細(xì)介紹了使用python實(shí)現(xiàn)knn算法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了python實(shí)現(xiàn)knn算法的具體代碼,供大家參考,具體內(nèi)容如下

knn算法描述

對需要分類的點(diǎn)依次執(zhí)行以下操作:
1.計(jì)算已知類別數(shù)據(jù)集中每個(gè)點(diǎn)與該點(diǎn)之間的距離
2.按照距離遞增順序排序
3.選取與該點(diǎn)距離最近的k個(gè)點(diǎn)
4.確定前k個(gè)點(diǎn)所在類別出現(xiàn)的頻率
5.返回前k個(gè)點(diǎn)出現(xiàn)頻率最高的類別作為該點(diǎn)的預(yù)測分類

knn算法實(shí)現(xiàn)

數(shù)據(jù)處理

#從文件中讀取數(shù)據(jù),返回的數(shù)據(jù)和分類均為二維數(shù)組
def loadDataSet(filename):
  dataSet = []
  labels = []
  fr = open(filename)
  for line in fr.readlines():
    lineArr = line.strip().split(",")
    dataSet.append([float(lineArr[0]),float(lineArr[1])])
    labels.append([float(lineArr[2])])
  return dataSet , labels


knn算法

#計(jì)算兩個(gè)向量之間的歐氏距離
def calDist(X1 , X2):
  sum = 0
  for x1 , x2 in zip(X1 , X2):
    sum += (x1 - x2) ** 2
  return sum ** 0.5

def knn(data , dataSet , labels , k):
  n = shape(dataSet)[0]
  for i in range(n):
    dist = calDist(data , dataSet[i])
    #只記錄兩點(diǎn)之間的距離和已知點(diǎn)的類別
    labels[i].append(dist)
  #按照距離遞增排序
  labels.sort(key=lambda x:x[1])
  count = {}
  #統(tǒng)計(jì)每個(gè)類別出現(xiàn)的頻率
  for i in range(k):
    key = labels[i][0]
    if count.has_key(key):
      count[key] += 1
    else : count[key] = 1
  #按頻率遞減排序
  sortCount = sorted(count.items(),key=lambda item:item[1],reverse=True)
  return sortCount[0][0]#返回頻率最高的key,即label


結(jié)果測試

已知類別數(shù)據(jù)(來源于西瓜書+虛構(gòu))

0.697,0.460,1
0.774,0.376,1
0.720,0.330,1
0.634,0.264,1
0.608,0.318,1
0.556,0.215,1
0.403,0.237,1
0.481,0.149,1
0.437,0.211,1
0.525,0.186,1
0.666,0.091,0
0.639,0.161,0
0.657,0.198,0
0.593,0.042,0
0.719,0.103,0
0.671,0.196,0
0.703,0.121,0
0.614,0.116,0

繪圖方法

def drawPoints(data , dataSet, labels):
  xcord1 = [];
  ycord1 = [];
  xcord2 = [];
  ycord2 = [];
  for i in range(shape(dataSet)[0]):
    if labels[i][0] == 0:
      xcord1.append(dataSet[i][0])
      ycord1.append(dataSet[i][1])
    if labels[i][0] == 1:
      xcord2.append(dataSet[i][0])
      ycord2.append(dataSet[i][1])
  fig = plt.figure()
  ax = fig.add_subplot(111)
  ax.scatter(xcord1, ycord1, s=30, c='blue', marker='s',label=0)
  ax.scatter(xcord2, ycord2, s=30, c='green',label=1)
  ax.scatter(data[0], data[1], s=30, c='red',label="testdata")
  plt.legend(loc='upper right')
  plt.show()


測試代碼

dataSet , labels = loadDataSet('dataSet.txt')
data = [0.6767,0.2122]
drawPoints(data , dataSet, labels)
newlabels = knn(data, dataSet , labels , 5)
print newlabels

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

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 解決谷歌搜索技術(shù)文章時(shí)打不開網(wǎng)頁問題的python腳本

    解決谷歌搜索技術(shù)文章時(shí)打不開網(wǎng)頁問題的python腳本

    在用谷歌在搜索技術(shù)文章時(shí),總是時(shí)不時(shí)的打不開網(wǎng)頁,于是寫了一個(gè)python腳本,感覺用著還行,分享給大家
    2013-02-02
  • 基于python+selenium的二次封裝的實(shí)現(xiàn)

    基于python+selenium的二次封裝的實(shí)現(xiàn)

    這篇文章主要介紹了基于python+selenium的二次封裝的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • 10張動(dòng)圖學(xué)會(huì)python循環(huán)與遞歸問題

    10張動(dòng)圖學(xué)會(huì)python循環(huán)與遞歸問題

    今天為大家整理了十張動(dòng)圖GIFS,有助于認(rèn)識(shí)循環(huán)、遞歸、二分檢索等概念的具體運(yùn)行情況。代碼實(shí)例以Python語言編寫,非常不錯(cuò),感興趣的朋友跟隨小編一起學(xué)習(xí)吧
    2021-02-02
  • Python可視化庫之HoloViews的使用教程

    Python可視化庫之HoloViews的使用教程

    本文主要為大家介紹了Python中一個(gè)優(yōu)秀的可視化庫—HoloViews,不僅能實(shí)現(xiàn)一些常見的統(tǒng)計(jì)圖表繪制,而且其還擁有Matplotlib、Seaborn等庫所不具備的交互效果,快跟隨小編一起了解一下吧
    2022-02-02
  • 使用python中的openpyxl操作excel詳解

    使用python中的openpyxl操作excel詳解

    這篇文章主要介紹了使用python中的openpyxl操作excel詳解,openpyxl 模塊是一個(gè)讀寫Excel文檔的Python庫,本文就來講解如何使用openpyxl操作excel,需要的朋友可以參考下
    2023-07-07
  • 詳解Python可視化神器Yellowbrick使用

    詳解Python可視化神器Yellowbrick使用

    Yellowbrick是由一套被稱為"Visualizers"組成的可視化診斷工具組成的套餐,其由Scikit-Learn API延伸而來,對模型選擇過程其指導(dǎo)作用。這篇文章主要介紹了Python可視化神器Yellowbrick使用,需要的朋友可以參考下
    2019-11-11
  • python進(jìn)行圖片相似度對比的兩種實(shí)現(xiàn)方法

    python進(jìn)行圖片相似度對比的兩種實(shí)現(xiàn)方法

    Python提供了一些庫和工具可以用于圖片的相似度比對,本文就詳細(xì)的介紹了兩種實(shí)現(xiàn)方法,感知哈希和結(jié)構(gòu)相似性,下面就來介紹一下,感興趣的可以了解一下
    2023-10-10
  • pip安裝python庫時(shí)報(bào)錯(cuò)的問題解決

    pip安裝python庫時(shí)報(bào)錯(cuò)的問題解決

    本文主要介紹了在Windows系統(tǒng)上解決pip命令找不到的問題的兩種方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-03-03
  • python PIL中ImageFilter模塊圖片濾波處理和使用方法

    python PIL中ImageFilter模塊圖片濾波處理和使用方法

    這篇文章主要介紹PIL中ImageFilter模塊幾種圖片濾波處理和使用方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-11-11
  • python模擬實(shí)現(xiàn)圖書管理系統(tǒng)

    python模擬實(shí)現(xiàn)圖書管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了python模擬實(shí)現(xiàn)圖書管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03

最新評論

东方市| 沽源县| 泊头市| 灵石县| 江口县| 安丘市| 彭水| 荣成市| 新竹市| 焉耆| 花垣县| 乌兰察布市| 西青区| 沧源| 炎陵县| 兰坪| 三门县| 齐齐哈尔市| 叙永县| 沅江市| 建始县| 惠来县| 天柱县| 汝阳县| 舞阳县| 界首市| 墨江| 中牟县| 化隆| 濮阳县| 卢龙县| 河池市| 资中县| 古交市| 大渡口区| 哈尔滨市| 淳安县| 石棉县| 凤台县| 阳信县| 上犹县|