美文网首页
机器学习实战

机器学习实战

作者: 落花盈香 | 来源:发表于2017-02-17 14:39 被阅读0次

    机器学习实战第二章kNN: http://blog.csdn.net/fenfenmiao/article/details/52165472

    参考  http://blog.sciencenet.cn/blog-791354-705248.html

    from numpy import *#导入numpy库

    import operator

    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

    def classify0(inX,dataSet,labels,k):#输入待分类向量,da teSet为测试集,labels为目标结果,k为样本值

    dataSetSize=dataSet.shape[0]#获取数组的行数

    diffMat = tile(inX,(dataSetSize,1)) - dataSet#将inX复制dataSize行,在与dataSet相减,即(x1-x2)

    sqDiffMat=diffMat**2#(x1-x2)的平方

    sqDistances=sqDiffMat.sum(axis=1)#(x1-x2)^2+(y1-y2)^2

    distances=sqDistances**0.5#上述结果开根号

    sortedDistIndices=distances.argsort()#将数组的下标按数组从小到大的顺序排序

    classCount={}#计算k个值里的类别

    for i in range(k):

    voteIlabel=labels[sortedDistIndices[i]]#从距离最小的类别开始统计

    classCount[voteIlabel]=classCount.get(voteIlabel,0)+1#ge t表示先查看classCount中是否存在votellabel,如果存在,则获取个数,否则,返回0

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

    return sortedClassCount[0][0]#返回统计中类别值最大的

    def file2matrix(filename):#将文件转化成python可以处理的形式

    fr = open(filename)#打开文件,此文件与kNN.py文件在同一目录下

    numberOfLines = len(fr.readlines())        #get the number of lines in the file

    returnMat = zeros((numberOfLines,3))        #prepare matrix to return

    classLabelVector = []                      #prepare labels return

    fr = open(filename)

    index = 0

    for line in fr.readlines():

    line = line.strip()#去enter

    listFromLine = line.split('\t')#根据\t 将整行分割成元素列表

    returnMat[index,:] = listFromLine[0:3]#赋给

    classLabelVector.append(int(listFromLine[-1]))#将元素列表的最后一个元素添加到classLabelVector

    index += 1#行数+1

    return returnMat,classLabelVector

    (由于简书显示代码模式很麻烦,决定搬家到CSDN)

    相关文章

      网友评论

          本文标题:机器学习实战

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