问题标签 [r-caret]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
4900 浏览

r - 是否有任何解决方法可以从 Rstudio 中获取插入符号包的 train() 函数?

我正在浏览 Max Kuhn 和 Kjell Johnson 的非常好的书“应用预测建模”中的示例,不幸的是,我陷入了使用该train()函数的示例之一和支持交叉验证包GermanCredit提供的数据集之一caret向量机:

它抛出了这个错误:

有时这个错误信息:

然后我了解到这makeCenv()是在doMC建议作为并行计算或并行处理的替代方案的包中,但我不会选择这个包,因为它在 Windows 平台上不可用,我猜。有什么选择吗?

更新: 这些错误仅在代码运行时出现Rstudio IDE,默认的 R 控制台一切正常,所以问题出在 Rstudio 本地,我猜。R 控制台的时间有点长(大约 8 分钟),不过,鉴于下面提到的硬件规格,我想知道如何加快速度。

我的 sessioninfo() 输出在这里(Rstudio):

默认 R 控制台的 sessionInfo() 输出:

问题:

  1. 必须有一个交互,Rstudio因为它在默认 R 控制台中运行良好,基于默认 R 控制台和 Rstudio 的两个 sessionInfo() 输出,区别在于compiler包。奇怪,在 CRAN 中找不到这个 pkg,我在这里找到了一个注释: http://www.inside-r.org/r-doc/compiler/compile 说 load(compiler) 就足够了,当我这样做时Rstudio:无法使用此错误消息:

    错误:包“编译器”是在 R 3.0.0 之前构建的:请重新安装它

更新
在将编译器包库从默认R lib路径复制并粘贴到Rstudio lib路径之后,它终于从withing Rstudio工作了,但是时间仍然太长(大约8分钟),我会发布一个单独的并行处理问题鉴于下面的硬件和 Windows,如果这有助于更快地找到答案。

  1. 我的笔记本电脑是 2.1GHz 双核处理器,3GB,windows 32bit,知道如何用train()函数进行并行处理吗?您能否为此发出 R 代码,我将非常感激。
0 投票
2 回答
8757 浏览

r - 在插入符号中并行执行火车失败,找不到函数

昨天我更新了我的 R 包,从那时起并行执行 train 函数失败了。

似乎从工作人员内部调用的某些功能不可用。这些函数至少是 flatTable 和 probFunction。

我在生产机器上遇到了这个问题,并且能够在干净的 Windows 7 x64 VM 上重现它。

我在下面添加了一个最小的工作示例。尊敬的 stackoverflow 用户:感谢您的帮助!

R 会话信息

0 投票
2 回答
512 浏览

r - 插入符号中的训练函数被 AMORE 中的相同函数掩盖,不能使用插入符号使“AMORE”方法工作

这是我在 Rstudio 中运行的代码:

输出如下所示:

警告信息与“AMORE”包中的“train”功能有关。如果我输入

在我运行上述代码后的命令窗口中,我得到了这个函数的主体,这从 AMORE 包中很明显。

我搜索了我的路径,显然 AMORE 出现在插入符号之前:

以下是我的会话信息:

我应该如何解决这个问题,以便 R 将使用“caret”中的“train”函数而不是“AMORE”中的函数?感谢您的宝贵时间,并提前感谢您的帮助。

捷通

0 投票
1 回答
6873 浏览

r - 插入符号 rfe + 和 ROC 中的特征选择

我一直在尝试使用 caret 包应用递归特征选择。我需要的是 ref 使用 AUC 作为性能指标。谷歌搜索一个月后,我无法让该过程正常工作。这是我使用的代码:

执行此脚本时,我得到以下结果:

该过程始终使用准确性作为性能指标。出现的另一个问题是,当我尝试从使用以下方法获得的模型中获得预测时:

我收到以下消息

事实证明,从模型中得到一些预测是不可能的。

以下是通过获取的信息sessionInfo()

0 投票
4 回答
6416 浏览

r - 如何在 CARET 中自定义模型以执行 PLS-[Classifer] 两步分类模型?

这个问题是这里同一线程的延续。以下是本书中的一个最小工作示例:

Wehrens R. Chemometrics 在自然科学和生命科学中使用 R 多元数据分析。第 1 版。海德堡;纽约:斯普林格。2011 年。(第 250 页)。

该示例取自这本书及其包ChemometricsWithR。它突出了使用交叉验证技术建模时的一些缺陷。

目标:
一种交叉验证的方法,使用相同的重复 CV 集执行PLS通常遵循的已知策略,LDA或类似逻辑回归、SVM、C5.0、CART 的表亲,具有caret打包的精神。因此,每次调用等待分类器之前都需要 PLS,以便对 PLS分数空间进行分类,而不是对观察结果本身进行分类。caret 包中最接近的方法是在PCA使用任何分类器建模之前作为预处理步骤。下面是一个 PLS-LDA 程序,只有一个交叉验证来测试分类器的性能,没有 10 倍 CV 或任何重复。下面的代码取自上述书中,但进行了一些更正,否则会引发错误:

输出:

但是,混淆矩阵与书中的不匹配,无论如何书中的代码确实坏了,但是这里的这个对我有用!

注:
虽然这只是一份 CV,但目的是先就这个方法达成一致,sd并将mean训练集应用到测试集上,PLUS 转化为基于特定 PC 数量的 PLS 分数ncomp。我希望这发生在插入符号中的每一轮简历中。如果作为代码的方法在这里是正确的,那么它可以作为一个最小工作示例的良好开端,同时修改 caret 包的代码。

旁注:
缩放和居中可能会非常混乱,我认为 R 中的一些 PLS 函数在内部进行缩放,有或没有居中,我不确定,所以在插入符号中构建自定义模型时应小心避免缺少或多个缩放或居中(我对这些东西保持警惕)。

多重居中/缩放的危险
下面的代码只是为了展示多重居中/缩放如何改变数据,这里只显示了居中,但同样的问题也适用于缩放。

输出:

如果我在本课程的某个地方遗漏了什么,请发表评论。谢谢。

0 投票
1 回答
1327 浏览

r - Windows 7、R 3.0.2、插入符号 6.0-21 上插入符号中的 train() 出现致命错误

我正在尝试使用train()插入符号来拟合分类模型,但我遇到了某种未处理的异常,并且我的 R 会话在 R 控制台中输出任何错误信息之前崩溃。
窗口错误:

R for Windows 终端前端已停止工作

我正在运行 Windows 7、R 3.0.2、插入符号 6.0-21,并尝试在 R Studio 和 R 控制台中的 32/64 版本的 R 上运行它,并且每次都得到相同的结果。

这是我的培训电话:

使用此参数网格不再有错误:

但是,我仍然在列中得到所有nans 。ValidDeviance这是正常的吗?

注意:我的原始问题已解决,这是评论部分的延续。在评论部分格式化代码块是不可读的,所以我把它贴在这里。这不再是关于插入符号的问题,而是 gbm。

但是,我仍然遇到问题,使用指定了 cv.folds 的单个预测器直接调用 gbm。这是代码:

同样,这在不指定 cv.folds 的情况下有效,但使用它会返回错误:

0 投票
1 回答
15230 浏览

r - 在 R 中使用插入符号进行分类的 predict(model) 和 predict(model$finalModel) 之间的区别

有什么区别

我用preProcess=c("center", "scale")

当我在居中和缩放的测试集上运行它时,我收到 0 个真阳性

但是当我在未缩放的测试集上运行它时会收到一些真正的肯定。我必须使用 rf$finalModel 在居中和缩放的 testSet 和未缩放的 rf 对象上接收一些真实的结果......我错过了什么?


编辑

测试:

在正常的测试集上:

在居中和缩放的 testSetCS 上:

所以似乎 $finalModel 需要相同格式的 trainingSet 和 testSet ,而经过训练的对象只接受未居中和未缩放的数据,而不管选择的 preProcess 参数如何?

预测代码(其中 testSet 是普通数据, testSetCS 居中和缩放):

0 投票
1 回答
5706 浏览

r - 使用 caret 包进行 GBM 分类

当使用 caret 的 train 函数拟合 GBM 分类模型时,函数 predictionFunction 将概率预测转换为基于概率阈值 0.5 的因子。

如果用户试图最大化 ROC 曲线下的面积 (AUROC),这种转换似乎为时过早。虽然敏感性和特异性对应于单个概率阈值(因此需要因子预测),但我更喜欢使用 gbmPredict 的原始概率输出来计算 AUROC。根据我的经验,我很少关心分类模型的校准。我想要尽可能多的信息模型,无论模型预测“1”与“0”的概率阈值如何。是否可以将原始概率强制纳入 AUROC 计算?这看起来很棘手,因为无论使用什么汇总函数都会传递已经是二进制的预测。

0 投票
2 回答
5106 浏览

r - 根据特征在 CARET 包中的重要性对特征进行排序

caret相关的软件包和帮助系统中varImp()有:

偏最小二乘法:这里的变量重要性度量基于绝对回归系数的加权和。权重是 PLS 组件数量的平方和减少的函数,并针对每个结果单独计算。因此,系数的贡献与平方和的减少成比例地加权。

caret以下是按包分类模型的可变重要性的输出method="pls"

很好,但是当我通过这行代码提取这个数据框时:

我得到与上面相同但未排序的结果,但如果已排序会非常好。无论如何,要根据类的平均重要性对这个数据框进行排序(如输出中所述),我这样做了:

所以最终得到的版本与via函数的排序列表不同我在这里错过了什么吗?谢谢。 caretvarImp()

注意:
我没有传递importance = TRUE参数来train()调用 PLSDA 模型,即method = "pls".

$重要性

问题:

如何衡量跨类的重要性?我可以信任未排序varImp()的输出吗?

编辑:对变量重要性进行排序
的方法:max()

结果相同varImp()

这产生了:

但是sum()跨类使用重要性产生了不同的排名(见上文)。那么哪一个是正确的,如果max()方法中存在关联会发生什么?

0 投票
1 回答
1077 浏览

r - R中插入符号的多核多节点示例

我正在寻找一个多节点+多核示例来训练使用插入符号的模型。我目前使用多核功能,它工作得很好,但是对于某些需要大量迭代的任务,我想知道是否可以利用多节点设置,从而我可以在所有内核上并行训练所有节点。因此,如果我有 2 个节点,每个节点有 24 个核心,而不是在具有 24 个核心的单个节点上进行训练,我将使用 48 个核心利用两个节点进行训练。

是否有任何现有的功能可以实现这一点/是否必须手动编码,

谢谢,

  • 拉吉。