我想要爲使用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分數?
F1:我想你想使用metrics.microF1Measure,這是類F-措施 –
謝謝psoucy的加權平均。讓我看看。 –