我试图用randomForest和插入符号包预测栅格图层,但在引入因子变量时失败 . 没有因素,一切正常,但一旦我带来一个因素,我得到错误:

Error in predict.randomForest(modelFit, newdata) : Type of predictors in new data do not match that of the training data.

我在下面创建了一些示例代码来完成他的过程 . 我提出了透明度的几个步骤并提供了一个工作示例 .

(To skip the set-up code, jump from here on down...)

首先是创建样本数据,拟合RF模型,以及预测涉及NO因素的栅格 . 一切正常 .

# simulate data

x1p

x2p

x1a

x2a

x1

x2

y

d

# RF Classification on data with no factors... works fine

require(randomForest)

dRF

dRF$y

levels = c("present", "absent"))

rfFit

# Create sample Rasters

require(raster)

r1

values(r1)

values(r2)

s

names(s)

# raster::predict() with no factors, works fine.

model

spplot(model)

接下来的步骤是创建一个因子变量,以添加到训练数据并创建具有预测匹配值的栅格 . 请注意,栅格是常规的旧整数,而不是 as.factor 栅格 . 一切都还行不错......

# Create factor variable

x3p

x3a

x3

dFac

dFac$x3

dFac

# RF model with factors, works fine

rfFit2

# Create new raster, but not as.factor()

r3

values(r3)

s2

names(s2)

s2

# RF, raster::predict() from fit with factor

f

model2

progress='text', factors=f, index=1:2)

spplot(model2) # works fine

完成上述步骤后,我现在有了一个RF模型,该模型使用包含因子变量的数据进行训练,并在包含类似值的整数栅格的栅格砖上进行预测 . 这是我的最终目标,但我希望能够通过 caret 包工作流程来实现 . 下面我介绍 caret::train() 没有因素,一切运作良好 .

# RF with Caret and NO factors

require(caret)

rf_ctrl

allowParallel=FALSE, verboseIter=TRUE,

savePredictions=TRUE, classProbs=TRUE)

cFit1

tuneLength=4, trControl = rf_ctrl, importance = TRUE)

model3

progress='text', factors=f, index=1:2)

spplot(model3) # works with caret and NO factors

(...to here. This is where the issues begin)

事情就是失败的地方 . 插入符号训练的Rf模型与因子变量有效,但在 raster::predict() 失败 .

# RF with Caret and FACTORS

rf_ctrl2

allowParallel=FALSE, verboseIter=TRUE,

savePredictions=TRUE, classProbs=TRUE)

cFit2

tuneLength=4, trControl = rf_ctrl2, importance = TRUE)

model4

progress='text', factors=f, index=1:2)

# FAIL: "Type of predictors in new data do not match that of the training data."

尝试与上面相同,但不是使用与因子级别具有相同值的整数栅格,而是使用 as.factor() 并指定级别将栅格转换为因子 . 这也失败了 .

#trying with raster as.factor()

r3f

values(r3f)

r3f

f

f$code

levels(r3f)

s2f

names(s2f)

s2f

model4f

progress='text', factors=f, index=1:2)

# FAIL "Type of predictors in new data do not match that of the training data."

上述步骤的错误和进展清楚地表明我的方法存在问题, caret:train() 与 raster::predict() . 我已经完成了调试(尽我所能)并解决了我注意到的问题,但没有吸烟枪 .

任何和所有的帮助将不胜感激 . 谢谢!

Added: 我继续乱搞,意识到如果 caret::train() 中的模型是用公式形式写的,它就可以工作 . 查看模型对象的结构,很容易看出为因子变量创建了对比 . 我想这也意味着 raster::predict() 认识到了对比 . 这很好,但是因为我的方法没有设置为使用基于公式的预测,这是一个无赖 . 任何额外的帮助仍然受到赞赏 .

#with Caret WITH FACTORS as model formula!

rf_ctrl3

allowParallel=FALSE, verboseIter=TRUE, savePredictions=TRUE, classProbs=TRUE)

cFit3

tuneLength=4, trControl = rf_ctrl2, importance = TRUE)

model5

spplot(model5)

factor java_使用randomForest,Caret和factor变量预测栅格时出错相关推荐

  1. 【Python基础】当变量有值时,为什么会出现UnboundLocalError?

    先来看两段代码. # 代码段一 x = 10def bar():print(x)bar() # 输出 10 # 代码段二 x = 10def foo():print(x)x += 1foo() # 输 ...

  2. python 变量赋值是引用和拷贝_Python 中变量赋值传递时的引用和拷贝

    曾经看到这样一个问题,一个字典中的元素是列表,将这个列表元素赋值给一个变量,然后修改这个列表中元素的值,结果发现,字典中那个列表也同样修改了.那个问题如下: dict = {'a':[1,2,3,4, ...

  3. C语言结构体变量在定义时初始化

    C语言结构体变量在定义时就将其初始化的格式如下 struct struct_name struct_variable = {     .member1            = xxx,     .m ...

  4. 把选中变量、方法时的高亮给弄没了,怎么找回来

    问题:把选中变量.方法时的高亮给弄没了,怎么找回来 解决办法: 在首选项里的java->editor->Mark Occurrences里设置,勾选上Mark occurrences of ...

  5. 几何结构因子(Geometrical structure factor)和原子形状因子(atomic form factor)

    1.Monatamic Lattice 根据X衍射中,入射光和散射光的光程差:${\bf{r}}\cdot\left({\bf{k-k'}}\right)$,振幅取决于$e^{i\bf{K}\cdot ...

  6. final变量存在哪 java_使用Java中的final变量需要注意的地方。

    对与java中的final变量,java编译器是进行了优化的.每个使用了final类型变量的地方都不会通过连接而进行访问.比如说Test类中使用了Data类中一个final的int数字fNumber= ...

  7. js变量传给java_如何把JavaScript中的变量值传给javabean?

    恰好我碰到过类似的问题,引用一篇文章给你吧.希望能帮你~ JSP数据和JavaScirpt数据交互使用问题的一种解决方法 对于WEB程序来说,前端(JavaScript)和后端(JSP/Servlet ...

  8. tomcat 设置java_为tomcat配置java环境变量

    我的tomcat 中java标签里是这么写的 java virual Machine: C:\Program Files\Java\jre1.6.0\bin\client\jvm.dll java c ...

  9. js获取的值传到java_使用GraalVM从javascript将变量参数传递给java函数

    我试图在Corda RPC中调用一个名为 startTrackedFlowDynamic的函数,该函数接受2个参数: 在JAR中打包的startTrackedFlowDynamic(logicType ...

最新文章

  1. 2022-2028年中国塑料合成革的制造行业市场全景评估及发展趋势研究报告
  2. python 存入数据库bigint_【Python】从0开始写爬虫——把扒到的豆瓣数据存储到数据库...
  3. 打印合同_批量打印合同用印申请单
  4. 安卓自定义Listener
  5. Swift - 数组排序方法(附样例)
  6. 优盘提示插入多卷集的最后一卷解决办法(5)
  7. Java 信号 Semaphore 简介
  8. C# Post接收发送XML
  9. 转:过度疲劳的27个信号与预防方法
  10. 句句真研—每日长难句打卡Day16
  11. leetcode963. Minimum Area Rectangle II
  12. vmstat命令参数及其介绍
  13. A visual proof that neural nets can compute any function
  14. python调用大漠插件、检测么_python调用大漠插件教程05字库
  15. 离线语音风扇设计应用案例
  16. 此ca根目录证书不受信任
  17. PPT做起来老大难?试试这5个神器网站
  18. MS VC6 链接错误处理
  19. 口令登陆创新的一些想法
  20. Python包下载常用whl文件汇总:最全的Python whl集合

热门文章

  1. C# 获取 checkbox选中的值
  2. 【PTA】名人堂与代金券
  3. arcgis server里预览地图显示空白
  4. spring--mvc用戶注册用户名验重
  5. MySQL报错 SELECT list is not in GROUP BY clause and contains nonaggregated column...
  6. batchnorm2d参数 torch_pytorch中BatchNorm1d、BatchNorm2d、BatchNorm3d
  7. Windows XP 系统故障终极排查大全
  8. ScePT: 为规划的场景一致和基于策略轨迹预测
  9. 使用vagrant搭建三台虚拟机环境
  10. BugKu-CTF(杂项misc)--小美的秘密part2