首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用PySpark测量Logistic回归的精度和召回率?

如何使用PySpark测量Logistic回归的精度和召回率?
EN

Stack Overflow用户
提问于 2019-04-15 02:33:37
回答 1查看 220关注 0票数 0

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

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

发布于 2019-10-03 10:04:37

我能够创建我自己的函数来这样做。它返回所有内容,甚至更多。我使用的是mllib包中的"MulticlassMetrics()“。由于它是一个多类,因此它会计算每个标签的度量,因此,您必须指定要检索的标签。

代码语言:javascript
复制
### 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

调用函数的步骤:

代码语言:javascript
复制
metricsList = udfModelEvaluator(predictionsData, "label")
metricsList
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55678673

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档