小编Tom*_*omR的帖子

GBM 模型生成 NA 结果

我正在尝试运行一个简单的 GBM 分类模型来对随机森林和 SVM 的性能进行基准测试,但是我无法让模型正确评分。它没有抛出错误,但预测都是 NaN。我正在使用来自mlbench. 这是代码:

library(gbm)
library(mlbench)
library(caret)
library(plyr)
library(ada)
library(randomForest)

data(BreastCancer)
bc <- BreastCancer
rm(BreastCancer)

bc$Id <- NULL
bc$Class <- as.factor(mapvalues(bc$Class, c("benign", "malignant"), c("0","1")))

index <- createDataPartition(bc$Class, p = 0.7, list = FALSE)
bc.train <- bc[index, ]
bc.test <- bc[-index, ]

model.gbm <- gbm(Class ~ ., data = bc.train, n.trees = 500)

pred.gbm <- predict(model.gbm, bc.test.ind, n.trees = 500, type = "response")
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮助解决我做错了什么吗?另外,我是否必须转换预测函数的输出?我读过这似乎是 GBM 预测的一个问题。谢谢。

r gbm

4
推荐指数
1
解决办法
5742
查看次数

获取列表python的所有有序组合

我正在尝试生成数字列表的所有n项组合,同时保持数字顺序.例如,如果列表是

[1,2,3,4]
Run Code Online (Sandbox Code Playgroud)

长度为3的有序组合将是:

[1,2,3]
[2,3,4]
[1,2,4]
[1,3,4]
Run Code Online (Sandbox Code Playgroud)

需要说明的是,我必须保持数字顺序,因此[1,4,2]不会是理想的结果.

是否有一个功能可以做到这一点,还是一个快速算法可以完成它?实际列表是111,我将选择100项.谢谢.

python combinations python-itertools

4
推荐指数
1
解决办法
3759
查看次数

使用apply将R循环转换为函数形式

我编写了一些R代码来解析字符串,计算子字符串的出现次数,然后填充一个子字符串计数表.它运行正常,但它对我正在使用的实际数据(这是非常大的)真的很慢,而且我知道很多是因为我使用循环而不是apply系列中的函数.我一直在尝试将此代码转换为功能形式,我没有运气,任何人都可以帮忙吗?我最大的问题是我无法找到一种方法来使用列名来匹配apply结构中的值.这是包含一些玩具数据的代码:

#Create toy data, list of unique substrings
code_frame<-matrix(c(c('a|a|b|c|d'),c('a|b|b|c|c'),c('a|b|c|d|d')),nrow=3,ncol=1)   
all_codes_list<-c('a','b','c','d')

#create data frame with a column for each code and a row for each job
code_count<-as.data.frame(matrix(0, ncol = length(all_codes_list), nrow = nrow(code_frame)))
colnames(code_count)<-all_codes_list

#fill in the code_count data frame with entries where codes occur
for(i in 1:nrow(code_frame)){
    test_string<-strsplit(code_frame[i,1],split="|",fixed=TRUE)[[1]]
    for(j in test_string){
        for(g in 1:ncol(code_count)){
            if(j == all_codes_list[g]){
                code_count[i,g]<-code_count[i,g]+1
                }
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

谢谢.

functional-programming r apply

2
推荐指数
1
解决办法
122
查看次数

尝试通过计算列表列表中的事件来添加到字典值(Python)

我正在尝试在列表列表中获取项目数,并将这些计数添加到Python中的字典中.我已经成功制作了列表(它是各个广告查看记录的所有可能组合的列表)和一个字符,其中键的大小等于可能出现的所有值,现在我需要计算每次出现和更改的次数字典中的值与列表列表中相应键的计数.这就是我所拥有的:

import itertools
stuff=(1,2,3,4)
n=1
combs=list()
while n<=len(stuff):
    combs.append(list(itertools.combinations(stuff,n)))
    n = n+1
viewers=((1,3,4),(1,2,4),(1,4),(1,2),(1,4)) 
recs=list()
h=1
while h<=len(viewers):
    j=1
    while j<=len(viewers[h-1]):
       recs.append(list(itertools.combinations(viewers[h-1],j))) 
       j=j+1
    h=h+1
showcount={}
for list in combs:
    for item in list:
        showcount[item]=0    
for k, v in showcount:
        for item in recs:
            for item in item:
                if item == k:
                    v = v+1
Run Code Online (Sandbox Code Playgroud)

我已经尝试了很多不同的方法来做到这一点,而且我通常会得到"太多的值来解压"错误,或者它根本就没有填充.发布了几个类似的问题,但我对Python很新,并且没有一个真正解决了我需要的东西,足以让我弄明白.非常感谢.

python iteration dictionary list count

1
推荐指数
1
解决办法
2669
查看次数

对于列表R的每个元素,从1:n开始提供

我正在尝试编写一个函数,如果列表元素小于列表中的任何先前值,则会将列表元素添加到另一个列表中.我有一个非矢量化的版本:

myList <- c(14, 35, 12, 54, 67, 8, 32, 3, 78)

minVec <- function(x){
# Return a list of all numbers from x which are less than any previous number in the list
  outList <- list(x[1])
  for(i in 2:length(x)){
    if(x[i] < min(x[1:i - 1])){
      outList <- c(outList, x[i])}
  }
  return(unlist(outList))
}

minVec(myList)
Run Code Online (Sandbox Code Playgroud)

但我需要在很多列表上多次这样做,我想用lapply加速它.问题是,对于n列表的每个元素,x我需要能够找到子集的min x[1:n - 1].这可以用lapply(或其他矢量化)来完成吗?我怎么说"对于这个列表的每个元素,如果元素小于列表中的任何先前值,则将元素添加到新列表"?

functional-programming r vectorization apply lapply

1
推荐指数
1
解决办法
210
查看次数

使用变量名称键将项添加到字典python

我从一个项目列表中列出了n长度的可能组合列表,现在我想创建一个字典,其中每个键是可能组合列表列表中的一个项目,所以我可以开始计算多少次每个组合发生在一组观察中(编程关联规则引擎的早期阶段).这就是我所拥有的:

import itertools
stuff=(1,2,3,4)
n=1
combs=list()
while n<=len(stuff):
    combs.append(list(itertools.combinations(stuff,n)))
    n = n+1
print combs
viewers={'Jim':(1,3,4), 'Bob':(1,2,4), 'Jerry':(1,4), 'Ben':(2), 'Sal':(1,4)}  
showcount={}
for list in combs:
    for item in list:
        showcount["%s",%(item)]=0
print viewers
print showcount
Run Code Online (Sandbox Code Playgroud)

如何让项目显示为字典中的键?"(1,2,4)"似乎是一个关键值对,以便以后可以计数的次数:因此,例如,我想组合"0(1,2,4)".我对Python很陌生,但我确实找到了答案而找不到答案.抱歉,如果这已经得到解答,我就是找不到它.

python dictionary list

0
推荐指数
1
解决办法
501
查看次数

在逻辑回归中输入整个数据框作为自变量

可能重复:
构建模型时对许多变量进行简短的公式调用

我有一个很大的数据框(112个变量),我想用R做逐步逻辑回归.我知道如何设置glm模型和stepAIC模型,但我宁愿不输入所有的标题来输入自变量.是否有一种快速方法可以将glm模型作为独立变量提供给整个数据框,以便将每个列识别为包含在模型中的x变量?我试过了:

ft<-glm(MFDUdep~MFDUind, family=binomial)
Run Code Online (Sandbox Code Playgroud)

但它不起作用(错误的数据类型).MFDUdep和MFDUind都是数据帧,MFDUind包含111个'x'变量并MFDUdep包含单个"y".

regression r dataframe

0
推荐指数
1
解决办法
2492
查看次数