亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python實現(xiàn)KNN鄰近算法

 更新時間:2021年01月28日 16:41:24   作者:Think-througher  
這篇文章主要為大家詳細介紹了Python實現(xiàn)KNN鄰近算法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

簡介

鄰近算法,或者說K最近鄰(kNN,k-NearestNeighbor)分類算法是數(shù)據(jù)挖掘分類技術(shù)中最簡單的方法之一。所謂K最近鄰,就是k個最近的鄰居的意思,說的是每個樣本都可以用它最接近的k個鄰居來代表。

kNN算法的核心思想是如果一個樣本在特征空間中的k個最相鄰的樣本中的大多數(shù)屬于某一個類別,則該樣本也屬于這個類別,并具有這個類別上樣本的特性。該方法在確定分類決策上只依據(jù)最鄰近的一個或者幾個樣本的類別來決定待分樣本所屬的類別。 kNN方法在類別決策時,只與極少量的相鄰樣本有關(guān)。由于kNN方法主要靠周圍有限的鄰近的樣本,而不是靠判別類域的方法來確定所屬類別的,因此對于類域的交叉或重疊較多的待分樣本集來說,kNN方法較其他方法更為適合。

本文將采用Python和numpy庫實現(xiàn)KNN的核心算法,并使用一個簡單的例子進行驗證。

KNN核心算法的實現(xiàn)

對于KNN算法實現(xiàn),首先我們計算歐式空間距離,然后根據(jù)距離排序,找到k個緊鄰,找出最相近的分類。

from numpy import tile 
import operator 
 
def do_knn_classifier(in_array, data_set, labels, k): 
 ''''' 
 classify the in_array according the data set and labels 
 ''' 
 
 #計算距離適量 
 data_set_size = data_set.shape[0] 
 diff_matrix = tile(in_array, (data_set_size, 1)) - data_set 
 sq_diff_matrix = diff_matrix ** 2 
 sq_distance = sq_diff_matrix.sum(axis=1) 
 distances = sq_distance ** 0.5 
 
 #argsort函數(shù)返回的是數(shù)組值從小到大的索引值, 距離排序 
 sorted_dist_indicies = distances.argsort() 
 
 # 選擇K個緊鄰 
 class_count = {} 
 for i in range(k): 
 vote_label = labels[sorted_dist_indicies[i]] 
 class_count[vote_label] = class_count.get(vote_label, 0) + 1 
 
 #排序,并返回最相鄰的分類 
 sorted_class_count = sorted(class_count.iteritems(), key=operator.itemgetter(1), reverse=True) 
 
 return sorted_class_count[0][0] 

數(shù)值的歸一化

多數(shù)情況下,由于選擇的特征值取值范圍比較大。在處理這種不同取值范圍的特征值時,通常需要采用的方法就是將數(shù)值歸一化,如將取值范圍處理到0到1或-1到1之間。下面的公式可以將任意取值范圍的特征值轉(zhuǎn)化為0到1的區(qū)間內(nèi)的值:
newValue = (oldValue - min) / (max - min)
其中min和max分別是數(shù)據(jù)集中的最小特征值和最大特征值。

from numpy import tile 
import operator 
 
def auto_normalize_data(data_set): 
 ''''' 
 對數(shù)據(jù)集進行歸一化操作 
 ''' 
 # 參數(shù)0使函數(shù)可以從列中選取最小值,而不是當(dāng)前行的最小值 
 min_vals = data_set.min(0) 
 max_vals = data_set.max(0) 
 ranges = max_vals - min_vals 
 
 
 # 歸一化處理 
 m = data_set.shape[0] 
 norm_data_set = data_set - tile(min_vals, (m, 1)) 
 norm_data_set = norm_data_set / tile(ranges, (m, 1)) 
 
 return norm_data_set, ranges, min_vals 

實例

以一個簡單的例子來結(jié)束本文的介紹。在這里并不需要實現(xiàn)數(shù)據(jù)的歸一化處理。

from numpy import array 
from knn.knn_classifier import do_knn_classifier 
 
def get_data_set(): 
 ''''' 
 Get data set and labels 
 ''' 
 group = array([[1.0, 1.1], [1.0, 1.0], [0, 0], [0, 0.1]]) 
 labels = ['A', 'A', 'B', 'B'] 
 
 return group, labels 
 
if __name__ == '__main__': 
 data_set, labels = get_data_set() 
 
 t = do_knn_classifier(array([0.2, 0.1]), data_set, labels, 3) 
 print t 

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

相關(guān)文章

  • Python cookie的保存與讀取、SSL講解

    Python cookie的保存與讀取、SSL講解

    在本篇文章里小編給大家整理了關(guān)于Python cookie的保存與讀取、SSL講解,需要的朋友們可以學(xué)習(xí)下。
    2020-02-02
  • Python基礎(chǔ)學(xué)習(xí)之模塊的安裝和卸載

    Python基礎(chǔ)學(xué)習(xí)之模塊的安裝和卸載

    其實現(xiàn)在還是有很多剛開始學(xué)習(xí)的小伙伴,會遇到模塊不會安裝的情況,或者一遇到報錯就懵了,這樣就很耽誤我們的學(xué)習(xí)進度。所以,今天我們就來了解一下Python幾種安裝模塊的方法吧
    2022-09-09
  • python爬蟲 線程池創(chuàng)建并獲取文件代碼實例

    python爬蟲 線程池創(chuàng)建并獲取文件代碼實例

    這篇文章主要介紹了python爬蟲 線程池創(chuàng)建并獲取文件代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-09-09
  • python矩陣基本運算的實現(xiàn)

    python矩陣基本運算的實現(xiàn)

    本文主要介紹了python?矩陣的基本運算,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • 20個Python?random模塊常用函數(shù)的應(yīng)用與代碼示例

    20個Python?random模塊常用函數(shù)的應(yīng)用與代碼示例

    隨機數(shù)在計算機科學(xué)和數(shù)據(jù)科學(xué)領(lǐng)域中扮演著重要角色,Python的標(biāo)準(zhǔn)庫中提供了random模塊,用于生成各種隨機數(shù),本文將深入探討random模塊的各種函數(shù),以及它們的應(yīng)用場景和代碼示例,需要的可以參考下
    2024-03-03
  • Python中xlsx文件轉(zhuǎn)置操作詳解(行轉(zhuǎn)列和列轉(zhuǎn)行)

    Python中xlsx文件轉(zhuǎn)置操作詳解(行轉(zhuǎn)列和列轉(zhuǎn)行)

    很多時候我們處理的Excel表格并不是我們想要的樣子,需要將表格的形式進行相應(yīng)轉(zhuǎn)換后進行數(shù)據(jù)分析操作,下面這篇文章主要給大家介紹了關(guān)于Python中xlsx文件轉(zhuǎn)置操作(行轉(zhuǎn)列和列轉(zhuǎn)行)的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • 分享Pycharm中一些不為人知的技巧

    分享Pycharm中一些不為人知的技巧

    工欲善其事必先利其器,Pycharm 是最受歡迎的Python開發(fā)工具,它提供的功能非常強大,是構(gòu)建大型項目的理想工具之一,如果能挖掘出里面實用技巧,能帶來事半功倍的效果
    2018-04-04
  • Python安裝Bs4及使用方法

    Python安裝Bs4及使用方法

    這篇文章主要介紹了Python安裝Bs4及使用方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • python自動化實現(xiàn)登錄獲取圖片驗證碼功能

    python自動化實現(xiàn)登錄獲取圖片驗證碼功能

    這篇文章主要介紹了python自動化實現(xiàn)登錄獲取圖片驗證碼功能,本文通過實例截圖的形式給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-11-11
  • 對python實時得到鼠標(biāo)位置的示例講解

    對python實時得到鼠標(biāo)位置的示例講解

    今天小編就為大家分享一篇對python實時得到鼠標(biāo)位置的示例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10

最新評論