是否有一个包可以用来获得R中目标结果的规则

时间:2014-05-28 07:30:08

标签: r optimization arules

例如,在这个给定的数据集中,我想得到每个变量的最佳值,它将产生预设值“百分比”:例如,我需要“百分比”的值将是> = 0.7 所以在这种情况下,结果应该是这样的:

birds >=5,1<wolfs<=3 , 2<=snakes <=4

示例数据集:

dat <- read.table(text = "birds    wolfs     snakes  percentage
3         8          7         0.50
1         2          3         0.33
5         1          1         0.66
6         3          2         0.80
5         2          4         0.74",header = TRUE

我无法使用决策树,因为我有一个大型数据框,我无法正确查看所有树。我尝试了*arules*包,但它要求所有变量都是因子,我有因子,逻辑和连续变量的混合数据集,我想保持变量和独立变量继续。我也需要“百分比“变量是我想要优化的唯一变量。 我用*arules*包编写的代码是:

library(arules)
dat$birds<-as.factor(dat$birds)
dat$wolfs<-as.factor(dat$wolfs)
dat$snakes<-as.factor(dat$snakes)
dat$percentage<-as.factor(dat$percentage)
rules<-apriori(dat, parameter = list(minlen=2, supp=0.005, conf=0.8))

谢谢

1 个答案:

答案 0 :(得分:1)

我可能误解了这个问题但是为了获得每个变量的最大值而限制为percentage >= 0.7你可以这样做:

lapply(dat[dat$percentage >= 0.7, 1:3], max)

$birds
[1] 6

$wolfs
[1] 3

$snakes
[1] 4

评论后编辑:

所以也许这就是你想要的更多:

> as.data.frame(lapply(dat[dat$percentage >= 0.7,1:3], function(y) c(min(y), max(y))))
  birds wolfs snakes
1     5     2      2
2     6     3      4

如果percentage >=0.7

,它将给出表示变量范围的最小值和最大值

如果这完全没有你要达到的目标,我可能不是帮助你的合适人选。

编辑#2:

> as.data.frame(lapply(dat[dat$percentage >= 0.7,1:3], function(y) c(min(y), max(y), length(y), length(y)/nrow(dat))))
  birds wolfs snakes
1   5.0   2.0    2.0
2   6.0   3.0    4.0
3   2.0   2.0    2.0
4   0.4   0.4    0.4

第1行:分钟 第2行:最大 第3行:满足条件的观测数量 第4行:满足条件的观测百分比(相对于总观测值)