開始使用免費開始

訓練/測試切分

多數情況下,當你要執行一個預測模型時,需要先在資料的一個子集(「training」訓練集)上配適模型,然後再用其餘的資料(「testing」測試集)來檢驗模型的預測表現。

sdf_random_split() 提供了一種把資料框切分成訓練集與測試集的方法。其用法如下。

a_tibble %>%
  sdf_random_split(training = 0.7, testing = 0.3)

關於用法有兩點需要注意。第一,如果切分比例的數值相加不等於 1,函式會自動縮放使其總和為 1。因此,如果你傳入 training = 0.35testing = 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 的集合。
  • 取得訓練 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
___
編輯並執行程式碼