错误:预处理插补过程中的BoxCox错误R语言

错误:预处理插补过程中的BoxCox错误R语言,r,transformation,r-caret,predict,imputation,R,Transformation,R Caret,Predict,Imputation,我正在查看应用预测建模书Max Kuhn中第6章练习3问题的答案,我在插补预测步骤中得到了一个错误(尽管完全遵循了他们的答案)。可再现代码和问题如下: library(AppliedPredictiveModeling) library(caret) library(RANN) data(ChemicalManufacturingProcess) predictors <- subset(ChemicalManufacturingProcess,s

我正在查看应用预测建模书Max Kuhn中第6章练习3问题的答案,我在插补预测步骤中得到了一个错误(尽管完全遵循了他们的答案)。可再现代码和问题如下:

    library(AppliedPredictiveModeling)
    library(caret)
    library(RANN)

    data(ChemicalManufacturingProcess)
    predictors <- subset(ChemicalManufacturingProcess,select= -Yield)
    yield <- subset(ChemicalManufacturingProcess,select="Yield")
    # Impute
    #Split data into training and test sets
    set.seed(517)
    trainingRows <- createDataPartition(yield$Yield,
                                          p = 0.7,
                                          list = FALSE)
    
    trainPredictors <- predictors[trainingRows,]
    trainYield <- yield[trainingRows,]
    testPredictors <- predictors[-trainingRows,]
    testYield <- yield[-trainingRows,]
    
    #Pre-process trainPredictors and apply to trainPredictors and testPredictors
    pp <- preProcess(trainPredictors,method=c("BoxCox","center","scale","knnImpute"))
    ppTrainPredictors <- predict(pp,newdata=trainPredictors)
    ppTestPredictors <- predict(pp,newdata=testPredictors) # This results in an error
库(AppliedPredictiveModeling)
图书馆(插入符号)
图书馆(RANN)
数据(化学制造过程)

预测值由于boxcox变换的值不为零,所以会出现这种错误。如果您查看帮助页面,它会写入:


如果有的话(好的,非常感谢,种子问题似乎是本书中常见的问题。干杯
cbind(colSums(trainPredictors==0,na.rm=TRUE),colSums(testPredictors==0,na.rm=TRUE)) 
                       [,1] [,2]
BiologicalMaterial01      0    0
BiologicalMaterial02      0    0
BiologicalMaterial03      0    0
BiologicalMaterial04      0    0
BiologicalMaterial05      0    0
BiologicalMaterial06      0    0
BiologicalMaterial07      0    0
BiologicalMaterial08      0    0
BiologicalMaterial09      0    0
BiologicalMaterial10      0    0
BiologicalMaterial11      0    0
BiologicalMaterial12      0    0
ManufacturingProcess01    1    2
ManufacturingProcess02   29    6
ManufacturingProcess03    0    0
ManufacturingProcess04    0    0
ManufacturingProcess05    0    0
ManufacturingProcess06    0    0
ManufacturingProcess07    0    0
ManufacturingProcess08    0    0
ManufacturingProcess09    0    0
ManufacturingProcess10    0    0
ManufacturingProcess11    0    0
ManufacturingProcess12  104   38
ManufacturingProcess13    0    0
ManufacturingProcess14    0    0
ManufacturingProcess15    0    0
ManufacturingProcess16    1    0
ManufacturingProcess17    0    0
ManufacturingProcess18    1    0
set.seed(517)
trainingRows <- createDataPartition(yield$Yield,
                                          p = 0.7,
                                          list = FALSE)
    
trainPredictors <- predictors[trainingRows,]
trainYield <- yield[trainingRows,]
testPredictors <- predictors[-trainingRows,]
testYield <- yield[-trainingRows,]