我使用管道在Spark中训练了逻辑回归。它跑了,我正在看模型诊断。
我创建了我的模型摘要(lr_summary = lrModel.stages [-1] .summary)。 之后我几乎复制了this webpage的代码。这一切都有效,直到我尝试使用此示例Python代码确定基于F-measure的最佳阈值:
# Set the model threshold to maximize F-Measure
fMeasure = lr_summary.fMeasureByThreshold
maxFMeasure = fMeasure.groupBy().max('F-Measure').select('max(F-Measure)').head()
bestThreshold = fMeasure.where(fMeasure['F-Measure'] == maxFMeasure['max(F-Measure)']).select('threshold').head()['threshold']
lr.setThreshold(bestThreshold)
不幸的是,我在第3行收到错误(bestThreshold =): TypeError:' NoneType'对象没有属性' getitem '
有什么建议吗?
非常感谢你!
答案 0 :(得分:1)
我无法重现此问题,但模型可能没有摘要(在这种情况下,我会期望maxFMeasure = ...
行中的属性错误)。您可以检查模型是否有一个:
lrModel.stages[-1].hasSummary
此外,您可以使此代码更简单:
bestThreshold = fMeasure.orderBy(fMeasure['F-Measure'].desc()).first().threshold