0

저는 파이프 라인을 사용하여 Spark에서 로지스틱 회귀를 훈련했습니다. 그것은 달리고 모형 진단을보고있다.Spark ML Logistic Regression in Python : F 임계 값을 최대화하도록 모델 임계 값을 설정하십시오.

내 모델 요약 (lr_summary = lrModel.stages [-1] .summary)을 만들었습니다. 그 후 나는 코드를 this webpage에서 거의 복사했습니다. 나는이 예제 파이썬 코드를 사용하여 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 =) : 형식 오류 : 'NoneType' 객체에 'getitem이 있습니다.'

어떤 조언이 있습니까?

정말 고마워요!

답변

1

이 문제는 재현 할 수 없지만 모델에 요약이 없을 수 있습니다 (이 경우 maxFMeasure = ... 행에 속성 오류가 예상 됨). 모델에 하나를 가지고 있는지 확인할 수 있습니다

lrModel.stages[-1].hasSummary 

또한이 코드는 훨씬 간단 할 수 있습니다 :

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

내 모델은 요약을 가지고있다. 위에서 언급 한 것처럼 'lr_summary.roc.show()'와 같이 해당 웹 페이지의 모든 코드 행을 성공적으로 구현합니다. 그러나 코드가 작동하지 않습니다. 그래서, 정말 고마워요! – user3245256