开始使用免费开始使用

按组效应划分数据

在运行任何模型之前,您需要将数据划分为训练集和测试集。这个数据集有一个特殊之处,因此您不能直接调用 sdf_random_split()。问题在于:同一位艺术家的所有曲目应当出现在同一个集合中。如果将某位艺术家的曲目用于训练模型,而同一艺术家的其他曲目又出现在测试集中,模型的准确率会被高估。

解决方法是只对艺术家 ID 进行划分,然后将这些已划分的 ID 与原始数据集做内连接。请注意,用于划分时,artist_idartist_name 更可靠,因为有些艺术家在不同曲目中会使用名字的不同写法。例如,Duke Ellington 有时的艺术家名是 "Duke Ellington",但有时是 "Duke Ellington & His Orchestra",或者其他拼写变体。

本练习是课程的一部分

R 中使用 sparklyr 的 Spark 入门

查看课程

练习说明

已经为您创建了一个 Spark 连接 spark_conn。一个附着在 Spark 中已合并且过滤后的曲目信息/音色数据上的 tibble 已预定义为 track_data_tbl

  • 将艺术家 ID 划分为训练集和测试集,并将结果赋给 training_testing_artist_ids
    • 选择 track_data_tblartist_id 列。
    • 获取不重复的行。
    • 将其划分为 70% 训练集和 30% 测试集。
  • 将训练数据集按 artist_idtrack_data_tbl 做内连接,并将结果赋给 track_data_to_model_tbl
  • 将测试数据集按 artist_idtrack_data_tbl 做内连接,并将结果赋给 track_data_to_predict_tbl

交互式实操练习

通过完成这段示例代码来试试这个练习。

# track_data_tbl has been pre-defined
track_data_tbl

training_testing_artist_ids <- track_data_tbl %>%
  # Select the artist ID
  ___ %>%
  # Get distinct rows
  ___ %>%
  # Partition into training/testing sets
  ___

track_data_to_model_tbl <- track_data_tbl %>%
  # Inner join to training partition
  ___

track_data_to_predict_tbl <- track_data_tbl %>%
  # Inner join to testing partition
  ___
编辑并运行代码