“对比”错误中的错误
Error in `contrasts' Error
我训练了一个模型,我正在尝试使用 predict
函数,但 returns 出现以下错误。
Error in contrasts<-
(*tmp*
, value = contr.funs[1 + isOF[nn]]) :
contrasts can be applied only to factors with 2 or more levels
SO and CrossValidated 中有几个关于这个的问题,根据我对这个错误的解释,我的模型中的一个因素只有一个水平。
这是一个非常简单的模型,具有一个连续变量 (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 中,因子被保存为带有名称/标签的整数。如果您有两个具有不同水平数的因子向量,仅通过查看标签,就无法确定哪些标签是两个向量中对应的水平。
我训练了一个模型,我正在尝试使用 predict
函数,但 returns 出现以下错误。
Error in
contrasts<-
(*tmp*
, value = contr.funs[1 + isOF[nn]]) :
contrasts can be applied only to factors with 2 or more levels
SO and CrossValidated 中有几个关于这个的问题,根据我对这个错误的解释,我的模型中的一个因素只有一个水平。
这是一个非常简单的模型,具有一个连续变量 (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 中,因子被保存为带有名称/标签的整数。如果您有两个具有不同水平数的因子向量,仅通过查看标签,就无法确定哪些标签是两个向量中对应的水平。