首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“对比”错误

“对比”错误
EN

Stack Overflow用户
提问于 2017-11-12 00:42:47
回答 1查看 1.1K关注 0票数 3

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

contrasts<-中的错误(*tmp*,value = contr.funs[1 + isOFnn]): 对比只能适用于2级或2级以上的因素。

关于这一点,SOCrossValidated中有几个问题,根据我的解释,这个错误是我的模型中的一个因素,只有一个级别。

这是一个非常简单的模型,有一个连续变量(driveTime)和一个因子变量,它有三个层次。

代码语言:javascript
复制
 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

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

代码语言:javascript
复制
newDriveTime <- data.frame(driveTime =  8,Market.y = as.factor("Dallas"))
predict(bestMod_Rescaled, newDriveTime)

我得到以下错误

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

下面是我的更多工作流程

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-12 00:54:38

我认为您也必须在培训数据中为测试集提供因素级别。下面这样的东西应该能起作用。

代码语言:javascript
复制
newDriveTime <- data.frame(driveTime =  8, 
                    Market.y = factor("Dallas", levels(finalSubset$Market.y)))

predict(bestMod_Rescaled, newDriveTime)

在R中,因子被保存为带有名称/标签的整数。如果你有两个因子向量,有不同的水平,只要看看标签,一个不能确定哪些标签是对应的水平在两个向量。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47244360

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档