K-近邻算法

来源:互联网 发布:数据人生txt下载 编辑:程序博客网 时间:2024/05/22 05:18

主要工作原理:
在训练集样本中,每个样本都存在标签,即我们知道每个样本每个样本与所属的对应关系。输入没有标签的新数据后,将新数据中的每个特征与样本集中数据所对应的特征进行对比,根据算法提取样本集中特征最相似的分类标签,选择前k个最相似的数据中出现次数最多的分类作为新数据的分类。
KNN核心代码的算法思想
1.计算已知类别和当前点之间的距离(使用欧氏距离)
2.按照距离递增的次序进行排序
3.选取与当前点距离最小的前k个点
4.确定前k个点出现分类的频率
5.返回前k个点出现频率最高的类别作为当前点对应的预测分类。
另外:在计算欧式距离时,为了防止某些特征的数值太大,太过于影响计算距离,需要使用归一化。
具体代码如下:

def autoform(Dataset):    minVals=Dataset.min(0)    maxVals=Dataset.max(0)    ranges=maxVals-minVals    normDataSet=zeros(shape(Dataset))    m=Dataset.shape[0]    normDataSet=Dataset-tile(minVals,(m,1))    normDataSet=normDataSet/tile(ranges,(m,1))    return normDataSet,ranges,minValsdef classify0(inX,dataSet,labels,k):    dataSetSize=dataSet.shape[0]    diffMat=tile(inX,(dataSetSize,1))-dataSet    sqDiffmMat=diffMat**2    sqDistance=sqDiffmMat.sum(axis=1)    distances=sqDistance**0.5    sortedDistances=distances.argsort()      classCount={}    for i in range(k):        voteIlabel=labels[sortedDistances[i]]        classCount[voteIlabel]=classCount.get(voteIlabel,0)+1    sortedClassCount=sorted(classCount.iteritems(),key=operator.itemgetter(1),reverse=True)    return sortedClassCount[0][0]
阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 人民k歌 下栽k歌 电视k歌 k歌大全 k歌设备 全艮k歌 k歌图片 全尾k歌 全良k歌 会民k歌 k歌达人 民k歌全 民k歌 电脑k歌 我的k歌 全明k歌 k歌神器 k歌app k歌k歌 怎样k歌 酷歌k歌 k歌王ktv k歌沐足 k歌跑调 k歌系统 大众k歌 k歌歌曲 无线k歌 天赖k歌 k歌歌单 前民k歌 前明k歌 麦霸k歌 全文k歌 k歌评论漂亮图粘贴 k歌之王国语 k歌评论2018漂亮图粘贴 k歌之王歌词 k歌评语2019漂亮花花粘贴 k歌之王吉他谱 k歌麦克风