如何查看One Hot Encoding编码后各位置对应的原始类别名称?
获取标签与one-hot索引映射的方法
你使用的LabelEncoder实例在执行fit操作后,会自动将标签按排序规则生成对应索引,所有映射关系都存储在classes_属性中。
第一步:先修正你的编码逻辑(避免映射不一致)
你当前的代码存在问题:测试集不应该重新调用fit_transform,否则会重置LabelEncoder学习到的映射关系,导致训练集和测试集的索引对应规则不一致,正确代码如下:
encoder = LabelEncoder() # 仅在训练集上执行fit,学习全量标签的映射规则 y_train = encoder.fit_transform(train['Label'].values) y_train = to_categorical(y_train) # 测试集直接用训练好的encoder做转换,不要重新fit y_test = encoder.transform(test['Label'].values) y_test = to_categorical(y_test)
第二步:生成标签与索引的映射字典
直接遍历encoder.classes_即可生成你需要的映射关系,classes_数组的下标就是one-hot向量对应位置的索引:
label_to_index = {label: idx for idx, label in enumerate(encoder.classes_)} # 打印映射关系 print(label_to_index)
如果要反向通过索引查标签,直接取encoder.classes_[索引值]即可,比如你示例中y_train[0]输出[0. 1. 0. 0.],对应标签就是encoder.classes_[1]。
内容的提问来源于stack exchange,提问作者Amir
相关产品推荐
相关产品推荐

