私はcolors
とexcluded_colors
の2つのデータを持っています。トレーニングセットデータからアイテムを除外します
colors
すべての色が含まれています excluded_colors
は私のtrainingsetから除外したいいくつかの色が含まれています。
データをトレーニングとテストのセットに分割し、excluded_colors
の色がトレーニングセットに含まれていないが、テストセットに存在することを確認しています。
excluded_colors
の色の上に行って、完全に無視されていることを実現しています。しかし、この
var colors = spark.sql("""
select colors.*
from colors
LEFT JOIN excluded_colors
ON excluded_colors.color_id = colors.color_id
where excluded_colors.color_id IS NULL
"""
)
val trainer: (Int => Int) = (arg:Int) => 0
val sqlTrainer = udf(trainer)
val tester: (Int => Int) = (arg:Int) => 1
val sqlTester = udf(tester)
val rsplit = colors.randomSplit(Array(0.7, 0.3))
val train_colors = splits(0).select("color_id").withColumn("test",sqlTrainer(col("color_id")))
val test_colors = splits(1).select("color_id").withColumn("test",sqlTester(col("color_id")))
をしました。彼らは私のテストセットでさえありません。またexcluded_colors
の色は訓練ではありませんが、テスト中に存在していることを保証しながら、私は70/30でデータを分割するにはどうすればよい
質問 。
あなたの例では 'x'とは何ですか? – Anthony
'x'はあなたの質問で' 0.7'や '0.3'のようなサンプリング確率です。そのアイデアは、質問で尋ねられた70/30の比率を維持するために、より小さなデータセットから大きなサンプルを必要とするということです。 – maasg
私は理解していると思います。私はあなたの数学をコードに変換し、それが成功しているかどうかを確認します。私はそれに応じて質問を更新します。ありがとう – Anthony