Я использую Spark (1.5.2) DataFrames и пытаюсь получить стратифицированный набор данных. Мои данные были нацелены на бинарную классификацию и существует только два значения для class
, 1 и 0.sampleBy возвращает очень искаженные результаты
val Array(trainingData, testData) = df.randomSplit(Array(0.7, 0.3))
val fractions: Map[Int, Double] = Map(1 -> 0.5, 0 -> 0.5)
val trainingData3 = trainingData.stat.sampleBy("class", fractions, new Random().nextLong)
println("Training True Class = " + trainingData3.where("class=1").count())
println("Training False Class = " + trainingData3.where("class=0").count())
На консоли я получаю выход, показывая значительно неправильное соотношение 1 класса 0:
Training True Class = 799845
Training False Class = 32797260
Возможно, вы ищете http://stackoverflow.com/a/32241887/3415409 – eliasah