Python开发很好,但性能在中期成为了瓶颈。Numba据说性能极佳,因此在试着一个最简单的KNN算法时,原作是《机器学习实战》,加上了Numba的JIT装饰器几乎是各种报错。
例子代码是这样写的,在函数上加JIT是有问题的:
maxCount = 0
for key, value in classCount.items():
if value > maxCount:
maxCount = value
maxIndex = key
return maxIndex
但稍微有一点点经验的Python程序员也可能会写成这个样子
maxIndex = max(classCount.items(), key=lambda x: x[0])[0]
这样写有问题吗?没有,但Numba的JIT一样报错。
3.解决第一个问题
那么1到底是什么问题,写过静态语言的程序员应该知道,即使不用声明变量类型,至少也要声明一下变量吧,因此,例子代码明显没有声明maxIndex,于是我猜着加上了声明,初始化为None,像这样
maxCount = 0
maxIndex = None
for key, value in classCount.items():
if value > maxCount:
maxCount = value
maxIndex = key