机器学习实战-KNN

来源:互联网 发布:关闭windows自动更新 编辑:程序博客网 时间:2024/05/22 00:19

KNN算法

KNN算法流程:
1.求测试数据集与各个训练数据之间的距离
2.然后按照距离递增关系进行排序
3.选取距离最小的K个点
4.确定前K个点所在类别的频率
5.返回前K个点中频率最高的类别作为测试集的预测分类

缺点:
1,计算量大,需要对所有的数据集遍历一遍。
2,结果不稳定,从图中我们可以看出结果主要由K来确定。K是人为规定的所以导致结果容易出现偏差
优点:
算法简单。
code:
# -*- coding: utf-8 -*-"""Created on Wed Nov 29 16:09:27 2017@author: lenovo"""'''Load data'''def createDataSet():    group = array([[1.0,2.0],                   [1.2,0.1],                   [0.1,1.4],                   [0.3,3.5]])    labels = ['A','A','B','B']    return group,labelsdef classify(input,dataSet,label,k):    dataSize = dataSet.shape[0]    print(dataSize)    diff = tile(input,(dataSize,1)) - dataSet#这里tile相当于把行复制4倍,列不变    sqdiff = diff**2    #print(sum(sqdiff,axis=1))    squareDist = sum(sqdiff,axis=1)#每行相加,相当于x**2+y**2    dist = squareDist**0.5    sortedDistIndex = argsort(dist)#将dist进行排序,sortedDistIndex返回的是标签,0,1,2等    classCount = {}#classCount相当于一个map<char,count>,char相当于标签,count相当于个数    for i in range(k):        voteLabel = label[sortedDistIndex[i]]#得到前k个label               classCount[voteLabel] = classCount.get(voteLabel,0)+1#classCount.get 从字典中取值,key为voteIlabel,如果没有返回0,如果有就加1       # print("%s:%d"%(voteLabel, classCount[voteLabel]))        maxCount = 0        #key就是label,value就是统计的值        for key,value in classCount.items():            if value >maxCount:                maxCount = value                classes = key    return classesif __name__=='__main__':    dataSet,labels = createDataSet()    #print (dataSet)    input = array([1.1,0.3])    K = 3    output = classify(input,dataSet,labels,K)    print (output)    
详细分解一下:
根据算法的第一二步我们已经求得了
A:0.223607
B:1.486607
A:1.702939
B:3.298485
然后我们选择K=3,所以前K个label是:A,B,A。然后对频率进行统计可以得
A:2,B:1所以这样我们知道测试集肯定被归纳为A了。
下面代码需要补一下python中字典的用法,我也顺便给大家搬运一下吧:
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 连衣裙腰大了怎么办呀 憋尿后出现尿急尿涨怎么办 脚有酸酸的味道怎么办 三星手机home键失灵怎么办 三星s6返回键失灵怎么办 三星s7屏幕漏液怎么办 三星s8出现蓝框怎么办 三星手机短信图标没了怎么办 ps没有足够的ram怎么办 ps性能调不了是怎么办 苹果6p照相模糊怎么办 相框玻璃碎了怎么办 word文档加密后忘记密码怎么办 手机wps密码忘了怎么办 苹果手表忘了密码怎么办 苹果系统忘了密码怎么办 ps画板建小了怎么办 wps表格密码忘了怎么办 word文档变成虚的怎么办 wps论文中表格跨页怎么办 word文档复制过来有边框怎么办 wps表格跨页断开怎么办 锅的铆钉老是松怎么办 文胸不知道怎么染色了怎么办 未后的信息我该怎么办? 做leep手术后大出血怎么办 眼线笔出不了水怎么办 手机字体变成空心字怎么办 平安树树枝黑了怎么办 柳树被虫钻洞了怎么办 柳树叶子上有虫子怎么办 小金鱼翻肚皮了怎么办 秋天树叶没了小鸟怎么办 去国外旅游不会英语怎么办 橡皮树长了2米高怎么办 榕树盆景长的高怎么办? 2岁宝宝看书弯腰低头怎么办 excel表格打开很慢怎么办 3d模型有红线框怎么办 电视页面加载时错误怎么办 投屏显示加载视频错误怎么办