를 사용하여 교육 NaiveBayes 모델에 대한 CrossValidator를 사용하여 정밀/리콜을 얻는 방법 : 당신이 볼 수 있듯이나는이 같은 파이프 라인을 Supossed 불꽃
val tokenizer = new Tokenizer().setInputCol("tweet").setOutputCol("words")
val hashingTF = new HashingTF().setNumFeatures(1000).setInputCol("words").setOutputCol("features")
val idf = new IDF().setInputCol("features").setOutputCol("idffeatures")
val nb = new org.apache.spark.ml.classification.NaiveBayes()
val pipeline = new Pipeline().setStages(Array(tokenizer, hashingTF, idf, nb))
val paramGrid = new ParamGridBuilder().addGrid(hashingTF.numFeatures, Array(10, 100, 1000)).addGrid(nb.smoothing, Array(0.01, 0.1, 1)).build()
val cv = new CrossValidator().setEstimator(pipeline).setEvaluator(new BinaryClassificationEvaluator()).setEstimatorParamMaps(paramGrid).setNumFolds(10)
val cvModel = cv.fit(df)
가 나는 MultiClassClassificationEvaluator를 사용하여 CrossValidator을 정의했다. 테스트 프로세스 중에 Precision/Recall 같은 메트릭을 얻는 예제가 많이 있지만 테스트 목적으로 다른 데이터 세트를 사용할 때 이러한 metris를 얻습니다 (예 : documentation 참조).
CrossValidator는 폴드를 만들고 하나의 폴드가 테스트 용도로 사용되며 CrossValidator가 가장 좋은 모델을 선택합니다. 내 질문은, 훈련 과정에서 Precision/Recall 측정 항목을 얻는 것이 가능하다는 것입니다.
@ zero233 내 스파크에서 avgMetrics 및 기타 특성을 찾지 못하는 것 같습니다. cvModel.avgMetrics -------------------------------------------- ------------------------------- AttributeError 추적 (가장 최근의 마지막 통화) in () ----> 1 cvModel.avgMetrics AttributeError : 'CrossValidatorModel'객체에 'avgMetrics'속성이 없습니다. –
Baktaawar