訓練/測試切分
多數情況下,當你要執行一個預測模型時,需要先在資料的一個子集(「training」訓練集)上配適模型,然後再用其餘的資料(「testing」測試集)來檢驗模型的預測表現。
sdf_random_split() 提供了一種把資料框切分成訓練集與測試集的方法。其用法如下。
a_tibble %>%
sdf_random_split(training = 0.7, testing = 0.3)
關於用法有兩點需要注意。第一,如果切分比例的數值相加不等於 1,函式會自動縮放使其總和為 1。因此,如果你傳入 training = 0.35 與 testing = 0.15,實際得到的各集合大小會是你要求的兩倍。第二,你可以使用任意集合名稱,且可以把資料切成超過兩個集合。因此,以下寫法也有效。
a_tibble %>%
sdf_random_split(a = 0.1, b = 0.2, c = 0.3, d = 0.4)
回傳值是一個由 tibbles 組成的清單。你可以使用一般的清單索引運算子來存取各個元素。
partitioned$a
partitioned[["b"]]
本練習屬於課程
使用 R 的 sparklyr:Spark 入門
練習說明
已為你建立名為 spark_conn 的 Spark 連線。事先在 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
___