2016-01-08 6 views
8

にアクセスし、私は私のパイプラインで最高のパラメータを選択するCrossValidatorを使用しています:SPARK、ML、チューニング、CrossValidator:NaiveBayesマルチクラス分類器を構築するためにメトリック

val cv = new CrossValidator() 
     .setEstimator(pipeline) 
     .setEstimatorParamMaps(paramGrid) 
     .setEvaluator(new MulticlassClassificationEvaluator) 
     .setNumFolds(10) 

val cvModel = cv.fit(trainingSet) 

パイプラインは通常の変圧器が含まれており、 Tokenizer、StopWordsRemover、HashingTF、IDF、そして最後にNaiveBayesの順番で評価します。

最高のモデルで計算されたメトリックにアクセスできますか?

理想的には、すべてのモデルのメトリックにアクセスして、パラメータの変更が分類の品質をどのように変えているかを確認したいと考えています。 しかし、現時点では、最高のモデルは十分です。

ちなみに、私はスパーク1.6.0

答えて

6

を使用していますがここで私はそれを行う方法は次のとおりです。pysparkで

val pipeline = new Pipeline() 
    .setStages(Array(tokenizer, stopWordsFilter, tf, idf, word2Vec, featureVectorAssembler, categoryIndexerModel, classifier, categoryReverseIndexer)) 

... 

val paramGrid = new ParamGridBuilder() 
    .addGrid(tf.numFeatures, Array(10, 100)) 
    .addGrid(idf.minDocFreq, Array(1, 10)) 
    .addGrid(word2Vec.vectorSize, Array(200, 300)) 
    .addGrid(classifier.maxDepth, Array(3, 5)) 
    .build() 

paramGrid.size // 16 entries 

... 

// Print the average metrics per ParamGrid entry 
val avgMetricsParamGrid = crossValidatorModel.avgMetrics 

// Combine with paramGrid to see how they affect the overall metrics 
val combined = paramGrid.zip(avgMetricsParamGrid) 

... 

val bestModel = crossValidatorModel.bestModel.asInstanceOf[PipelineModel] 

// Explain params for each stage 
val bestHashingTFNumFeatures = bestModel.stages(2).asInstanceOf[HashingTF].explainParams 
val bestIDFMinDocFrequency = bestModel.stages(3).asInstanceOf[IDFModel].explainParams 
val bestWord2VecVectorSize = bestModel.stages(4).asInstanceOf[Word2VecModel].explainParams 
val bestDecisionTreeDepth = bestModel.stages(7).asInstanceOf[DecisionTreeClassificationModel].explainParams 
+1

ジップ作品が、私は本当にしないでくださいそれはCrossValidatorがどのように機能するかについての内部知識を前提としているからです。それらは、メトリック配列がどのように構築されるかを変更することができ、次のバージョンとは別の順序でそれを作成することができます。 モデルのパラメータをメートル法で返したいと思います。私はまた、単に平均の代わりに要約統計量を見たいと思う。標準偏差のない平均はどれくらい有効ですか? – Turbo

0
cvModel.avgMetrics 

作品2.2.0

関連する問題