0

私はパイプラインを使ってSparkでロジスティック回帰を訓練しました。それは走りました、そして、私はモデル診断を見ています。Spark ML Logistic Regression in Python:F-Measureを最大にするようモデルしきい値を設定してください

モデルサマリー(lr_summary = lrModel.stages [-1]。サマリー)を作成しました。 その後、私はかなりコードをthis webpageからコピーしました。私はこの例のPythonコード使用してF値に基づいて最適なしきい値を決定しようとするまで、それはすべての作品:

# 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'

アドバイスはありますか?

ありがとうございました!

答えて

1

この問題は再現できませんが、モデルにはサマリーが含まれていない可能性があります(この場合、属性エラーはmaxFMeasure = ...行になると予想されます)。モデルは1を持っているかどうかをチェックすることができます:

lrModel.stages[-1].hasSummary 

はまた、あなたは、このコードがはるかに簡単にすることができます

bestThreshold = fMeasure.orderBy(fMeasure['F-Measure'].desc()).first().threshold 
+0

私のモデルは要約を持っています。上で述べたように、コードの前の行をすべてそのWebページに正常に実装します(例: 'lr_summary.roc.show()')。しかし、あなたのコードはDIDで動作します。だから、ありがとう! – user3245256

関連する問題