问题标签 [r-recipes]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
r - 配方中的 SMOTE 与 trainControl 中的 SMOTE
我试图了解在使用交叉验证训练模型时应该在哪里发生 SMOTE。我知道所有的预处理步骤都应该针对交叉验证的每一折进行。那么这是否意味着以下两个设置是相同的并且理论上是正确的?
设置 1:使用配方进行预处理,在 trainControl 中进行打击
设置 2:使用食谱进行预处理和打击:这是否会在每个 CV 折叠中进行?
蒂亚!
r - R Tidymodels:在使用预处理拟合基于配方的工作流程后,要保存哪些对象以用于生产?
在设计了一个基于Tidymodels配方的工作流,它经过调整然后适合一些训练数据,我不清楚哪些对象(适合的“工作流程”、“食谱”、..etc)应该保存到磁盘以用于预测新的生产中的数据。我知道我可以使用saveRDS()
/ readRDS()
、write_rds()
/read_rds()
或其他选项来实际保存/加载这些对象,但是哪些?
在一个干净的 R 环境中,我将收到新的原始数据,这些数据需要使用我在训练模型时使用的“配方”进行预处理。然后,我想在预处理后根据该数据进行预测。如果我打算像处理训练数据一样使用prep()
和bake()
函数来预处理新数据,那么我将最少需要它似乎开始prep()
工作的配方和原始训练数据。另外,我还需要拟合模型/工作流程来进行预测。所以看起来是三个对象。pull_workflow_prepped_recipe()
如果我将 SESSION 1 中的工作流对象保存到磁盘,那么我可以在 SESSION 2 中分别使用和从中提取配方和模型pull_workflow_fit()
。但prep()
似乎需要原始训练数据,我可以通过早期使用将其保留在工作流程中retain = TRUE
...但是在调用fit()
. 听我的呼救声!:)
所以,想象一下两个不同的 R 会话,第一个会话我进行所有的训练和模型构建,第二个会话是一些正在运行的生产应用程序,它使用从第一个会话中学到的东西。我在 SESSION1 底部的箭头处以及 SESSION 2 中的多个位置需要帮助。我使用 Tidymodels Get Started作为此示例的基础。
第一节
会议 2
r - Tidymodels 中的逐步算法
我发现在 R 中本地实现的用于变量选择的逐步算法step()
未集成在 Tidymodels 中。
我不知道是否有不使用它的原因(因为更好的程序),或者它只是缺少功能。
r - recipes::step_num2factor() 在烘焙时将最后一层保留为 NA,尽管提供了足够的级别(MWE 提供)
我使用该函数创建的最后一个类别step_num2factor()
可以正确创建所有级别,但最后一个。它在那里填写了一个 NA。
MWE
test <- tibble(pred = c(0, 1, 2, 3, 4, 5, 8), target = c(0,1,0,1,1,1,0))
打印时看起来像这样:
执行配方步骤并比较结果
备注:transform 因为一个因子不能有的level 0。(来源)
准备和烘焙后的转换数据集
NA不应该在那里。它应该是“八”类。我究竟做错了什么?
备注:我也尝试了“六”,因为我认为该函数可能只接受单词中的值而不是完全随机命名的级别,但事实并非如此。
r - 使用 add_formula() 或 add_variables() 但不使用 add_recipe() 的 Tidymodels 工作流程
我遇到了一些奇怪的行为,使用一个配方和一个工作流来区分垃圾邮件和使用 naiveBayes 分类器的有效文本。我试图使用 tidymodels 和工作流程来复制本书第 4 章机器学习与 R 的结果:https ://github.com/PacktPublishing/Machine-Learning-with-R-Second-Edition/blob/master/Chapter %2004/MLwR_v2_04.r
虽然我能够在有add_variables()
或add_formula()
没有工作流的情况下重现分析,但使用该add_recipe()
函数的工作流不起作用。
以下是三个实际产生有效输出的代码示例
虽然以下代码不起作用
它还会引发以下错误,但我不太明白使用时发生了什么rlang::last_error()
有人能告诉我我错过了什么吗?
r - step_BoxCox() 带负数据
我的理解是,这step_BoxCox()
需要一个严格的正变量。但是,我尝试对具有一些负值的数据应用该步骤,但没有收到错误或警告。输出没有 NA 值。
我不知道出了什么问题,如果我的理解有缺陷,或者我是否使用了错误的语法或其他东西。
由reprex 包(v0.3.0)于 2021-04-29 创建
r - R - 来自工作流的部分依赖图
我创建了以下配方来预测我在 R 中的随机森林:
在检索到样本内性能后,我使用工作流来预测保留数据。
所以我使用交叉验证来微调并最终测试保留数据。但是,如何获得部分依赖图来“打开黑匣子”?
r - 错误/警告“因子中有新级别:NA”
我正在使用 tidymodels 方法创建一个随机森林模型。在配方函数中,我收到了这个我根本无法解释的错误/警告,但它必须与创建的汇总变量有关。错误是
所以,现在我的食谱参数看起来像这样:
_prep 调用中弹出错误。
r - Tidymodels:在 Date 列中估算缺失值的正确方法是什么?
我为 Date 列中的缺失值而苦苦挣扎。在我的预处理管道 ( recipe
-object) 中,我使用该step_impute_knn
函数填充所有日期列中的缺失值。不幸的是,我收到以下错误:
分配的数据 pred_vals 必须与现有数据兼容。?列 avg_begin_first_contract .x 发生错误无法将双精度转换为日期
这是reprex
一个版本,我在多个列中估算值,包括一Date
列。Date
如果我只将值估算到列中,这对我来说并不重要。结果是一样的。下面有一个reprex
,它没有通过错误,因为没有Date
使用列。
以前有人遇到过这个问题吗?
这是reprex,它不会出现错误:
提前致谢!M。