我目前正在使用pandas.crosstab来生成我的分类器测试后的混淆矩阵。不幸的是,有时我的分类器失败了,并将每个信号分类为一个标签(而不是多个标签)。在这种情况下,pandas.crosstab生成单个向量(或非平方矩阵),而不是平方矩阵。
举个例子,我的基本真理是
true_data = pandas.Series([1, 1, 2, 2, 3, 3, 4, 4, 5, 5])我的预测数据是
pred_data = pandas.Series([3, 3, 2, 3, 2, 1, 1, 3, 4, 1])应用pandas.crosstab(true_data, pred_data, dropna=False)给出
col_0 1 2 3 4
row_0
1 0 0 2 0
2 0 1 1 0
3 1 1 0 0
4 1 0 1 0
5 1 0 0 1有没有办法
col_0 1 2 3 4 5
row_0
1 0 0 2 0 0
2 0 1 1 0 0
3 1 1 0 0 0
4 1 0 1 0 0
5 1 0 0 1 0相反,即保留矩阵正方形并用0填充缺失的标签。
发布于 2022-07-06 14:47:16
在计算crosstab之后,您可以沿着索引和列轴对数据进行reindex。
i = df.index.union(df.columns)
df.reindex(index=i, columns=i, fill_value=0) 1 2 3 4 5
1 0 0 2 0 0
2 0 1 1 0 0
3 1 1 0 0 0
4 1 0 1 0 0
5 1 0 0 1 0https://stackoverflow.com/questions/72885273
复制相似问题