Tensorflow:制作ROC曲线和混淆矩阵

时间:2018-04-13 12:34:35

标签: python tensorflow tensorboard tensor

背景
我想要掌握使用张量流的方法。我目前对训练师和测试人员感到很沮丧,虽然python对我来说根本不是问题,我无法弄清楚如何使用张量流绘制混淆矩阵和ROC曲线来进行测试。我想这可以很容易地完成。

测试代码
我更喜欢给出一个可重复的例子,但我无法弄清楚我应该如何将模型变得如此简单以至于我可以把它放在这里。因此,如果有什么不清楚请告诉我

 def test_neural_network(self, test_data, model_name, model_folder):
        x = tf.placeholder('float')
        y = tf.placeholder('float')
        prediction = self.__convolutional_neural_network(x)
        with tf.Session() as sess:
            sess.run(tf.initialize_all_variables())
            saver = tf.train.Saver()

            for epoch in range(self.hm_epochs):
                try:
                    saver.restore(sess,  model_folder + model_name + '.ckpt')
                except Exception as e:
                    print(str(e))

            correct = tf.equal(tf.argmax(prediction, 1), tf.argmax(y, 1))
            accuracy = tf.reduce_mean(tf.cast(correct, 'float'))

            test_data = np.load(test_data)
            features, labels = [],[]
            for item in test_data:
                data = item[0]
                id = item[1]
                features.append(data)
                labels.append(id)
            test_x = np.array(features)
            test_y = np.array(labels)
            print(test_x)
            print(test_y)
            print('Accuracy:', accuracy.eval({x: test_x, y: test_y}))

问题
有没有办法在混淆矩阵和ROC曲线中可视化这个测试?请注意,我熟悉Python,但只是表面上理解张量流,所以我们将不胜感激。

1 个答案:

答案 0 :(得分:1)

我没有足够的代表发表评论,所以我会将其作为答案发布。我使用Scikit-Learn的Confusion Matrix功能为我自己的神经网络生成错误矩阵,请参阅:Confusion Matrix