蘑菇仙人 2024-03-26 19:10 采纳率: 96%
浏览 14
已结题

x-variables in test data do not match original training data

跑这句代码,testing_surv <- coxph(Surv(OS.time, OS) ~ fit.p$predicted,data = testing)
。错误:Error in generic.predict.rfsrc(object, newdata, m.target = m.target, importance = importance, :
x-variables in test data do not match original training data. 数据集的变量名、类型和模型变量名、类型完全一样,为什么还会出现这样的错误?

  • 写回答

1条回答 默认 最新

  • 檀越@新空间 2024-03-26 19:11
    关注

    蘑菇仙人 晚上好🌙🌙🌙
    本答案参考ChatGPT-3.5

    出现这样的错误可能是由于以下原因:

    1. 变量名不匹配:检查测试数据集的变量名是否与原始训练数据集的变量名完全匹配。请确保变量名的大小写、空格和标点符号等完全一致。

    2. 变量类型不匹配:检查测试数据集的变量类型是否与原始训练数据集的变量类型匹配。例如,确保数值变量、字符变量和因子变量等的类型一致。

    3. 缺失值处理不一致:检查测试数据集中是否存在缺失值,并确保对缺失值的处理方式与原始训练数据集一致。例如,如果在训练模型时对缺失值进行了填充或删除操作,那么在测试数据集中也需要进行相同的处理。

    解决方案:

    1. 确保测试数据集的变量名、类型和缺失值处理方式与原始训练数据集一致。

    2. 如果数据集比较大,可以使用函数如setdiff()来比较测试数据集的变量名与训练数据集的变量名,以找出不匹配的变量名。

    3. 如果变量类型不匹配,可以使用as.numeric()as.factor()等函数将测试数据集中的变量转换为正确的类型。

    4. 如果测试数据集中有缺失值,可以使用函数如na.omit()complete.cases()来删除缺失值,或使用函数如na.mean()na.median()来填充缺失值。

    修改后的代码示例:

    # 检查变量名和变量类型是否匹配
    if(all(colnames(testing) == colnames(training)) && all(sapply(training, class) == sapply(testing, class))){
      # 根据预测值构建Cox模型
      testing_surv <- coxph(Surv(OS.time, OS) ~ fit.p$predicted, data = testing)
    } else {
      stop("x-variables in test data do not match original training data.")
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 4月5日
  • 已采纳回答 3月28日
  • 创建了问题 3月26日