【发布时间】:2015-05-23 07:38:09
【问题描述】:
我正在用 Python 实现 K-最近邻算法(对于那些不了解学习的人,它是一种用于根据已经分类的数据对对象进行分类的算法,使用欧几里得距离)。
我已经计算了我的距离,我可以取 k 个最近的距离,并找到这些对象的类别。我的问题是,如果 K 大于 1,比如 3 或 5,我不确定如何获得列表中出现频率最高的元素。
例如,我的输出是:
[10, 9, 7, 10]
10 出现的次数最多,所以我想返回这个数字。如果出现平局(2 个或更多元素出现相同的频率),它会返回错误(我可以自己处理)。我只是想对如何返回上述列表的最大值提出一些意见。 (使用 python 2.6.6 所以我不能使用集合导入)。
第二个问题:
我正在尝试将 numpy 数组转换为普通数组。我的代码如下所示:
def getClassesOfIndexes(l):
tmp1 = []
for i in l:
tmp1.append(classes[i])
return tmp1
print(getClassesOfIndexes([1024, 9128, 394, 39]))
这会打印出类似:[array([10], dtype=uint8), array([7], dtype=uint8), array([10], dtype=uint8), array([9], dtype=uint8)]
我能做些什么让它简单地返回[10, 7, 10, 9]?
感谢您的帮助。
【问题讨论】:
标签: python list max frequency python-2.6