美文网首页
机器学习

机器学习

作者: Mr_码客 | 来源:发表于2017-07-31 21:46 被阅读0次

    1.k-近邻算法

    # coding=utf-8
    from numpy import *
    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):
        # 数组长度
        dataSetSize = dataSet.shape[0]
        # (A-0)(B-0)
        diffMat = tile(inX, (dataSetSize, 1)) - dataSet
        # (A-0)*2 (B-0)*2
        sqDiffMat = diffMat ** 2
        # (A - 0)*2 +(B - 0)*2
        sqDistances = sqDiffMat.sum(axis=1)
        distances = sqDistances ** 0.5
        # 得到距离从小到大的索引
        sortedDistIndicies = distances.argsort()
        classCount = {}
        for i in range(k):
            # 获取从小到大的值的标签
            voteIlabel = labels[sortedDistIndicies[i]]
            classCount[voteIlabel] = classCount.get(voteIlabel, 0) + 1
        sortedClassCount = sorted(classCount.iteritems(), key=operator.itemgetter(1), reverse=True)
        return sortedClassCount[0][0]
    
    
    group, labels = createDataSet()
    classify0([0, 0], group, labels, 3)
    
    

    相关文章

      网友评论

          本文标题:机器学习

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