argmax:"返回沿轴的最大值的索引"。argmax "返回沿轴的最大值的索引"。
根据Jason Brownlee在《机器学习大师》一文中的说法。(https://machinelearningmastery.com/argmax-in-machine-learning
Argmax在机器学习中最常用于寻找具有最大预测概率的类。
在应用机器学习中,使用argmax最常见的情况是寻找一个数组的索引,从而获得最大的值。
如果我们考虑预测类成员的概率,argmax函数可以确定一个数组的索引位置,其中包含最大值,因此,预测概率最高。这对于机器学习显然是有用的。
使用argmax()
单一维度
import numpy as np
a = [[ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ]]
max_idx = np.argmax(a)
print(max_idx)
9
这个输出符合你的预期吗?
如果你记得argmax返回的是一个索引,而不是一个值,而且索引是从0开始的,我们看到我们被返回了索引9--这实际上是第十个位置--它保存着值'10',即数组中的最大值。
有意义吗?
多维度
import numpy as np
a = [[ 1, 2, 3, 4, 5 ], [ 6, 7, 8, 9, 10 ]]
max_idx = np.argmax(a)
print(max_idx)
9
现在我们有一个二维数组。我们没有传递一个轴参数,所以argmax的默认行为是将多维数组平铺成一个单维,并返回这个平铺后的数组中最大值的索引。
指定一个轴
首先,回顾一下,轴0指的是行,而轴1指的是列。
让我们看看当我们把axis=0传给argmax时会发生什么。
import numpy as np
a = [[ 1, 2, 3, 4, 5 ], [ 6, 7, 8, 9, 10 ]]
max_idx = np.argmax(a, axis=0)
print(max_idx)
array([1, 1, 1, 1, 1])
axis=0,对于数组中的每一列,Numpy都会报告这个最大值出现在哪一行。
即,竖着看,找到每一列最大值 ()
稍微有点反直觉,可以理解为指定哪个维度,哪个维度动
也就是说
第一次 比较的是 [0,1] [1,1] [2,1] [3,1] ...
第一次 比较的是 [0,2] [1,2] [2,2] [3,2] ...
import numpy as np
a = [[ 1, 2, 3, 4, 5 ], [ 6, 7, 8, 9, 10 ]]
max_idx = np.argmax(a, axis=0)
print(max_idx)
array([4,4])
axis=0,横着看,找到每一行的最大值
稍微有点反直觉,可以理解为指定哪个维度,哪个维度动
也就是说
第一次 比较的是 [1,1] [1,2] [1,3] [1,4] ...
第一次 比较的是 [2,1] [2,2] [2,3] [2,4] ...