下述列表中有10个分类报告,怎么得到平均的分类报告值并且按照\n的形式求得最终的分类报告python[' precision recall f1-score support\n\n 0 0.90 0.91 0.91 10762\n 1 0.85 0.91 0.88 9339\n 2 0.84 0.41 0.55 1628\n\n micro avg 0.88 0.88 0.88 21729\n macro avg 0.86 0.75 0.78 21729\nweighted avg 0.87 0.88 0.87 21729\n samples avg 0.88 0.88 0.88 21729\n', ' precision recall f1-score support\n\n 0 0.91 0.91 0.91 10762\n 1 0.85 0.92 0.89 9339\n 2 0.86 0.45 0.59 1628\n\n micro avg 0.88 0.88 0.88 21729\n macro avg 0.88 0.76 0.80 21729\nweighted avg 0.88 0.88 0.88 21729\n samples avg 0.88 0.88 0.88 21729\n']
时间: 2024-02-10 16:07:24 浏览: 150
可以将每个分类报告转换为 Pandas DataFrame,然后使用 Pandas 库计算平均分类报告,最后将结果转换回字符串格式并按照 "\n" 分隔。具体代码如下:
```python
import pandas as pd
# 定义分类报告列表
reports = [' precision recall f1-score support\n\n 0 0.90 0.91 0.91 10762\n 1 0.85 0.91 0.88 9339\n 2 0.84 0.41 0.55 1628\n\n micro avg 0.88 0.88 0.88 21729\n macro avg 0.86 0.75 0.78 21729\nweighted avg 0.87 0.88 0.87 21729\n samples avg 0.88 0.88 0.88 21729\n', ' precision recall f1-score support\n\n 0 0.91 0.91 0.91 10762\n 1 0.85 0.92 0.89 9339\n 2 0.86 0.45 0.59 1628\n\n micro avg 0.88 0.88 0.88 21729\n macro avg 0.88 0.76 0.80 21729\nweighted avg 0.88 0.88 0.88 21729\n samples avg 0.88 0.88 0.88 21729\n']
# 定义空列表存储 Pandas DataFrame
df_list = []
# 遍历每个分类报告,转换为 Pandas DataFrame 并存储到列表中
for report in reports:
lines = report.strip().split('\n')
header = lines[0].split()
data = [[float(x) if x.replace('.', '', 1).isdigit() else x for x in line.split()] for line in lines[2:]]
df = pd.DataFrame(data, columns=header)
df_list.append(df)
# 计算平均分类报告
df_mean = pd.concat(df_list).groupby(level=0).mean().reset_index()
# 将结果转换为字符串并按照 "\n" 分隔
report_mean = df_mean.to_string(index=False)
report_mean = '\n'.join(['', report_mean])
# 输出结果
print(report_mean)
```
需要注意的是,上面的代码假设每个分类报告中的分类标签数量和顺序是相同的。如果分类标签数量或顺序不同,需要进行相应修改。
阅读全文