训练/测试集划分
在大多数情况下,当您运行预测模型时,需要先在数据的一个子集("训练"集)上拟合模型,然后再用其余数据("测试"集)来检验模型的预测效果。
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)
返回值是一个 tibble 列表。您可以使用常见的列表索引运算符访问各个元素。
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
___