亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

一只菜雞的KNN入門

標簽:
深度學習

路漫漫其修远兮,希望不要漏洞百出,记录一下。 

1、算法核心理论:

  1. 欧式距离计算公式  :         d = \sqrt{(xA - xB)^{}2 + (xA_{1} - xB_{1})^{2}},计算测试样本与训练样本之间的距离,维度越多,根号下的算式越多。


  2. 以上算法选取前K个最小值,并按照频次进行从大到小排序,取频次最高值对应标签,即为测试数据对应类别。

    1. def classify0(testsamp,trainsamp,labels,K):

    2. trainsize = trainsamp.shape[0]

    3. diff = tile(testsamp,(trainsize,1)) - trainsamp

    4. sqdiff = diff ** 2

    5. sum = sqdiff.sum(1)

    6. distance = sum ** 0.5

    7. sortdistance = distance.argsort()# 根据值大小排序,返回值对应索引,方便下一步提取marks

    8. classmarks = {}

    9. for i in range(k):

    10. marks = labels[sortdistance[i]]

    11. # dict.get(x1,x2)函数,当x1键存在,获取x1的value,否则取x2;此处,若marks之前出现过,则取对应值,实现频次累加,若无,取0,进行累加

    12. classmarks[marks] = classmarks.get(marks,0) + 1

    13. sortclassm = sorted(classmarks.items(),key=operator.itemgetter(1),reverse=True)

    14. return sortclassm[0][0]





  3. 若数据集中部分维度值过大,且实际业务中此维度值与其他维度重要性同等,则会造成距离计算偏差,故需要进行归一化操作:


    4、顺便记录一下文本解析到列表,生成数据集和标签:


    5、KNN算法优点在于精确度高,对异常值不敏感,无数据输入假定,但缺点同样明显,若数据集及维度均较大,则计算量过大,无法给出数据集的典型样本和平均特征。

    1. def fileParse(filename):

    2. with open(filename) as fl:

    3. lines = fl.readlines()

    4. normSet = zeros((len(lines),k))

    5. labels = []

    6. index = 0 #用于生成新数据集

    7. for line in lines():

    8. newline = line.strip()

    9. normline = newline.split('\t')

    10. normSet[index,:] = normline[0:3]

    11. labels.append(int(normline[-1]))

    12. index += 1

    13. return normSet, labels

    14. # 归一化操作


    15. def transNorm(dataSet):

    16. minVals = dataSet.min(0)

    17. maxVals = dataSet.max(0)

    18. ranges = maxVals - minVals

    19. normSet = zeros(dataSet.shape)

    20. m = dataSet.shape[0]

    21. normSet = dataSet - tile(minVals,(m,1)) / tile(ranges,(m,1))

    22. return nromSet, ranges, minVals


    1. 原文出处:https://blog.csdn.net/oldog_1991/article/details/81185066

點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消