Python多标签多分类任务如何将预测值与真实值并排保存到文件
多标签分类预测结果与真实值并排输出实现方案
问题原因
原有代码连续两次向同一文件写入DataFrame,后写入的内容会直接覆盖已有文件内容,因此只能看到最后一个数组的输出结果。
实现方案
方案1:完全匹配预期的纯文本格式输出
如果需要完全贴合你给出的带分隔符、对齐格式的输出,直接操作文件写入即可,代码如下:
import numpy as np # 此处y_test、y_pred为你的真实值、预测值二维数组,需保证两者形状一致 n_labels = y_test.shape[1] save_path = "j:\\compare.txt" with open(save_path, 'w', encoding='utf-8') as f: # 写入表头 left_header = ''.join([f"{idx:^5}" for idx in range(n_labels)]) right_header = ''.join([f"{idx:^5}" for idx in range(n_labels)]) f.write(f"{left_header} | {right_header}\n") # 写入分割线 f.write("-" * (len(left_header) + 5 + len(right_header)) + "\n") # 逐行写入对比数据 for test_line, pred_line in zip(y_test, y_pred): left_content = ''.join([f"{val:^5}" for val in test_line]) right_content = ''.join([f"{val:^5}" for val in pred_line]) f.write(f"{left_content} | {right_content}\n")
方案2:CSV格式输出(适合后续数据处理)
如果需要用Excel、pandas等工具后续分析对比结果,可以用横向拼接DataFrame的方式生成结构化的csv文件:
import pandas as pd # 给真实值、预测值列添加区分前缀 df_test = pd.DataFrame(y_test).add_prefix('test_label_') df_pred = pd.DataFrame(y_pred).add_prefix('pred_label_') # 横向拼接两个表 compare_df = pd.concat([df_test, df_pred], axis=1) # 写入csv,不保存行索引 compare_df.to_csv("j:\\compare.csv", index=False)
内容的提问来源于stack exchange,提问作者asmgx
相关产品推荐
相关产品推荐

