问题:
read : https://book.douban.com/subject/24703171/
其中: kNN算法实现的排序解释
(code:
)
其中3的使用自己从来没有这样使用过,好简洁明快的写法,赞一个,学习一下。
sorted 和 key=operator.itemgetter(1)的解释如下:
(参见:http://blog.csdn.net/dongtingzhizi/article/details/12068205)
read : https://book.douban.com/subject/24703171/
其中: kNN算法实现的排序解释
(code:
def 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.iteritems(), key=operator.itemgetter(1), reverse=True) ---------------------------3
return sortedClassCount[0][0]
)
其中3的使用自己从来没有这样使用过,好简洁明快的写法,赞一个,学习一下。
sorted 和 key=operator.itemgetter(1)的解释如下:
(参见:http://blog.csdn.net/dongtingzhizi/article/details/12068205)
operator.itemgetter函数获取的不是值,而是定义了一个函数,通过该函数作用到对象上才能获取值。
sorted函数
Python内置的排序函数sorted可以对list或者iterator进行排序,官网文档见:http://docs.python.org/2/library/functions.html?highlight=sorted#sorted,该函数原型为:
sorted(iterable[, cmp[, key[, reverse]]])
参数解释:
(3)key为函数,指定取待排序元素的哪一项进行排序,函数用上面的例子来说明,代码如下:
sorted(students, key=lambda student : student[2])
key指定的lambda函数功能是去元素student的第三个域(即:student[2]),因此sorted排序时,会以students所有元素的第三个域来进行排序。
有了上面的operator.itemgetter函数,也可以用该函数来实现,例如要通过student的第三个域排序,可以这么写:
sorted(students, key=operator.itemgetter(2))
sorted函数也可以进行多级排序,例如要根据第二个域和第三个域进行排序,可以这么写:
sorted(students, key=operator.itemgetter(1,2))
即先跟句第二个域排序,再根据第三个域排序
没有评论:
发表评论