当我使用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()
。我该怎么办?
答案 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