0

Ich möchte die a-Kreuz-Validierung K-Falte für meine Java-Spark-Projekt implementieren, die Mllib verwendet, so dass ich den F-Score berechnen kann. (Hier ist ein link zu einer pastebin Code) Betrachten wir einen Satz von markierten PunktenWie funktioniert die Cross Validation in Sparks Mllib in einem Java-Projekt mit logistischer Regression?

JavaRDD<LabledPoint> allData= ...// some labled points 

wobei jeder Punkt markiert ist „0“ oder „1“. Daher könnte es wie {[1, (2,3)], [0, (4,6)] ... aussehen. Ich habe es geschafft, meine Daten in zwei Teile zu teilen und zu verifizieren. Ich habe ein LogisticRegressionWithLBFGS Objekt, das mir das Modell, dass

LogisticRegressionModel model = logisticRegression.run(trainingData.rdd()) 

Ich gehe davon gibt, bevor ich das Modell muß ich Kreuzvalidierung tun, aber ich bin mir nicht ganz sicher, wie es umgesetzt wird. Konzeptionell habe ich die Kreuzvalidierung verstanden: Es ist eine Methode, die meinen Klassifikator auf die k Teile geteilten Daten trainiert, um das beste Modell zu finden.

Für die F-Score habe ich folgendes

JavaRDD<Tuple2<Object, Object>> predict = valdidationData.map(new Function<LabeledPoint, Tuple2<Object, Object>>() { 
           public Tuple2<Object, Object> call(LabeledPoint point) { 
            Double prediction = model.predict(point.features()); 
            return new Tuple2<Object, Object>(prediction, point.label()); 
           } 
          }); 

BinaryClassificationMetrics metrics = new BinaryClassificationMetrics(predict.rdd()); 

JavaRDD<Tuple2<Object, Object>> f1Score =metrics.fMeasureByThreshold().toJavaRDD();

Aber die F Score werden immer getrennt ich einen Wert für die Bezeichnung „1“ und „0“ erhalten.

Wie kann ich die Kreuzvalidierung von Mllib verwenden? Wie kann ich den f-Score korrekt berechnen?

+0

F1: Ich glaube, Sie wollen metrics.microF1Measure verwenden, die der gewichtete Durchschnitt der Klasse F-Maß –

+0

Danke ist, psoucy. Lass mich auschecken. –

Antwort

Verwandte Themen