我创建了一个自动编码器模型,并使用图像序列数据集对其进行训练。测试集的最终结果是重建的图像。如何绘制 ROC 曲线并计算 AUC?
编辑: 这是我的代码:
model = AutoEncoder()
model.compile(loss='mse', optimizer='adam')
model.fit(dm, dm,
batch_size=batchSize,
epochs=epochs,
shuffle=False,
callbacks=callbacks_list, verbose=1
)
# load testset
....
reconstructed_sequences = model.predict(sequences,batch_size=1)
sequences_reconstruction_cost = np.array([np.linalg.norm(np.subtract(sequences[i],reconstructed_sequences[i])) for i in range(0,sz)])
sa = (sequences_reconstruction_cost - np.min(sequences_reconstruction_cost)) / np.max(sequences_reconstruction_cost)
sr = 1.0 - sa
其中SR是包含我的检测分数的最终结果。
您需要运行从最小(sr(到最大(sr(的一系列阈值,并且对于每个值计数四倍(真负(TN(,真阳性(TP(,假阴性(FN(,假阳性(FP((以获得许多列联表。然后计算每个阈值的灵敏度 = TP/(TP + FN( 和特异性 = TN/(FP + TN(。受试者工作特征 (ROC( 曲线是 1 特异性(X 轴(与灵敏度(Y 轴(的曲线。用python编码应该不会太难。