如何对Keras中model.predict函数的输出结果进行升序排序?
你遇到的问题核心是model.predict()的返回值结构和numpy排序的默认参数不匹配:model.predict()输出的是形状为(样本数量, 1)的二维数组,你之前的写法问题如下:
np.sort(model.predict(data)):numpy的sort方法默认沿最后一个轴(axis=-1)排序,相当于对每个样本内部的单个数值单独排序,完全不会触发全局的数值排序np.argsort(model.predict(data)):这个方法返回的是排序后的位置索引,不是实际的数值结果,自然不符合预期
方法1:降为一维数组后全局排序(最常用)
如果后续需要一维的排序结果,先调用flatten()把二维数组压平为一维,再执行排序:
pred = np.sort(model.predict(data).flatten())
方法2:保持二维结构排序
如果需要保留(样本数量, 1)的二维输出结构,直接指定排序轴为第0轴即可:
pred = np.sort(model.predict(data), axis=0)
效果验证
以你给出的样例输出数组为例,两种方法排序后的数值顺序均为升序:
[ 6.2621603, 14.3797455, 15.176579, 16.25976, 16.672417, 17.346558, 17.85637, 17.967245, 20.261982, 20.35404, 23.327494, 25.672846, 27.06339, 35.517834 ]
内容的提问来源于stack exchange,提问作者Hunter
相关产品推荐
相关产品推荐

