国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python k-近鄰算法實例分享

2020-02-23 05:27:23
字體:
供稿:網(wǎng)友

簡單說明

這個算法主要工作是測量不同特征值之間的距離,有個這個距離,就可以進行分類了。

簡稱kNN。

已知:訓(xùn)練集,以及每個訓(xùn)練集的標(biāo)簽。

接下來:和訓(xùn)練集中的數(shù)據(jù)對比,計算最相似的k個距離。選擇相似數(shù)據(jù)中最多的那個分類。作為新數(shù)據(jù)的分類。

python實例

代碼如下:
# -*- coding: cp936 -*-

#win系統(tǒng)中應(yīng)用cp936編碼,linux中最好還是utf-8比較好。
from numpy import *#引入科學(xué)計算包
import operator #經(jīng)典python函數(shù)庫。運算符模塊。

#創(chuàng)建數(shù)據(jù)集
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

#算法核心
#inX:用于分類的輸入向量。即將對其進行分類。
#dataSet:訓(xùn)練樣本集
#labels:標(biāo)簽向量
def classfy0(inX,dataSet,labels,k):
    #距離計算
    dataSetSize =dataSet.shape[0]#得到數(shù)組的行數(shù)。即知道有幾個訓(xùn)練數(shù)據(jù)
    diffMat     =tile(inX,(dataSetSize,1))-dataSet#tile:numpy中的函數(shù)。tile將原來的一個數(shù)組,擴充成了4個一樣的數(shù)組。diffMat得到了目標(biāo)與訓(xùn)練數(shù)值之間的差值。
    sqDiffMat   =diffMat**2#各個元素分別平方
    sqDistances =sqDiffMat.sum(axis=1)#對應(yīng)列相乘,即得到了每一個距離的平方
    distances   =sqDistances**0.5#開方,得到距離。
    sortedDistIndicies=distances.argsort()#升序排列
    #選擇距離最小的k個點。
    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]

意外收獲

把自己寫的模塊加入到python默認(rèn)就有的搜索路徑:在python/lib/-packages目錄下建立一個 xxx.pth的文件,寫入自己寫的模塊所在的路徑即可

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 罗山县| 宁夏| 隆德县| 高陵县| 会理县| 信阳市| 阳新县| 高碑店市| 西乌珠穆沁旗| 平凉市| 凭祥市| 葫芦岛市| 永清县| 隆化县| 宿松县| 正镶白旗| 萝北县| 蕉岭县| 桂东县| 德安县| 石台县| 抚顺市| 比如县| 扶绥县| 建水县| 丽水市| 阿勒泰市| 大丰市| 壤塘县| 策勒县| 五家渠市| 台东市| 保定市| 依兰县| 农安县| 赤水市| 安溪县| 临沂市| 东丽区| 讷河市| 长丰县|