学習用/テスト用データの分割
予測モデルを実行する際は、通常、データの一部(「学習用」セット)でモデルを学習させ、残りのデータ(「テスト用」セット)でモデルの予測を検証します。
sdf_random_split() を使うと、データフレームを学習用セットとテスト用セットに分割できます。基本的な使い方は次のとおりです。
a_tibble %>%
sdf_random_split(training = 0.7, testing = 0.3)
使用時に注意すべき点が2つあります。1つ目は、分割値の合計が1にならない場合、合計が1になるよう自動的にスケーリングされる点です。たとえば training = 0.35、testing = 0.15 を指定すると、実際には2倍の割合が適用されます。2つ目は、セット名は自由に設定でき、3つ以上に分割することも可能な点です。たとえば次のような書き方も有効です。
a_tibble %>%
sdf_random_split(a = 0.1, b = 0.2, c = 0.3, d = 0.4)
戻り値は tibble のリストです。各要素へのアクセスには、通常のリストインデックス演算子を使います。
partitioned$a
partitioned[["b"]]
この演習はコースの一部です
sparklyr を使った Spark 入門(R)
演習の手順
Spark の接続は spark_conn として作成済みです。Spark に格納されたトラックのメタデータに紐付けられた tibble は track_metadata_tbl として定義済みです。
sdf_random_split()を使ってトラックのメタデータを分割しましょう。- 70% を
trainingという名前のセットに割り当ててください。 - 30% を
testingという名前のセットに割り当ててください。
- 70% を
- 学習用 tibble の
sdf_dim()(次元数)を取得しましょう。 - テスト用 tibble の次元数を取得しましょう。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# track_metadata_tbl has been pre-defined
track_metadata_tbl
partitioned <- track_metadata_tbl %>%
# Partition into training and testing sets
___
# Get the dimensions of the training set
___
# Get the dimensions of the testing set
___