一个基于文本的机器学习程序的问题2: 怎么映射概率结果回到标签

n
nowwhat2012
楼主 (未名空间)

新手写了一个小的基于TensowFlow的multiclass分类程序, 用于处理文本文件。先训
练建模, 再预测。TensorFlow 版本是2.2.0; TensorFlow KERAS 版本2.3.0-tf

训练的数据有9个类别/标签(labels, A, B, C, D, E, F, G, H, I)。

用于预测的代码是 predictions = model.predict([text_predict_vals])
这行代码的返回值是:
[[0.10891074 0.12031972 0.11711614 0.10049358 0.11124327 0.10936104 0.
11287923 0.1138045 0.10587183]] (模型的最后Dense层的activation是softmax;
模型现在还工作不好, 但是这个不是我要问的问题)

现在的问题是怎么把这些概率值映射回那九个标签(A-I): 比如0.10891074 到A, 0.
12031972到B, 等等。

找了半天,没有找到对应的API; model.predict_classes() 已经被deprecated了;
从建模的代码看,也不觉得第一个概率值就一定得映射回A, 因为数据在训练之前被
train_test_split()打乱过顺序,label也是sklearn.preprocessing LabelEncoder 编码处理过的。 所以,那个模型应当不知道原来的标签,只知道LabelEncoder编码过的
标签 (比如 [0. 0. 0. 0. 0. 1. 0. 0. 0.])。

放狗搜索发现这个问题被问了很多次, 那些回答也不工作了。

这个映射看起来是一个很基本的问题。这个映射有快速的解决办法吗?

谢谢。
a
async

和split没关系,LabelEncoder.classes_ attribute holds the label for each
class.
E
ExpressoLove


np.argmax(pred, axis=-1) 即是文本类别。

这是很基本的classification。A,B,C....要先encode成1,2,3...

【在 nowwhat2012(Judgment 02day)的大作中提到:】
:新手写了一个小的基于TensowFlow的multiclass分类程序, 用于处理文本文件。先训
:练建模, 再预测。TensorFlow 版本是2.2.0; TensorFlow KERAS 版本2.3.0-tf