日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

k近邻算法python_k-近邻算法的Python实现

發布時間:2024/3/13 python 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 k近邻算法python_k-近邻算法的Python实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本篇文章,想向各位介紹一個非常易于實現的機器學習算法:k-近鄰算法,眾所周知,k-近鄰算法是非常常用的分類算法,現在給出k-近鄰算法的官方解釋:在一個樣本數據集,也稱作訓練樣本集,并且樣本中每個數據都存在標簽,即我們知道樣本集中每一數據與所屬分類的對應關系,輸入沒有標簽的新數據后,將新數據的每個特征與樣本集中的數據對應的特征進行比較,然后算法提取樣本集中特征最相似的數據(最近鄰)的分類標簽。一般來說,我們只選擇樣本集中前k個最相似的數據,這就是k-近鄰算法中k的出處,通常k是不大于20的整數,最后,選擇k個最相似的數據中出現次數最多的分類,作為新數據的分類。通過尋找近鄰來輔助分類可以提升分類的效率,簡化分類的流程。

現在來介紹k-近鄰算法的一般流程:

(1)收集數據:比如問卷法,觀察法等等。

(2)準備數據:距離計算所需的數值,最好是結構化的數據格式。

(3)分析數據:聚類分析、因子分析、相關分析、對應分析、回歸分析、方差分析等。

(4)訓練算法:在k-近鄰中一般不用。

(5)測試算法:計算錯誤率。

(6)使用算法:首先需要輸入樣本數據和結構化的輸出結果,然后運行k-近鄰算法判定輸入數據分別屬于哪個分類,最后應用對計算出的分類執行后續的處理。

介紹完了流程,我們開始導入數據,這次導入數據的代碼環境依然選擇python,首先我們需要有kNN.py的文件,關于kNN的源碼,推薦各位上CodeForge網站上下載,該網站有很多有用的源碼。

有了kNN的源碼之后,我們可能還要編寫一些基本的通用函數,在源碼中增加下面的代碼:

from numpy import *

Import operator

def createDataSet():

group = array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]])

labels = [‘A’,’A’,’B’,’B’]

return group ,labels

在上面的代碼中,我們導入了兩個模塊:第一個是科學計算包Numpy;第二個是運算符模塊,k-近鄰算法執行排序操作時將使用這個模塊提供的函數。

現在我們來實施kNN算法,為每組數據分類,先給出其偽代碼如下:

對未知類別屬性的數據集中的每個點依次執行以下操作:

(1)計算已知類別數據集中的每個點與當前點之間的距離:

(2)按照距離遞增次序排序;

(3)選取與當前距離最小的k個點;

(4)確定前k個點所在類別的出現頻率;

(5)返回前k個點出現頻率最高的類別作為當前點的預測分類。

K_近鄰算法的python實現如下:

def classify0(inX,dataSet,labels,k):

dataSetSize = dataSet.shape[0]

diffMat = tile(inX,(dataSetSize,1))-dataSet

sqDiffMat = diffMat**2

sqDistances = sqDiffMat.sum(axis=1)

distance = sqDistance**0.5

sortedDistIndicies = distance.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]

以上代碼的目的主要是為了計算數據中的點與當前點的距離,根據計算的的距離結果,選擇距離最小的k個點,隨后對這k個點按照從大到小進行排序。(距離計算主要是歐式距離)

為了預測數據所在分類,在python提示符中輸入下列命令:

kNN.classify0([0,0],group,labels,3)

以上是我們用python構造的第一個分類器,這個分類器可以完成很多任務,我們初步完成了構造分類算法。之后的文章中,將會給給位介紹一下k近鄰算法的案例,敬請期待~

作者:徐永瑞 Python愛好者社區專欄作者,請勿轉載,謝謝。

出處:k-近鄰算法的Python實現

配套視頻教程:Python3爬蟲三大案例實戰分享:貓眼電影、今日頭條街拍美圖、淘寶美食 Python3爬蟲三大案例實戰分享

公眾號:Python愛好者社區(微信ID:python_shequ),關注,查看更多連載內容。

加小編個人微信:tsdatajob ,跟作者互動,一起探討。

總結

以上是生活随笔為你收集整理的k近邻算法python_k-近邻算法的Python实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。