0

我想要爲使用Mllib的Java Spark項目實現交叉驗證k摺疊,以便我可以計算F分數。 (這裏是一個link到引擎收錄代碼)考慮一組標記點如何在具有邏輯迴歸的Java項目中使用Spark Mllib中的交叉驗證?

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

其中每個點被標記爲「0」或「1」的。因此它可能看起來像{[1,(2,3)],[0,(4,6)],....}。我設法將我的數據分成兩部分進行培訓和驗證。我創建了一個LogisticRegressionWithLBFGS對象,給我的模型

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

我認爲我做的模型之前,我需要做的交叉驗證,但我不能肯定它是如何實現的。從概念上講,我理解交叉驗證:它是一種方法,在k個分割的數據上訓練我的分類器,以便找到最佳模型。

對於F比分我做了以下

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();

但F分數總是分開的,我得到了標有「1」和「0」的值。

如何從Mllib使用交叉驗證?另外我怎樣才能正確計算f分數?

+0

F1:我想你想使用metrics.microF1Measure,這是類F-措施 –

+0

謝謝psoucy的加權平均。讓我看看。 –

回答