如何对Pandas Crosstab的行和列名称进行排序?
解决方案
核心思路
要让高数值集中在对角线上,需要同时将交叉表的行和列按指定顺序排列,确保行和列的类别一一对应,这样对角线位置就是原标签与预测标签一致的情况,数值自然最高。
具体实现代码
# 定义你需要的目标顺序列表 target_order = ['ar', 'cs', 'de', 'en', 'es', 'fr', 'hi', 'it', 'ja', 'ko', 'pl', 'pt', 'ru', 'tr', 'zh', 'be', 'gl', 'la', 'nn', 'sa', 'ur'] # 生成交叉表并按目标顺序重新索引行和列,缺失类别填充0 self.df_confusion = pd.crosstab(orig, pred).reindex(index=target_order, columns=target_order, fill_value=0)
关键说明
reindex方法可同时调整行(index参数)和列(columns参数)的顺序,完美对齐类别;fill_value=0用于处理目标列表中存在但原数据未出现的语言类别,避免空值;- 若之前仅调整列或仅调整行,会导致行和列的类别顺序不匹配,对角线无法对齐高数值,这就是之前尝试失败的原因。
内容的提问来源于stack exchange,提问作者Ondrej_D
相关产品推荐
相关产品推荐

