python可視化實現(xiàn)KNN算法-創(chuàng)新互聯(lián)

簡介

公司主營業(yè)務(wù):網(wǎng)站設(shè)計、網(wǎng)站制作、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出澤庫免費做網(wǎng)站回饋大家。

這里通過python的繪圖工具Matplotlib包可視化實現(xiàn)機器學(xué)習(xí)中的KNN算法。


需要提前安裝python的Numpy和Matplotlib包。


KNN–最近鄰分類算法,算法邏輯比較簡單,思路如下:

1.設(shè)一待分類數(shù)據(jù)iData,先計算其到已標記數(shù)據(jù)集中每個數(shù)據(jù)的距離,例如歐拉距離sqrt((x1-x2)^2+(y1-y2)^2);

2.然后根據(jù)離iData最近的k個數(shù)據(jù)的分類,出現(xiàn)次數(shù)最多的類別定為iData的分類。

KNN——最近鄰算法python代碼


代碼實現(xiàn):

import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt

def KNNClassify(labelData,predData,k): #數(shù)據(jù)集包含分類屬性
#labelData 是已經(jīng)標記分類的數(shù)據(jù)集
#predData 未分類的待預(yù)測數(shù)據(jù)集
 labShape = labelData.shape
 for i in range(predData.shape[0]): #以predData的每行數(shù)據(jù)進行遍歷
 iData = predData[i]
 iDset = np.tile(iData,(labShape[0],1)) #將iData重復(fù),擴展成與labelData同形的矩陣
 #這里用歐拉距離sqrt((x1-x2)^2+(y1-y2)^2)
 diff = iDset[...,:-1] - labelData[...,:-1]
 diff = diff**2
 distance = np.sum(diff,axis=1)
 distance = distance ** 0.5 #開根號
 sortedIND = np.argsort(distance) #排序,以序號返回。
 classCount = { }
 for j in range(k): #計算距離最近的前k個標記數(shù)據(jù)的類別
 voteLabel = labelData[sortedIND[j],-1]
 classCount[voteLabel] = classCount.get(voteLabel,0)+1

 maxcls = max(classCount,key=classCount.get) #類別最多的,返回鍵名(類別名)
 predData[i][...,-1] = maxcls

 return predData

網(wǎng)頁題目:python可視化實現(xiàn)KNN算法-創(chuàng)新互聯(lián)
網(wǎng)頁URL:http://www.muchs.cn/article6/diegog.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗、網(wǎng)站制作、品牌網(wǎng)站建設(shè)、Google、網(wǎng)頁設(shè)計公司建站公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站