美文网首页
机器学习实战之K近邻

机器学习实战之K近邻

作者: suxuer | 来源:发表于2018-04-18 14:37 被阅读0次

手撕代码,已经全部调试正确,可以直接copy使用的哦;;;;诶,这个简书复制代码好像不咋好用(注意缩进)

#!/usr/bin/python

#-*- coding:UTF-8-*- from numpy import * #科学计数包

import operator #运算符模块

from os import listdir #从os模块中导入listdir,他可以列出给定目录的文件名

#creat DataSet

def creatDataSet():

    group = array([[1. ,1.1],[1. ,1.],[0. ,0.],[0.,0.1]])

    labels = ['A', 'A', 'B', 'B']

    return group ,labels

#classify these datasets

def classify0(inX, dataSet, labels, k):

    dataSetSize = dataSet.shape[0]

    #shape[0]返回行数,shape[1]返回列数,行数就是样本数量,此处为4

    diffMat = tile(inX, (dataSetSize, 1)) - dataSet #要分类的新数据和原始数据做差

    #about tile():

#1.tile()是numpy下的一个函数

#2.tile(A, reps)返回一个shape =reps的矩阵,矩阵的每个元素是A(reps的数字从后往前分布对应A的第N个维度的重复次数)

#3.可以理解为行方向重复多少次,列方向重复多少次

    sqDiffMat = diffMat ** 2 #对差求平方

    sqDistances = sqDiffMat.sum(axis = 1) #这样就求出每个新数据点和原始数据点的距离的平方

    distances = sqDistances ** 0.5 #这里求得才是距离

    sortedDisIndicies = distances.argsort()#距离升序排序

#about argsort():

#argsort()函数返回的是数组值从小到大排序的索引值,也就是原数组的下标(remember下表从0开始算) #存放分类结果以及投票次数

    classCount = {} #建立空字典 {key, value},key是label, value 是label的次数

    for i in range(k):

        voteLabel = labels[sortedDisIndicies[i]]

        classCount[voteLabel] = classCount.get(voteLabel, 0) + 1

#voteLabel 不在classCount中时返回0.若在就读取当前的value值+1

      sortedClassCount = sorted(classCount.iteritems(), key = operator.itemgetter(1), reverse = True) #sorted(iterable, cmp=None, key=None, reverse=False)

#return new sorted list返回列表 #cmp:用于比较的函数,比较什么由key决定 #key:用列表的某个属性或者函数进行作为关键字,迭代集合中的一项 、

#operator.itemgetter(1)表示获得对象的第一个域的值,这里是指value #reverse:排序规则,True降序,False 升序

       return sortedClassCount[0][0]

if __name__ == "__main__":

    dataSet,labels =creatDataSet()

    inX = [0.1, 0.1]

    className = classify0(inX, dataSet,labels,3)

    print "the class of test sample is %s" %className

#-*- coding:UTF-8-*-

from numpyimport *#科学计数包

import operator#运算符模块

from osimport listdir#从os模块中导入listdir,他可以列出给定目录的文件名

#creat DataSet

def creatDataSet():

group = array([[1. ,1.1],[1. ,1.],[0. ,0.],[0.,0.1]])

labels = ['A','A','B','B']

return group ,labels

#classify these datasets

def classify0(inX, dataSet, labels, k):

dataSetSize = dataSet.shape[0]#shape[0]返回行数,shape[1]返回列数,行数就是样本数量,此处为4

    diffMat = tile(inX, (dataSetSize,1)) - dataSet#要分类的新数据和原始数据做差

    # about tile():

    #1.tile()是numpy下的一个函数

    #2.tile(A, reps)返回一个shape =reps的矩阵,矩阵的每个元素是A(reps的数字从后往前分布对应A的第N个维度的重复次数)

    #3.可以理解为行方向重复多少次,列方向重复多少次

    sqDiffMat = diffMat **2      #对差求平方

    sqDistances = sqDiffMat.sum(axis =1)#这样就求出每个新数据点和原始数据点的距离的平方

    distances = sqDistances **0.5          #这里求得才是距离

    sortedDisIndicies = distances.argsort()#距离升序排序

    #about argsort():

    #argsort()函数返回的是数组值从小到大排序的索引值,也就是原数组的下标(remember下表从0开始算)

    #存放分类结果以及投票次数

    classCount = {}#建立空字典  {key, value},key是label, value 是label的次数

    for iin range(k):

voteLabel = labels[sortedDisIndicies[i]]

classCount[voteLabel] = classCount.get(voteLabel,0) +1

        #voteLabel 不在classCount中时返回0.若在就读取当前的value值+1

    sortedClassCount =sorted(classCount.iteritems(),key = operator.itemgetter(1),reverse =True)

#sorted(iterable, cmp=None, key=None, reverse=False)

    #return new sorted list返回列表

    #cmp:用于比较的函数,比较什么由key决定

    #key:用列表的某个属性或者函数进行作为关键字,迭代集合中的一项

    #  operator.itemgetter(1)表示获得对象的第一个域的值,这里是指value

    #reverse:排序规则,True降序,False 升序

    return sortedClassCount[0][0]

if __name__ =="__main__":

dataSet,labels =creatDataSet()

inX = [0.1,0.1]

className = classify0(inX, dataSet,labels,3)

print "the class of test sample is %s" %className

相关文章

  • 机器学习实战之K近邻

    手撕代码,已经全部调试正确,可以直接copy使用的哦;;;;诶,这个简书复制代码好像不咋好用(注意缩进) #!/u...

  • 机器学习之K近邻算法

    什么是K近邻算法 众所周知,电影可以按照题材分类,然而题材本身是如何定义?同一题材的电影有哪些公共特征?这是电影分...

  • 机器学习实战之K-近邻算法(二)

    机器学习实战之K-近邻算法(二) 2-1 K-近邻算法概述 简单的说,K-近邻算法采用测量不同特征值之间的距离方法...

  • 机器学习实战

    机器学习实战 [tag]人工智能,机器学习,可视化,数据分析,k近邻,python,监督机器学习算法, [cont...

  • K-Means算法

    参考链接:1. python机器学习实战之K均值聚类2. 机器学习实战之K-Means算法3.《机器学习实战》(十...

  • 机器学习实战(MACHINE LEARNING IN ACTIO

    kNN(k近邻)方法在《机器学习实战》这本书里是最先介绍的算法,估计也是最简单的了。。。k-近邻算法(kNN)工作...

  • 【机器学习】有监督学习kNN(k-近邻法)

    学习自《机器学习实战》 任务 学习k-近邻分类算法 使用matplotlib创建扩散图 归一化数值 思想 采用测量...

  • 【机器学习】决策树(构造篇)

    下一篇为:【机器学习】决策树(Matplotlib可视化+项目实战) 最经常使用的机器学习算法k近邻法最大缺点是无...

  • 机器学习实战篇 (k近邻算法)

    机器学习实战篇 (k近邻算法) k近邻算法:通过测量不同特征值之间的距离进行分类 优点:精度高,对异常值不敏感,无...

  • [机器学习实战]k近邻算法

    从一个最基本的算法示例来入门机器学习 第一个分类算法 --- k-近邻算法(简单地说,k近邻算法采用测量不同特征值...

网友评论

      本文标题:机器学习实战之K近邻

      本文链接:https://www.haomeiwen.com/subject/tcjvkftx.html