K-近邻算法

来源:互联网 发布:mac解压rar命令 编辑:程序博客网 时间:2024/05/29 12:53

注意字典排序的使用:

# -*- coding: utf-8 -*-'''@File    : KNNtest_1.py@desc    : kNN: k Nearest NeighborsInput:      inX: vector to compare to existing dataset (1xN)            dataSet: size m data set of known vectors (NxM)            labels: data set labels (1xM vector)            k: number of neighbors to use for comparison (should be an odd number)Output:     the most popular class label'''from numpy import *import operatordef classify0(inX, dataSet, labels, k):    dataSetSize = dataSet.shape[0]    diffMat = tile(inX, (dataSetSize, 1)) - dataSet    sqDiffMat = diffMat ** 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.items(), key=operator.itemgetter(1), reverse=True)    return sortedClassCount[0][0]def createDataSet():    group = array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]])    labels = ['A','A','B','B']    return group, labelsgroup,labels = createDataSet()print(classify0([0,0],group,labels,3))
原创粉丝点击