【问题标题】:Saving an Matlabplot as an MLFlow artifact将 Matlab 图保存为 MLFlow 工件
【发布时间】:2021-03-16 15:36:17
【问题描述】:

我正在使用 DataBricks 和 Spark 7.4ML,

以下代码成功记录了参数和指标,我可以在 MLFLOW gui 中看到 ROCcurve.png(只是模型下方树中的项目)。但实际情节是空白的。为什么?

with mlflow.start_run(run_name="logistic-regression") as run:
  pipeModel = pipe.fit(trainDF)
  mlflow.spark.log_model(pipeModel, "model")
  predTest = pipeModel.transform(testDF)
  predTrain = pipeModel.transform(trainDF)
  evaluator=BinaryClassificationEvaluator(labelCol="arrivedLate")
  trainROC = evaluator.evaluate(predTrain)
  testROC = evaluator.evaluate(predTest)
  print(f"Train ROC: {trainROC}")
  print(f"Test ROC: {testROC}")
  mlflow.log_param("Dataset Name", "Flights " + datasetName)
  mlflow.log_metric(key="Train ROC", value=trainROC)
  mlflow.log_metric(key="Test ROC", value=testROC)

  lrModel = pipeModel.stages[3]
  trainingSummary = lrModel.summary
  roc = trainingSummary.roc.toPandas()
  plt.plot(roc['FPR'],roc['TPR'])
  plt.ylabel('False Positive Rate')
  plt.xlabel('True Positive Rate')
  plt.title('ROC Curve')
  plt.show()
  plt.savefig("ROCcurve.png")
  mlflow.log_artifact("ROCcurve.png")
  plt.close()
  
  display(predTest.select(stringCols + ["arrivedLate", "prediction"]))

笔记本显示的内容:

MLFlow 显示的内容:

【问题讨论】:

    标签: apache-spark matplotlib pyspark databricks mlflow


    【解决方案1】:

    plt.show() 放在plt.savefig() 之后 - plt.show() 将删除您的绘图,因为它已经显示出来了。

    【讨论】:

    • sigh 经过 52 年的编程,总有一些事情让我看起来像个完全的新手。
    • 我的代码似乎给出了训练集的 ROC。我如何为测试集获取它?
    • @Dr.YSG 无法从代码中分辨出来...如果您可以打开另一个问题并提供所有必要的代码,那就太好了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-30
    • 1970-01-01
    • 1970-01-01
    • 2013-12-09
    • 2013-10-05
    • 1970-01-01
    相关资源
    最近更新 更多