配方是对应用于数据集以便为数据分析做好准备的步骤的说明。
recipe(x,...)#S3methodfordefaultrecipe(x,...)#S3methodfordata.framerecipe(x,formula=NULL,...,vars=NULL,roles=NULL)#S3methodforformularecipe(formula,data,...)#S3methodformatrixrecipe(x,...)参数x,data模板数据集的DataFrame或小标题(见下文)。
传递给其他方法或从其他方法传递的更多参数(当前未使用)。
模型公式。这里不应使用in-line函数(例如log(x)、x:y等),并且不允许使用减号。这些类型的转换应使用此包中的step函数来执行。允许使用点,就像简单的多元结果项一样(即不需要cbind;请参阅示例)。由于内存问题,模型公式可能不是具有多列的高维数据的最佳选择。
与将在任何上下文中使用的变量相对应的列名称的字符串(见下文)
说明变量将扮演的单个角色的字符串(与vars相同的长度)。该值可以是任何值,但常见角色是"outcome"、"predictor"、"case_weight"或"ID"
类recipe和sub-objects的对象:
包含原始数据集列信息的tibble
包含数据集中当前术语集的小标题。这最初默认为var_info中包含的相同数据。
step或check对象的列表,定义将应用于数据的预处理操作的序列。默认值为NULL
数据的一小部分。它被初始化为与data参数中给出的数据相同,但在配方训练后可能会有所不同。
配方中的变量可以具有任何类型的作用,包括结果、预测变量、观察ID、案例权重、分层变量等。
recipe对象可以通过多种方式创建。如果分析仅包含结果和预测变量,则创建分析的最简单方法是使用不包含内联函数(例如log(x3))的公式(例如y~x1+x2)(请参见下面的第一个示例)。
或者,可以通过首先指定应使用数据集中的哪些变量,然后按顺序定义它们的角色来创建recipe对象(请参阅最后一个示例)。当变量数量非常多时,这种替代方法是一个很好的选择,因为公式方法是memory-inefficient,有很多变量。
有两种不同类型的操作可以按顺序添加到配方中。
配方最常见的两个应用是建模和stand-alone预处理。如何估计配方取决于它的使用方式。
使用配方进行建模的最佳方法是通过workflows包。这将模型和预处理器(例如菜谱)捆绑在一起,并为用户提供了一种流畅的方式来训练模型/菜谱并进行预测。
library(dplyr)library(workflows)library(recipes)library(parsnip)data(biomass,package="modeldata")#splitdatabiomass_tr<-biomass%>%filter(dataset=="Training")biomass_te<-biomass%>%filter(dataset=="Testing")#Withonlypredictorsandoutcomes,useaformula:rec<-recipe(HHV~carbon+hydrogen+oxygen+nitrogen+sulfur,data=biomass_tr)#Nowaddpreprocessingstepstotherecipe:sp_signed<-rec%>%step_normalize(all_numeric_predictors())%>%step_spatialsign(all_numeric_predictors())sp_signed####--Recipe------------------------------------------------------------####--Inputs##Numberofvariablesbyrole##outcome:1##predictor:5####--Operations##*Centeringandscalingfor:all_numeric_predictors()##*Spatialsignon:all_numeric_predictors()我们可以创建一个parsnip模型,然后使用该模型和配方构建工作流程:
predict(linear_sp_sign_fit,new_data=head(biomass_te))###Atibble:6x1##.pred##
作为使用PCA的示例(可能是为了生成绘图):
#Definetherecipepca_rec<-rec%>%step_normalize(all_numeric_predictors())%>%step_pca(all_numeric_predictors())现在估计归一化统计数据和PCA负载:
pca_rec<-prep(pca_rec,training=biomass_tr)pca_rec####--Recipe------------------------------------------------------------####--Inputs##Numberofvariablesbyrole##outcome:1##predictor:5####--Traininginformation##Trainingdatacontained456datapointsandnoincompleterows.####--Operations##*Centeringandscalingfor:carbon,hydrogen,oxygen,...|Trained##*PCAextractionwith:carbon,hydrogen,oxygen,...|Trained请注意,估计的配方显示了选择器捕获的实际列名称。
bake(pca_rec,head(biomass_te))###Atibble:6x6##HHVPC1PC2PC3PC4PC5##