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

Python機(jī)器學(xué)習(xí)k-近鄰算法(K Nearest Neighbor)實(shí)例詳解

 更新時(shí)間:2018年06月25日 10:48:35   作者:Eric Chan  
這篇文章主要介紹了Python機(jī)器學(xué)習(xí)k-近鄰算法(K Nearest Neighbor),結(jié)合實(shí)例形式分析了k-近鄰算法的原理、操作步驟、相關(guān)實(shí)現(xiàn)與使用技巧,需要的朋友可以參考下

本文實(shí)例講述了Python機(jī)器學(xué)習(xí)k-近鄰算法。分享給大家供大家參考,具體如下:

工作原理

存在一份訓(xùn)練樣本集,并且每個(gè)樣本都有屬于自己的標(biāo)簽,即我們知道每個(gè)樣本集中所屬于的類(lèi)別。輸入沒(méi)有標(biāo)簽的新數(shù)據(jù)后,將新數(shù)據(jù)的每個(gè)特征與樣本集中數(shù)據(jù)對(duì)應(yīng)的特征進(jìn)行比較,然后提取樣本集中與之最相近的k個(gè)樣本。觀察并統(tǒng)計(jì)這k個(gè)樣本的標(biāo)簽,選擇數(shù)量最大的標(biāo)簽作為這個(gè)新數(shù)據(jù)的標(biāo)簽。

用以下這幅圖可以很好的解釋kNN算法:

不同形狀的點(diǎn),為不同標(biāo)簽的點(diǎn)。其中綠色點(diǎn)為未知標(biāo)簽的數(shù)據(jù)點(diǎn)。現(xiàn)在要對(duì)綠色點(diǎn)進(jìn)行預(yù)測(cè)。由圖不難得出:

  • 如果k=3,那么離綠色點(diǎn)最近的有2個(gè)紅色三角形和1個(gè)藍(lán)色的正方形,這3個(gè)點(diǎn)投票,于是綠色的這個(gè)待分類(lèi)點(diǎn)屬于紅色的三角形。
  • 如果k=5,那么離綠色點(diǎn)最近的有2個(gè)紅色三角形和3個(gè)藍(lán)色的正方形,這5個(gè)點(diǎn)投票,于是綠色的這個(gè)待分類(lèi)點(diǎn)屬于藍(lán)色的正方形。

kNN算法實(shí)施

偽代碼

對(duì)未知屬性的數(shù)據(jù)集中的每個(gè)點(diǎn)執(zhí)行以下操作

1. 計(jì)算已知類(lèi)型類(lèi)別數(shù)據(jù)集中的點(diǎn)與當(dāng)前點(diǎn)之間的距離
2. 按照距離遞增次序排序
3. 選取與當(dāng)前點(diǎn)距離最小的k個(gè)點(diǎn)
4. 確定前k個(gè)點(diǎn)所在類(lèi)別的出現(xiàn)頻率
5. 返回前k個(gè)點(diǎn)出現(xiàn)頻率最高的類(lèi)別作為當(dāng)前點(diǎn)的預(yù)測(cè)分類(lèi)

歐式距離(計(jì)算兩點(diǎn)之間的距離公式)

計(jì)算點(diǎn)x與點(diǎn)y之間歐式距離

python代碼實(shí)現(xiàn)

# -*- coding:utf-8 -*-
#! python2
import numpy as np
import operator
# 訓(xùn)練集
data_set = np.array([[1., 1.1],
           [1.0, 1.0],
           [0., 0.],
           [0, 0.1]])
labels = ['A', 'A', 'B', 'B']
def classify_knn(in_vector, training_data, training_label, k):
  """
  :param in_vector: 待分類(lèi)向量
  :param training_data: 訓(xùn)練集向量
  :param training_label: 訓(xùn)練集標(biāo)簽
  :param k: 選擇最近鄰居的數(shù)目
  :return: 分類(lèi)器對(duì) in_vector 分類(lèi)的類(lèi)別
  """
  data_size = training_data.shape[0] # .shape[0] 返回二維數(shù)組的行數(shù)
  diff_mat = np.tile(in_vector, (data_size, 1)) - data_set # np.tile(array, (3, 2)) 對(duì) array 進(jìn)行 3×2 擴(kuò)展為二維數(shù)組
  sq_diff_mat = diff_mat ** 2
  sq_distances = sq_diff_mat.sum(axis=1) # .sum(axis=1) 矩陣以列求和
  # distances = sq_distances ** 0.5 # 主要是通過(guò)比較求最近點(diǎn),所以沒(méi)有必要求平方根
  distances_sorted_index = sq_distances.argsort() # .argsort() 對(duì)array進(jìn)行排序 返回排序后對(duì)應(yīng)的索引
  class_count_dict = {} # 用于統(tǒng)計(jì)類(lèi)別的個(gè)數(shù)
  for i in range(k):
    label = training_label[distances_sorted_index[i]]
    try:
      class_count_dict[label] += 1
    except KeyError:
      class_count_dict[label] = 1
  class_count_dict = sorted(class_count_dict.iteritems(), key=operator.itemgetter(1), reverse=True) # 根據(jù)字典的value值對(duì)字典進(jìn)行逆序排序
  return class_count_dict[0][0]
if __name__ == '__main__':
  vector = [0, 0] # 待分類(lèi)數(shù)據(jù)集
  print classify_knn(in_vector=vector, training_data=data_set, training_label=labels, k=3)

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

算法評(píng)價(jià)

  • 優(yōu)點(diǎn):精度高、對(duì)異常值不敏感、無(wú)數(shù)據(jù)輸入假定
  • 缺點(diǎn):計(jì)算復(fù)雜度高、空間復(fù)雜度高
  • 使用數(shù)據(jù)范圍:數(shù)據(jù)型和標(biāo)稱(chēng)型
  • 適用:kNN方法通常用于一個(gè)更復(fù)雜分類(lèi)算法的一部分。例如,我們可以用它的估計(jì)值做為一個(gè)對(duì)象的特征。有時(shí)候,一個(gè)簡(jiǎn)單的kNN算法在良好選擇的特征上會(huì)有很出色的表現(xiàn)。

更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《Python數(shù)學(xué)運(yùn)算技巧總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門(mén)與進(jìn)階經(jīng)典教程》及《Python文件與目錄操作技巧匯總

希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • Python處理zip壓縮文件的常見(jiàn)操作

    Python處理zip壓縮文件的常見(jiàn)操作

    處理zip格式壓縮包文件,可以使用python的zipfile模塊,Python的zipfile模塊用于處理zip格式的壓縮包,以下是一些使用Python的zipfile模塊的常見(jiàn)操作,通過(guò)代碼示例介紹的非常詳細(xì),需要的朋友可以參考下
    2024-10-10
  • Python使用unittest進(jìn)行有效測(cè)試的示例詳解

    Python使用unittest進(jìn)行有效測(cè)試的示例詳解

    這篇文章主要介紹了如何使用?unittest?來(lái)編寫(xiě)和運(yùn)行單元測(cè)試,希望通過(guò)閱讀本文,大家能了解?unittest?的基本使用方法,以及如何使用?unittest?中的斷言方法和測(cè)試用例組織結(jié)構(gòu)
    2023-06-06
  • 布同 統(tǒng)計(jì)英文單詞的個(gè)數(shù)的python代碼

    布同 統(tǒng)計(jì)英文單詞的個(gè)數(shù)的python代碼

    最近需要翻譯英文文章,所以需要統(tǒng)計(jì)單詞個(gè)數(shù)。索性寫(xiě)了一段代碼在此,可以簡(jiǎn)單的統(tǒng)計(jì)單詞的個(gè)數(shù)
    2011-03-03
  • Python網(wǎng)絡(luò)編程之網(wǎng)絡(luò)與通信介紹

    Python網(wǎng)絡(luò)編程之網(wǎng)絡(luò)與通信介紹

    這篇文章主要介紹了Python網(wǎng)絡(luò)編程之網(wǎng)絡(luò)與通信介紹,計(jì)算機(jī)網(wǎng)絡(luò)就是分布在不同的地區(qū)的計(jì)算機(jī)與專(zhuān)門(mén)的外部設(shè)備通信線(xiàn)路互聯(lián)在一起,
    成為一個(gè)功能強(qiáng),規(guī)模大的網(wǎng)絡(luò)系統(tǒng),本期就主要介紹網(wǎng)絡(luò)與通信的相關(guān)知識(shí)和原理,需要的朋友可以參考下
    2023-08-08
  • python 實(shí)現(xiàn)一個(gè)簡(jiǎn)單的線(xiàn)性回歸案例

    python 實(shí)現(xiàn)一個(gè)簡(jiǎn)單的線(xiàn)性回歸案例

    這篇文章主要介紹了python 實(shí)現(xiàn)一個(gè)簡(jiǎn)單的線(xiàn)性回歸案例,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-12-12
  • Python 20行簡(jiǎn)單實(shí)現(xiàn)有道在線(xiàn)翻譯的詳解

    Python 20行簡(jiǎn)單實(shí)現(xiàn)有道在線(xiàn)翻譯的詳解

    這篇文章主要介紹了Python實(shí)現(xiàn)有道在線(xiàn)翻譯的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • 教你用python實(shí)現(xiàn)一個(gè)無(wú)界面的小型圖書(shū)管理系統(tǒng)

    教你用python實(shí)現(xiàn)一個(gè)無(wú)界面的小型圖書(shū)管理系統(tǒng)

    今天帶大家學(xué)習(xí)怎么用python實(shí)現(xiàn)一個(gè)無(wú)界面的小型圖書(shū)管理系統(tǒng),文中有非常詳細(xì)的圖文解說(shuō)及代碼示例,對(duì)正在學(xué)習(xí)python的小伙伴們有很好地幫助,需要的朋友可以參考下
    2021-05-05
  • Python集成開(kāi)發(fā)環(huán)境pycharm配置git的實(shí)現(xiàn)步驟

    Python集成開(kāi)發(fā)環(huán)境pycharm配置git的實(shí)現(xiàn)步驟

    本文主要介紹了Python集成開(kāi)發(fā)環(huán)境pycharm配置git的實(shí)現(xiàn)步驟,文中通過(guò)圖文的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-05-05
  • 使用tensorflow實(shí)現(xiàn)線(xiàn)性回歸

    使用tensorflow實(shí)現(xiàn)線(xiàn)性回歸

    這篇文章主要為大家詳細(xì)介紹了使用tensorflow實(shí)現(xiàn)線(xiàn)性回歸,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • Python中數(shù)值比較的效率

    Python中數(shù)值比較的效率

    這篇文章主要介紹了Python中數(shù)值比較的效率,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01

最新評(píng)論

台山市| 宜兴市| 商丘市| 洪泽县| 淄博市| 常山县| 五原县| 烟台市| 怀仁县| 班玛县| 承德县| 新民市| 铜川市| 云南省| 雷州市| 永兴县| 玉龙| 唐海县| 中方县| 太原市| 乳山市| 永泰县| 灵武市| 武鸣县| 南涧| 虹口区| 湛江市| 盐津县| 佳木斯市| 旬邑县| 龙游县| 宝清县| 吉林市| 佛学| 蕲春县| 永城市| 韶山市| 红原县| 彭阳县| 清新县| 太康县|