【问题标题】:factor name has new levels while using predict function in test data set在测试数据集中使用预测函数时,因子名称具有新的水平
【发布时间】:2017-11-15 09:01:27
【问题描述】:

我正在尝试解决来自 kaggle 的泰坦尼克号数据集。 我已经完成了关于火车数据集的几乎所有工作 训练(12 个变量的 891 个 obs) 测试(11 个变量的 418 个 obs)

我使用过决策树(rpart 方法)

confusionMatrix(pred_train,train$Survived) 混淆矩阵和统计数据

              Reference
    Prediction   0   1
             0 549   0
             1   0 342

               Accuracy : 1                  
                 95% CI : (0.996, 1)         
    No Information Rate : 0.616              
    P-Value [Acc > NIR] : <0.0000000000000002

                  Kappa : 1                  
 Mcnemar's Test P-Value : NA                 

            Sensitivity : 1.000              
            Specificity : 1.000              
         Pos Pred Value : 1.000              
         Neg Pred Value : 1.000              
             Prevalence : 0.616              
         Detection Rate : 0.616              
   Detection Prevalence : 0.616              
      Balanced Accuracy : 1.000              

       'Positive' Class : 0                  

我用pred &lt;- predict (fit ,test ,type = "class")我明白了

model.frame.default 中的错误(条款,新数据,na.action = na.action, xlev = attr(object, : factor Name 有新级别 Abbott, Master。 呃……

我该如何解决这个问题,因为对火车和测试数据集(891 和 418)的观察存在差异,并且我已经从火车数据集中删除了标识符(passengerId)

【问题讨论】:

    标签: r decision-tree predict


    【解决方案1】:

    在训练之前,您需要 rbind 测试和训练,然后使用因子并提取“新”训练并使用所有因子水平进行测试

    【讨论】:

    • 您的意思是在应用决策树之前或从一开始就说(甚至在特征工程之前)
    • 如果测试数据中有未知因素预测失败,则在开始时是的
    • x
    • rbind not cbind 在 kaggle 论坛上查看一些内核 kaggle.com/mrisdal/exploring-survival-on-the-titanic
    猜你喜欢
    • 2011-05-16
    • 1970-01-01
    • 1970-01-01
    • 2019-10-26
    • 1970-01-01
    • 2019-01-04
    • 1970-01-01
    相关资源
    最近更新 更多