繁体   English   中英

“对比”错误出错

[英]Error in `contrasts' Error

我已经训练了一个模型,我试图使用predict函数,但它返回以下错误。

contrasts<-误差contrasts<-*tmp* ,value = contr.funs [1 + isOF [nn]]):
对比度仅适用于具有2级或更多级别的因素

SOCrossValidated中有几个问题,从我解释这个错误,我的模型中的一个因素只有一个级别。

这是一个非常简单的模型,有一个连续变量(driveTime)和一个有3个级别的因子变量

 driveTime         Market.y      transfer
 Min.   : 5.100   Dallas :10   Min.   :-11.205  
 1st Qu.: 6.192   McAllen: 6   1st Qu.:  3.575  
 Median : 7.833   Tulsa  : 3   Median :  7.843  
 Mean   : 8.727                Mean   :  8.883  
 3rd Qu.:10.725                3rd Qu.: 15.608  
 Max.   :14.350                Max.   : 30.643

当我使用预测函数来确定未见样本的结果时

newDriveTime <- data.frame(driveTime =  8,Market.y = as.factor("Dallas"))
predict(bestMod_Rescaled, newDriveTime)

我收到以下错误

Error in `contrasts<-`(`*tmp*`, value = contr.funs[1 + isOF[nn]]) : 
  contrasts can be applied only to factors with 2 or more levels

这是我的工作流程的更多内容

tc          <- tune.control(cross = 10, fix = 8/10)

    tuneResult_Rescaled <- tune(svm,data = finalSubset,
                                transfer~ driveTime + Market.y,
                                ranges = list(epsilon = seq(0.1,.5,0.1),
                                              cost = seq(8,10,.1)), tunecontrol=tc)

    summary(tuneResult_Rescaled)


    bestMod_Rescaled <- tuneResult_Rescaled$best.model

我认为你必须将训练数据中的因子水平提供给测试集。 像下面这样的东西应该工作。

newDriveTime <- data.frame(driveTime =  8, 
                    Market.y = factor("Dallas", levels(finalSubset$Market.y)))

predict(bestMod_Rescaled, newDriveTime)

在R中,因子被保存为带有名称/标签的整数。 如果您有两个具有不同级别的因子向量,只需查看标签,就无法确定哪些标签是两个向量中的相应级别。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM