r - Tidymodels:从训练和测试数据创建一个 rsplit 对象
问题描述
我正在尝试从 Scikit-Learn 跳转到 Tidymodels,并且由于 Julia Silge 和 Andrew Couch 的教程,大部分时间它相对轻松。但是,现在我被困住了。通常我会使用 initial_split(df, strata = x) 来获得一个拆分对象来使用。但这一次我得到了来自不同部门的测试和训练集,我担心这可能会成为常态。如果没有像 last_fit() 和 collect_predictions() 这样的拆分对象函数,则不起作用。
如何对提供的数据集进行逆向工程,使它们成为 rsplit 对象?或者,是否可以先将数据集绑定在一起,然后准确地告诉 initial_split() 应该去训练和测试哪些行?
我看到有人在https://community.rstudio.com/t/tidymodels-creating-a-split-object-from-testing-and-training-data-perform-last-fit/69885提出了同样的问题。Max Kuhn 说你可以对 rsplit 对象进行逆向工程,但我不明白怎么做。谢谢!
# Example data
train <- tibble(predictor = c(0, 1, 1, 1, 0, 1, 0, 0),
feature_1 = c(12, 18, 15, 5, 20, 2, 6, 10),
feature_2 = c(120, 98, 111, 67, 335, 123, 22, 69))
test <- tibble(predictor = c(0, 1, 0, 1),
feature_1 = c(5, 13, 8, 9),
feature_2 = c(132, 105, 99, 112))
解决方案
对拆分对象进行逆向工程可能意味着简单地查看rsplit
对象的构造。根据包的实现,这可以像使用与使用initial_split
. 这很可能是这里的情况,所以我们只需要重新创建对象并确保所有字段都可用。
然而,一种方法(可能是最简单的)是将两者结合起来data.frames
并使用索引make_splits
来重新创建原始拆分对
library(rsample)
library(dplyr)
combined <- bind_rows(train, test)
ind <- list(analysis = seq(nrow(train)), assessment = nrow(train) + seq(nrow(test)))
splits <- make_splits(ind, combined)
splits
<Analysis/Assess/Total>
<8/4/12>
推荐阅读
- sql - CMD.ExecuteScalar() 在存储过程中返回 0 以插入数据
- c++ - AllocatorAwareContainer 和复制和交换习语
- python - 从列表中获取值
- java - 无法使用 XMLAdapter 解组 ZoneDateTime(引发错误)
- c++ - 关于三角表而不是三角函数的性能问题
- flutter - Flutter setState 重建所有子节点
- r - 如何通过引用两个单独的角色 ID 为配偶创建共享的家庭 ID
- java - 如何处理 Spring 云流 kafka 流活页夹中的序列化错误?
- r - 将两列与字符串组合成一个新列
- gstreamer - Gstreamer RTSP 网络摄像头服务器