H2O - savefig with" performance.plot()"鹏

时间:2018-04-07 22:35:31

标签: python matplotlib h2o

当我使用H2O 3.19时,我想在服务器端保存训练数据的性能matplotlib.pyplot图形(ROC),我该怎么办?

我们可以在plot()中看到h2o/model/metrics_base.py的源代码:

def plot(self, type="roc", server=False):
    """
    Produce the desired metric plot.

    :param type: the type of metric plot (currently, only ROC supported).
    :param server: if True, generate plot inline using matplotlib's "Agg" backend.
    :returns: None
    """
    # TODO: add more types (i.e. cutoffs)
    assert_is_type(type, "roc")
    # check for matplotlib. exit if absent.
    try:
        imp.find_module('matplotlib')
        import matplotlib
        if server: matplotlib.use('Agg', warn=False)
        import matplotlib.pyplot as plt
    except ImportError:
        print("matplotlib is required for this function!")
        return

    if type == "roc":
        plt.xlabel('False Positive Rate (FPR)')
        plt.ylabel('True Positive Rate (TPR)')
        plt.title('ROC Curve')
        plt.text(0.5, 0.5, r'AUC={0:.4f}'.format(self._metric_json["AUC"]))
        plt.plot(self.fprs, self.tprs, 'b--')
        plt.axis([0, 1, 0, 1])
        if not server: plt.show()

plot(type="roc", server=False)只检查matplotlib.pyplot的存在并且不返回plt对象,因此我无法调用plt.savefig()。我该怎么办?

1 个答案:

答案 0 :(得分:0)

正如@Goyo的评论所说,您需要导入matplotlib.pyplot方法中的plot(),并且savefig可以plt。似乎没有返回它仍然是可能的,所以我猜信息是在“内部”和“外部”之间共享的,即它们是以Java方式说的“静态”。

最后我必须修改源代码,强制它在server is True时返回plot(type="roc", server=True),然后从外部调用None。我认为它没有影响,因为在更改之前,默认情况下会返回if not server: plt.show() else: return plt # return to use plt.savefig

ConstraintValidator