【发布时间】:2015-04-26 19:55:06
【问题描述】:
出于测试目的,我需要从混淆矩阵中创建虚假的真实值/预测值。
我的混淆矩阵使用以下方法存储在 Pandas DataFrame 中:
labels = ['N', 'L', 'R', 'A', 'P', 'V']
df = pd.DataFrame([
[1971, 19, 1, 8, 0, 1],
[16, 1940, 2, 23, 9, 10],
[8, 3, 181, 87, 0, 11],
[2, 25, 159, 1786, 16, 12],
[0, 24, 4, 8, 1958, 6],
[11, 12, 29, 11, 11, 1926] ], columns=labels, index=labels)
df.index.name = 'Actual'
df.columns.name = 'Predicted'
我假设索引是实际值,列是预测值。
这个混淆矩阵看起来像:
Predicted N L R A P V
Actual
N 1971 19 1 8 0 1
L 16 1940 2 23 9 10
R 8 3 181 87 0 11
A 2 25 159 1786 16 12
P 0 24 4 8 1958 6
V 11 12 29 11 11 1926
我正在寻找一种创建 2 个 Numpy 数组的有效方法:y_true 和 y_predict,它们将产生这样一个混淆矩阵。
我的第一个想法是首先创建大小合适的 Numpy 数组。
所以我做到了:
N_all = df.sum().sum()
y_true = np.empty(N_all)
y_pred = np.empty(N_all)
但我不知道如何有效地填充这 2 个 Numpy 数组
同样的代码也应该适用于二进制混淆矩阵,例如:
labels = [False, True]
df = pd.DataFrame([
[5, 3],
[2, 7]], columns=labels, index=labels)
df.index.name = 'Actual'
df.columns.name = 'Predicted'
这个二进制混淆矩阵看起来像:
Predicted False True
Actual
False 5 3
True 2 7
【问题讨论】:
-
那么,您有矩阵作为输入,需要同时生成向量 y_true 和 y_predicted?具有相同标签的值在两个向量中应该具有相同的值。具有不同标签的值应作为其预测/真实值推送到每个向量。我想我错过了这个问题。
标签: python numpy pandas confusion-matrix