解决Python Pandas ValueError: Shape of passed values is (80, 80), indices imply (171, 171) 错误
Traceback(most\ recent\ call\ last):\n File\ "/mnt/disk1/lh/code/InternImage/classification/main.py",\ line\ 717,\ in\ <module>
main(config)
File\ "/mnt/disk1/lh/code/InternImage/classification/main.py",\ line\ 282,\ in\ main
acc1,\ acc5,\ loss\ =\ validate(config,\ data_loader_val,\ model,\ dataset_val=\dataset_val)
File\ "/home/lh/anaconda3/envs/internimage/lib/python3.9/site-packages/torch/autograd/grad_mode.py",\ line\ 27,\ in\ decorate_context
return\ func(*args,\ **kwargs)
File\ "/mnt/disk1/lh/code/InternImage/classification/main.py",\ line\ 602,\ in\ validate
cm_df\ =\ pd.DataFrame(cm,\ index=\classes,\ columns=\classes)
File\ "/home/lh/anaconda3/envs/internimage/lib/python3.9/site-packages/pandas/core/frame.py",\ line\ 758,\ in\ init
mgr\ =\ ndarray_to_mgr(
File\ "/home/lh/anaconda3/envs/internimage/lib/python3.9/site-packages/pandas/core/internals/construction.py",\ line\ 337,\ in\ ndarray_to_mgr
_check_values_indices_shape_match(values,\ index,\ columns)
File\ "/home/lh/anaconda3/envs/internimage/lib/python3.9/site-packages/pandas/core/internals/construction.py",\ line\ 408,\ in\ _check_values_indices_shape_match
raise\ ValueError(f"Shape\ of\ passed\ values\ is\ {passed},\ indices\ imply\ {implied}")
ValueError:\ Shape\ of\ passed\ values\ is\ (80,\ 80),\ indices\ imply\ (171,\ 171)
怎么填充空白的索引,因为部分分类类别没有测试图片内容:要解决这个问题,你可以使用reindex函数来填充空白的索引。以下是一个示例代码,演示如何使用reindex函数来解决这个问题:
import\ pandas\ as\ pd
#\ 假设cm是你的混淆矩阵
cm\ =\ [[10,\ 20,\ 30],
[40,\ 50,\ 60],
[70,\ 80,\ 90]]
#\ 假设classes是你的分类类别
classes\ =\ ['A',\ 'B',\ 'C']
#\ 创建一个空的DataFrame,并使用classes作为索引和列
cm_df\ =\ pd.DataFrame\(index\=\classes,\ columns\=\classes\)
#\ 使用reindex函数填充cm_df
cm_df\ =\ cm_df.reindex\(index\=\classes,\ columns\=\classes\)
#\ 将混淆矩阵的值填充到cm_df中
for\ i\ in\ range\(len\(classes\)\):
for\ j\ in\ range\(len\(classes\)\):
cm_df.iloc[i,\ j]\ =\ cm[i][j]
#\ 打印填充后的混淆矩阵DataFrame
print\(cm_df\)
这样,你就可以使用reindex函数来填充空白的索引,使得混淆矩阵的形状与索引相匹配。在上面的示例中,cm是混淆矩阵,classes是分类类别,cm_df是填充后的混淆矩阵DataFrame。你可以根据自己的需求修改代码来适应你的情况。
原文地址: https://www.cveoy.top/t/topic/qmUa 著作权归作者所有。请勿转载和采集!