【问题标题】:How can I measure Precision and Recall on Logistic Regression with PySpark?如何使用 PySpark 测量逻辑回归的精度和召回率?
【发布时间】:2019-04-14 18:33:36
【问题描述】:

我正在通过数据块在 PySpark 上使用逻辑回归模型,但我无法获得我的精度和召回率。一切正常,我可以获得我的 ROC,但没有用于 Precision 和 Recall 的属性或库

lrModel = LogisticRegression()

predictions = bestModel.transform(testData)

# Instantiate metrics object
results = predictions.select(['probability', 'label'])
results_collect = results.collect()
results_list = [(float(i[0][0]), 1.0-float(i[1])) for i in results_collect]
scoreAndLabels = sc.parallelize(results_list)

metrics = MulticlassMetrics(scoreAndLabels)

# Overall statistics
precision = metrics.precision()
recall = metrics.recall()
f1Score = metrics.fMeasure()
print("Summary Stats")
print("Precision = %s" % precision)
print("Recall = %s" % recall)
print("F1 Score = %s" % f1Score)

>>>Summary Stats
>>>Precision = 0.0
>>>Recall = 0.0
>>>F1 Score = 0.0

【问题讨论】:

    标签: pyspark databricks confusion-matrix azure-databricks


    【解决方案1】:

    我能够创建自己的函数来做到这一点。它返回一切以及更多。我正在使用 mllib 包中的“MulticlassMetrics()”。由于它是一个多类,它会计算每个标签的指标,因此您必须指定要检索的标签。

    ### Model Evaluator User Defined Functions
    def udfModelEvaluator(dfPredictions, labelColumn='label'):
    
        colSelect = dfPredictions.select(
          [F.col('prediction').cast(DoubleType())
           ,F.col(labelColumn).cast(DoubleType()).alias('label')])
    
        metrics = MulticlassMetrics(colSelect.rdd)
    
        mAccuracy = metrics.accuracy
        mPrecision = metrics.precision(1)
        mRecall = metrics.recall(1)
        mF1 = metrics.fMeasure(1.0, 1.0)
    
        mMatrix = metrics.confusionMatrix().toArray().astype(int)    
    
        mTP = metrics.confusionMatrix().toArray()[1][1]
        mTN = metrics.confusionMatrix().toArray()[0][0]
        mFP = metrics.confusionMatrix().toArray()[0][1]
        mFN = metrics.confusionMatrix().toArray()[1][0]
    
        mResults = [mAccuracy, mPrecision, mRecall, mF1, mMatrix, mTP, mTN, mFP, mFN, "Return [[0]=Accuracy, [1]=Precision, [2]=Recall, [3]=F1, [4]=ConfusionMatrix, [5]=TP, [6]=TN, [7]=FP, [8]=FN]"]
    
        return mResults
    

    调用函数:

    metricsList = udfModelEvaluator(predictionsData, "label")
    metricsList
    

    【讨论】:

      猜你喜欢
      • 2019-11-27
      • 2020-06-22
      • 2023-04-07
      • 2014-11-20
      • 2012-11-26
      • 2014-02-20
      • 1970-01-01
      • 2015-04-17
      • 2018-02-18
      相关资源
      最近更新 更多