如何解决序列设计树有没有这样的包或代码
例如,我有数据
make.fake.data <- function(){
X <- round(matrix(runif(20,5,10),ncol = 4),1)
colnames(X) <- paste0("var",1:ncol(X))
return(X)}
set.seed(99)
li <- list() # data
for(i in 1:3){
X <- list( dat = make.fake.data(),target = sample(c("yes","no"),1) )
li <- append(li,list(X))
}
li
[[1]]
[[1]]$dat
var1 var2 var3 var4
[1,] 7.9 9.8 7.7 8.2
[2,] 5.6 8.4 7.5 6.8
[3,] 8.4 6.5 6.0 5.5
[4,] 10.0 6.8 8.2 5.5
[5,] 7.7 5.9 8.4 5.9
[[1]]$target
[1] "NO"
[[2]]
[[2]]$dat
var1 var2 var3 var4
[1,] 5.4 5.0 6.6 8.5
[2,] 9.1 9.1 6.7 9.1
[3,] 8.0 5.0 7.7 8.0
[4,] 8.9 6.0 5.2 9.9
[5,] 6.8 7.5 7.2 9.3
[[2]]$target
[1] "YES"
[[3]]
[[3]]$dat
var1 var2 var3 var4
[1,] 8.9 7.1 8.8 7.7
[2,] 9.7 7.9 9.9 9.6
[3,] 7.4 5.6 6.5 6.9
[4,] 9.6 8.5 9.3 9.6
[5,] 6.8 9.1 5.4 6.4
[[3]]$target
[1] "YES"
我想生成这样的规则
这些规则不使用矩阵中的索引,只使用事件序列
是否有可以创建此类规则的包或代码?
UPD============================================
谢谢你的回答,这个方法我知道,但是这个方法没有考虑规则出现的先后顺序,这个对我来说很重要。
我会尽力澄清.. 我正在寻找一种看起来像“关联规则序列”但采用普通逻辑规则形式的方法
无论如何,如果我没有收到想要的答案,我会把奖励还给你。
解决方法
可能有很多这样的规则,并且不清楚您是否希望规则中出现某些特定属性。但是,您可以尝试使用 R 中的决策树包来使用监督机器学习(分类)生成规则(规则是概率性的,从某种意义上说,它们可能不会在 100% 的时间内都正确),如下面的代码所示:
library(rpart)
library(rpart.plot)
df <- NULL
for (i in 1:length(li)) {
df1 <- cbind.data.frame(li[[i]]$dat,y=li[[i]]$target)
df <- rbind(df,df1)
}
rpart(y~.,df,control=rpart.control(minsplit=2,cp=0.001))
# node),split,n,loss,yval,(yprob)
# * denotes terminal node
# 1) root 15 5 yes (0.33333333 0.66666667)
# 2) var4< 6.15 3 0 no (1.00000000 0.00000000) *
# 3) var4>=6.15 12 2 yes (0.16666667 0.83333333)
# 6) var2>=9.45 1 0 no (1.00000000 0.00000000) *
# 7) var2< 9.45 11 1 yes (0.09090909 0.90909091)
# 14) var1< 6.2 2 1 no (0.50000000 0.50000000)
# 28) var1>=5.5 1 0 no (1.00000000 0.00000000) *
# 29) var1< 5.5 1 0 yes (0.00000000 1.00000000) *
# 15) var1>=6.2 9 0 yes (0.00000000 1.00000000) *
prp(tr)
从上面的决策树(图中的数字四舍五入到小数点后 1 位)可以看出,生成的一些规则(在数据集上 100% 的概率为真,但不一定保持顺序)可能是对你有用的是(你可能想根据你的要求修改规则):
var4 = 9.45 & var1 >= 6.2 : '是'
var4 = 9.45 & 5.5
var4 = 9.45 & var1
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。