Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
预处理插补R插入符号和预测_R_R Caret - Fatal编程技术网

预处理插补R插入符号和预测

预处理插补R插入符号和预测,r,r-caret,R,R Caret,我注意到predict()只会在完整的情况下创建预测。我在预处理选项中包括了medianImpute,例如: train(outcome ~ ., data = df, method = "rf", tuneLength = 5, preProcess = c("YeoJohnson", "center", "scale", "medianImpute"), metric = 'ROC', tr

我注意到predict()只会在完整的情况下创建预测。我在预处理选项中包括了
medianImpute
,例如:

train(outcome ~ ., 
        data = df,
        method = "rf", 
        tuneLength = 5,
        preProcess = c("YeoJohnson", "center", "scale", "medianImpute"),
        metric = 'ROC', 
        trControl = train_ctrl)
}

这是否意味着我应该在训练集合之前对缺失的值进行插补?如果不是,我无法为测试集中的所有情况创建预测。我在库恩博士的书中读到,预处理应该在交叉验证期间进行。。。谢谢

如果您使用的是
medianImpute
,那么它肯定需要在训练集之前发生,否则,即使您使用
medianImpute
输入测试集,结果也会出错

以以下极端情况为例:

你只有一个自变量X,它由数字1到100组成。想象一下将数据集拆分为50%测试集和50%训练集的极端情况,其中数字1到50在测试集中,数字51到100在训练集中

使用您的代码(插入符号的训练功能),训练集中缺失的值将替换为75.5。这将产生三大问题:

  • 您不能对测试集使用相同的方法
    (medianImpute)
    ,因为测试集中缺少的值将替换为25.5
  • 您不能手动将测试集中缺少的值替换为75.5,因为75.5的值远高于测试集的最大值,并且您将显著地使其倾斜
  • 插入符号包的功能系列将尝试找出适合您的模型的最佳参数(调整)。当完整数据集的中位数(输入缺失数据的正确值)为50.5时,用75.5替换缺失值将使用错误的参数值调整模型
  • 因此,最好的做法是在创建训练集之前解释丢失的数据


    希望这有帮助

    如果您使用的是
    medianImpute
    ,那么它肯定需要在训练集之前发生,否则,即使您使用
    medianImpute
    输入测试集,结果也会出错

    以以下极端情况为例:

    你只有一个自变量X,它由数字1到100组成。想象一下将数据集拆分为50%测试集和50%训练集的极端情况,其中数字1到50在测试集中,数字51到100在训练集中

    使用您的代码(插入符号的训练功能),训练集中缺失的值将替换为75.5。这将产生三大问题:

  • 您不能对测试集使用相同的方法
    (medianImpute)
    ,因为测试集中缺少的值将替换为25.5
  • 您不能手动将测试集中缺少的值替换为75.5,因为75.5的值远高于测试集的最大值,并且您将显著地使其倾斜
  • 插入符号包的功能系列将尝试找出适合您的模型的最佳参数(调整)。当完整数据集的中位数(输入缺失数据的正确值)为50.5时,用75.5替换缺失值将使用错误的参数值调整模型
  • 因此,最好的做法是在创建训练集之前解释丢失的数据


    希望这有帮助

    谢谢你,莱尚德。这很有意义,因为我使用的是medianImpute,这取决于转换。例如,如果变换是基于均值和方差的,那么是的。谢谢你,莱赞德。这很有意义,因为我使用的是medianImpute,这取决于转换。例如,如果变换基于均值和方差,则为是。
    > median(1:50)  #test set median
    [1] 25.5
    > median(51:100) #training set median
    [1] 75.5