序列设计树有没有这样的包或代码

如何解决序列设计树有没有这样的包或代码

Here 我问的问题是如何在特征矩阵中搜索触发序列的规则

我想知道是否有办法自动查找/生成这样的规则..

例如,我有数据

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

每个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"

我想生成这样的规则

enter image description here

这些规则不使用矩阵中的索引,只使用事件序列

是否有可以创建此类规则的包或代码

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)

enter image description here

从上面的决策树(图中的数字四舍五入到小数点后 1 位)可以看出,生成的一些规则(在数据集上 100% 的概率为真,但不一定保持顺序)可能是对你有用的是(你可能想根据你的要求修改规则):

var4 = 9.45 & var1 >= 6.2 : '是'

var4 = 9.45 & 5.5

var4 = 9.45 & var1

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?