我已经训练了一个模型,我试图使用predict函数,但是它返回以下错误。
contrasts<-中的错误(*tmp*,value = contr.funs[1 + isOFnn]): 对比只能适用于2级或2级以上的因素。
关于这一点,SO和CrossValidated中有几个问题,根据我的解释,这个错误是我的模型中的一个因素,只有一个级别。
这是一个非常简单的模型,有一个连续变量(driveTime)和一个因子变量,它有三个层次。
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发布于 2017-11-12 00:54:38
我认为您也必须在培训数据中为测试集提供因素级别。下面这样的东西应该能起作用。
newDriveTime <- data.frame(driveTime = 8,
Market.y = factor("Dallas", levels(finalSubset$Market.y)))
predict(bestMod_Rescaled, newDriveTime)在R中,因子被保存为带有名称/标签的整数。如果你有两个因子向量,有不同的水平,只要看看标签,一个不能确定哪些标签是对应的水平在两个向量。
https://stackoverflow.com/questions/47244360
复制相似问题