我正在尝试创建列表的排列列表,例如perms(list("a", "b", "c"))返回
list(list("a", "b", "c"), list("a", "c", "b"), list("b", "a", "c"),
list("b", "c", "a"), list("c", "a", "b"), list("c", "b", "a"))
Run Code Online (Sandbox Code Playgroud)
我不知道如何继续,任何帮助将不胜感激.
尝试将数据表的多个列转换为因子列时,我遇到了意外问题.我把它复制如下:
library(data.table)
tst <- data.table('a' = c('b','b','c','c'))
class(tst[,a])
tst[,as.factor(a)] #Returns expected result
tst[,as.factor('a'),with=FALSE] #Returns error
Run Code Online (Sandbox Code Playgroud)
后一个命令返回'Math.factor(j)中的错误:abs对因子没有意义'.我试图获得tst [,lapply(cols,as.factor),= = FALSE]时发现了这一点,其中cols是我试图转换为因子的行的集合.这有什么解决方案或解决方法吗?
能够在R中创建一个可以阻塞直到定义资源或给定适当值的函数对我来说非常有用.我知道R是单线程的,但我曾希望mc能够提供帮助.然而,
library(parallel)
f = function() {
while(!exists('a')) Sys.sleep(1);
print('success!')
}
d = mcparallel(f())
a = 1
mccollect(d)
Run Code Online (Sandbox Code Playgroud)
无限期挂起.是否有任何有效的解决方法,或者我是否必须研究完全不同的模式/不同的语言来实现某种类型的东西?
我想在创建具有更多树的最终随机森林之前使用rfcv从数据集中剔除不重要的变量(请更正并通知我,如果这不是使用此功能的方式).例如,
> data(fgl, package="MASS")
> tst <- rfcv(trainx = fgl[,-10], trainy = fgl[,10], scale = "log", step=0.7)
> tst$error.cv
9 6 4 3 2 1
0.2289720 0.2149533 0.2523364 0.2570093 0.3411215 0.5093458
Run Code Online (Sandbox Code Playgroud)
在这种情况下,如果我正确理解结果,似乎我们可以删除三个变量而没有负面的副作用.然而,
> attributes(tst)
$names
[1] "n.var" "error.cv" "predicted"
Run Code Online (Sandbox Code Playgroud)
这些插槽都没有告诉我实际上可以无害地从数据集中删除的前三个变量是什么.
r classification machine-learning feature-selection random-forest
我正在使用大型数据集,因此希望删除多余的变量并调整每个分支的最佳m个变量.在R中,有两种方法,rfcv和tuneRF,它们有助于完成这两项任务.我正在尝试将它们组合起来以优化参数.
rfcv大致如下:
create random forest and extract each variable's importance;
while (nvar > 1) {
remove the k (or k%) least important variables;
run random forest with remaining variables, reporting cverror and predictions
}
Run Code Online (Sandbox Code Playgroud)
目前,我已经重新编写rfcv工作如下:
create random forest and extract each variable's importance;
while (nvar > 1) {
remove the k (or k%) least important variables;
tune for the best m for reduced variable set;
run random forest with remaining variables, reporting cverror and predictions;
}
Run Code Online (Sandbox Code Playgroud)
当然,这将运行时间增加了一个数量级.我的问题是这是多么必要(使用玩具数据集很难得到一个想法),以及是否可以在更短的时间内以任何其他方式大致工作.
我正在使用AWS Kinesis Firehose和自定义数据转换.Lambda用Python 3.6编写并返回如下所示的字符串:
{
"records": [
{
"recordId": "...",
"result": "Ok",
"data": "..."
},
{
"recordId": "...",
"result": "Ok",
"data": "..."
},
{
"recordId": "...",
"result": "Ok",
"data": "..."
}
]
}
Run Code Online (Sandbox Code Playgroud)
这个Lambda非常高兴,在将它们返回到Firehose之前记录上面的输出.但是,Firehose的S3 Logs会显示错误:
Invalid output structure: Please check your function and make sure the processed records contain valid result status of Dropped, Ok, or ProcessingFailed.
看一下JS和Java在网络上传播的例子,我不清楚我需要采取哪些不同的做法; 我很困惑.