由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 一个基于文本的机器学习程序的问题2: 怎么映射概率结果回到标签?
进入Programming版参与讨论
1 (共1页)
n*********2
发帖数: 357
1
新手写了一个小的基于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***c
发帖数: 1
2
和split没关系,LabelEncoder.classes_ attribute holds the label for each
class.
E**********e
发帖数: 1736
3
np.argmax(pred, axis=-1) 即是文本类别。
这是很基本的classification。A,B,C....要先encode成1,2,3...

:新手写了一个小的基于TensowFlow的multiclass分类程序, 用于处理文本文件。先训
:练建模, 再预测。TensorFlow 版本是2.2.0; TensorFlow KERAS 版本2.3.0-tf
1 (共1页)
进入Programming版参与讨论