以下以R语言为例为大家介绍关联规则在煤矿隐患管理的应用
dat1=read.csv("安全隐患数据FP-Growth.csv",header=T ,stringsAsFactors=T)read data
head(dat1)have a look at data
隐患日期 隐患单位 隐患条数 汇报人 隐患地点 隐患地点.1
1 2009/1/2 综采队 5条 张立新 1106工作面 工作面
2 2009/1/2 综采队 赵军孙旭光 1106工作面 工作面
3 2009/1/2 综采队 郎志俊赵建军 1106工作面 工作面
4 2009/1/2 机电二队 4条 宋慧刚李思光 一采区胶带巷 胶带巷
5 2009/1/2 机电二队 4条 宋慧刚李思光 一采区胶带巷 胶带巷
6 2009/1/2 机电二队 4条 宋慧刚李思光 一采区胶带巷 胶带巷
处理措施 处理时间 负责人 隐患描述
1 处理 2009/1/3 赵海根 1、有两组支架高压胶管破
2 处理开水幕 2009/1/3 陈小旦 1、皮带机头硬架尾部压柱不吃劲
3 调整管理 2009/1/3 陈小旦 2、60-66架煤墙松软,有片帮现象
4 整改 2009/1/3 崔庆忠 1、主皮带上坡处第一道挡车器有一个肖未插到位
5 整改 2009/1/3 崔庆忠 2、主皮带机头消防水管未码放
6 整改 2009/1/3 崔庆忠 4、主皮带机头有一盏灯一头未吊挂
隐患主题 隐患时间
1 支架问题 第一季度
2 皮带机问题 第一季度
3 片帮问题 第一季度
4 皮带机问题 第一季度
5 火灾问题 第一季度
6 皮带机问题 第一季度
隐患主题、隐患时间、隐患地点和隐患单位
dat1=as(dat1[c("隐患主题","隐患时间","隐患地点.1","隐患单位")], "transactions")
inspect(frequentsets[1:10]) 察看求得的频繁项集 review frequent sets
items support
[1] {隐患主题=片帮问题,隐患地点.1=工作面} 0.05084388
[2] {隐患地点.1=排水巷,隐患单位=综掘二队} 0.05327004
[3] {隐患主题=支架问题,隐患地点.1=工作面} 0.06329114
[4] {隐患时间=第二季度,隐患地点.1=猴车巷} 0.05126582
[5] {隐患地点.1=猴车巷,隐患单位=综掘三队} 0.08829114
[6] {隐患时间=第二季度,隐患单位=综掘一队} 0.05000000
[7] {隐患地点.1=风巷,隐患单位=综掘一队} 0.08164557
[8] {隐患时间=第二季度,隐患单位=综掘二队} 0.05527426
[9] {隐患时间=第二季度,隐患单位=综掘三队} 0.05991561
[10] {隐患地点.1=工作面,隐患单位=综采队} 0.13491561
根据支持度对求得的频繁项集排序并察看(等价于inspect(sort(frequentsets)[1:10])
items support
[1] {隐患时间=第二季度} 0.3750000
[2] {隐患地点.1=工作面} 0.2995781
[3] {隐患时间=第一季度} 0.2668776
[4] {隐患时间=第三季度} 0.1997890
[5] {隐患单位=综安队} 0.1775316
[6] {隐患地点.1=风巷} 0.1585443
[7] {隐患地点.1=工作面,隐患单位=综安队} 0.1521097
[8] {隐患主题=锚杆问题} 0.1464135
[9] {隐患时间=第四季度} 0.1437764
[10] {隐患主题=皮带机问题} 0.1431435
fp growth tree Mine association rules
fptree=function (data, parameter = NULL, appearance = NULL, control = NULL)
{
data <- as(data, "transactions")
items <- data@data
if (is(appearance, "list"))
appearance <- as(c(appearance, list(labels = itemLabels(data))),
"APappearance")
appearance <- as(appearance, "APappearance")
control <- as(control, "APcontrol")
parameter <- as(parameter, "APparameter")
if (control@verbose) {
print(parameter)
cat("\nAlgorithmic control:\n")
print(control)
}
abs_supp <- as.integer(parameter@support * length(data))
if (control@verbose) {
cat("\nAbsolute minimum support count:", abs_supp, "\n\n")
}
call <- match.call()
result@info <- list(data = call$data, ntransactions = length(data),
support = parameter@support, confidence = parameter@confidence)
if (is(result, "rules")) {
validObject(result@lhs@data)
validObject(result@rhs@data)
}
else {
validObject(result@items@data)
}
result
}
rules=fptree(dat1,parameter=list(support=0.06,confidence=0.1,minlen=2)) 求关联规则
summary(rules)Inspect transactions
set of 25 rules
rule length distribution (lhs + rhs):sizes
2 3
22 3
Min. 1st Qu. Median Mean 3rd Qu. Max.
2.00 2.00 2.00 2.12 2.00 3.00
summary of quality measures:
support confidence lift
Min. :0.06276 Min. :0.1868 Min. :0.9775
1st Qu.:0.06456 1st Qu.:0.2928 1st Qu.:1.0806
Median :0.07078 Median :0.4244 Median :1.3247
Mean :0.08642 Mean :0.4940 Mean :2.5253
3rd Qu.:0.08829 3rd Qu.:0.6643 3rd Qu.:3.2100
Max. :0.15211 Max. :0.9676 Max. :7.2803
mining info:
data ntransactions support confidence
dat1 9480 0.06 0.1
inspect(head(rules))
lhs rhs support confidence
[1] {隐患主题=支架问题} => {隐患地点.1=工作面} 0.06329114 0.9600000
[2] {隐患地点.1=工作面} => {隐患主题=支架问题} 0.06329114 0.2112676
[3] {隐患地点.1=猴车巷} => {隐患单位=综掘三队} 0.08829114 0.9676301
[4] {隐患单位=综掘三队} => {隐患地点.1=猴车巷} 0.08829114 0.6642857
[5] {隐患单位=综掘一队} => {隐患地点.1=风巷} 0.08164557 0.7267606
[6] {隐患地点.1=风巷} => {隐患单位=综掘一队} 0.08164557 0.5149701
lift
[1] 3.204507
[2] 3.204507
[3] 7.280264
[4] 7.280264
[5] 4.583959
[6] 4.583959
quality(head(rules))
support confidence lift
1 0.06329114 0.9600000 3.204507
2 0.06329114 0.2112676 3.204507
3 0.08829114 0.9676301 7.280264
4 0.08829114 0.6642857 7.280264
5 0.08164557 0.7267606 4.583959
6 0.08164557 0.5149701 4.583959
rules <- sort(rules, by="support")
inspect(head(rules, n=40))Look at rules with highest support
lhs rhs
[1] {隐患单位=综安队} => {隐患地点.1=工作面}
[2] {隐患地点.1=工作面} => {隐患单位=综安队}
[3] {隐患单位=综采队} => {隐患地点.1=工作面}
[4] {隐患地点.1=工作面} => {隐患单位=综采队}
[5] {隐患地点.1=工作面} => {隐患时间=第二季度}
[6] {隐患时间=第二季度} => {隐患地点.1=工作面}
[7] {隐患地点.1=猴车巷} => {隐患单位=综掘三队}
[8] {隐患单位=综掘三队} => {隐患地点.1=猴车巷}
[9] {隐患时间=第一季度} => {隐患地点.1=工作面}
[10] {隐患地点.1=工作面} => {隐患时间=第一季度}
[11] {隐患单位=综掘一队} => {隐患地点.1=风巷}
[12] {隐患地点.1=风巷} => {隐患单位=综掘一队}
[13] {隐患单位=综安队} => {隐患时间=第二季度}
[14] {隐患时间=第二季度} => {隐患单位=综安队}
[15] {隐患地点.1=风巷} => {隐患时间=第二季度}
[16] {隐患时间=第二季度} => {隐患地点.1=风巷}
[17] {隐患地点.1=工作面,隐患单位=综安队} => {隐患时间=第二季度}
[18] {隐患时间=第二季度,隐患单位=综安队} => {隐患地点.1=工作面}
[19] {隐患时间=第二季度,隐患地点.1=工作面} => {隐患单位=综安队}
[20] {隐患时间=第三季度} => {隐患地点.1=工作面}
[21] {隐患地点.1=工作面} => {隐患时间=第三季度}
[22] {隐患主题=支架问题} => {隐患地点.1=工作面}
[23] {隐患地点.1=工作面} => {隐患主题=支架问题}
[24] {隐患单位=综安队} => {隐患时间=第一季度}
[25] {隐患时间=第一季度} => {隐患单位=综安队}
support confidence lift
[1] 0.15210970 0.8568033 2.8600336
[2] 0.15210970 0.5077465 2.8600336
[3] 0.13491561 0.9616541 3.2100286
[4] 0.13491561 0.4503521 3.2100286
[5] 0.10981013 0.3665493 0.9774648
[6] 0.10981013 0.2928270 0.9774648
[7] 0.08829114 0.9676301 7.2802642
[8] 0.08829114 0.6642857 7.2802642
[9] 0.08639241 0.3237154 1.0805712
[10] 0.08639241 0.2883803 1.0805712
[11] 0.08164557 0.7267606 4.5839588
[12] 0.08164557 0.5149701 4.5839588
[13] 0.07078059 0.3986928 1.0631808
[14] 0.07078059 0.1887482 1.0631808
[15] 0.07004219 0.4417831 1.1780883
[16] 0.07004219 0.1867792 1.1780883
[17] 0.06455696 0.4244105 1.1317614
[18] 0.06455696 0.9120715 3.0445205
[19] 0.06455696 0.5878963 3.3115012
[20] 0.06339662 0.3173178 1.0592159
[21] 0.06339662 0.2116197 1.0592159
[22] 0.06329114 0.9600000 3.2045070
[23] 0.06329114 0.2112676 3.2045070
[24] 0.06276371 0.3535354 1.3247095
[25] 0.06276371 0.2351779 1.3247095
Look at rules with highest support
lhs rhs
[1] {隐患地点.1=猴车巷} => {隐患单位=综掘三队}
[2] {隐患单位=综采队} => {隐患地点.1=工作面}
[3] {隐患主题=支架问题} => {隐患地点.1=工作面}
[4] {隐患时间=第二季度,隐患单位=综安队} => {隐患地点.1=工作面}
[5] {隐患单位=综安队} => {隐患地点.1=工作面}
[6] {隐患单位=综掘一队} => {隐患地点.1=风巷}
[7] {隐患单位=综掘三队} => {隐患地点.1=猴车巷}
[8] {隐患时间=第二季度,隐患地点.1=工作面} => {隐患单位=综安队}
[9] {隐患地点.1=风巷} => {隐患单位=综掘一队}
[10] {隐患地点.1=工作面} => {隐患单位=综安队}
[11] {隐患地点.1=工作面} => {隐患单位=综采队}
[12] {隐患地点.1=风巷} => {隐患时间=第二季度}
[13] {隐患地点.1=工作面,隐患单位=综安队} => {隐患时间=第二季度}
[14] {隐患单位=综安队} => {隐患时间=第二季度}
[15] {隐患地点.1=工作面} => {隐患时间=第二季度}
[16] {隐患单位=综安队} => {隐患时间=第一季度}
[17] {隐患时间=第一季度} => {隐患地点.1=工作面}
[18] {隐患时间=第三季度} => {隐患地点.1=工作面}
[19] {隐患时间=第二季度} => {隐患地点.1=工作面}
[20] {隐患地点.1=工作面} => {隐患时间=第一季度}
[21] {隐患时间=第一季度} => {隐患单位=综安队}
[22] {隐患地点.1=工作面} => {隐患时间=第三季度}
[23] {隐患地点.1=工作面} => {隐患主题=支架问题}
[24] {隐患时间=第二季度} => {隐患单位=综安队}
[25] {隐患时间=第二季度} => {隐患地点.1=风巷}
support confidence lift
[1] 0.08829114 0.9676301 7.2802642
[2] 0.13491561 0.9616541 3.2100286
[3] 0.06329114 0.9600000 3.2045070
[4] 0.06455696 0.9120715 3.0445205
[5] 0.15210970 0.8568033 2.8600336
[6] 0.08164557 0.7267606 4.5839588
[7] 0.08829114 0.6642857 7.2802642
[8] 0.06455696 0.5878963 3.3115012
[9] 0.08164557 0.5149701 4.5839588
[10] 0.15210970 0.5077465 2.8600336
[11] 0.13491561 0.4503521 3.2100286
[12] 0.07004219 0.4417831 1.1780883
[13] 0.06455696 0.4244105 1.1317614
[14] 0.07078059 0.3986928 1.0631808
[15] 0.10981013 0.3665493 0.9774648
[16] 0.06276371 0.3535354 1.3247095
[17] 0.08639241 0.3237154 1.0805712
[18] 0.06339662 0.3173178 1.0592159
[19] 0.10981013 0.2928270 0.9774648
[20] 0.08639241 0.2883803 1.0805712
[21] 0.06276371 0.2351779 1.3247095
[22] 0.06339662 0.2116197 1.0592159
[23] 0.06329114 0.2112676 3.2045070
[24] 0.07078059 0.1887482 1.0631808
[25] 0.07004219 0.1867792 1.1780883
Look at rules with highest lift
lhs rhs
[1] {隐患地点.1=猴车巷} => {隐患单位=综掘三队}
[2] {隐患单位=综掘三队} => {隐患地点.1=猴车巷}
[3] {隐患单位=综掘一队} => {隐患地点.1=风巷}
[4] {隐患地点.1=风巷} => {隐患单位=综掘一队}
[5] {隐患时间=第二季度,隐患地点.1=工作面} => {隐患单位=综安队}
[6] {隐患单位=综采队} => {隐患地点.1=工作面}
[7] {隐患地点.1=工作面} => {隐患单位=综采队}
[8] {隐患地点.1=工作面} => {隐患主题=支架问题}
[9] {隐患主题=支架问题} => {隐患地点.1=工作面}
[10] {隐患时间=第二季度,隐患单位=综安队} => {隐患地点.1=工作面}
[11] {隐患单位=综安队} => {隐患地点.1=工作面}
[12] {隐患地点.1=工作面} => {隐患单位=综安队}
[13] {隐患单位=综安队} => {隐患时间=第一季度}
[14] {隐患时间=第一季度} => {隐患单位=综安队}
[15] {隐患地点.1=风巷} => {隐患时间=第二季度}
[16] {隐患时间=第二季度} => {隐患地点.1=风巷}
[17] {隐患地点.1=工作面,隐患单位=综安队} => {隐患时间=第二季度}
[18] {隐患时间=第一季度} => {隐患地点.1=工作面}
[19] {隐患地点.1=工作面} => {隐患时间=第一季度}
[20] {隐患单位=综安队} => {隐患时间=第二季度}
[21] {隐患时间=第二季度} => {隐患单位=综安队}
[22] {隐患时间=第三季度} => {隐患地点.1=工作面}
[23] {隐患地点.1=工作面} => {隐患时间=第三季度}
[24] {隐患地点.1=工作面} => {隐患时间=第二季度}
[25] {隐患时间=第二季度} => {隐患地点.1=工作面}
support confidence lift
[1] 0.08829114 0.9676301 7.2802642
[2] 0.08829114 0.6642857 7.2802642
[3] 0.08164557 0.7267606 4.5839588
[4] 0.08164557 0.5149701 4.5839588
[5] 0.06455696 0.5878963 3.3115012
[6] 0.13491561 0.9616541 3.2100286
[7] 0.13491561 0.4503521 3.2100286
[8] 0.06329114 0.2112676 3.2045070
[9] 0.06329114 0.9600000 3.2045070
[10] 0.06455696 0.9120715 3.0445205
[11] 0.15210970 0.8568033 2.8600336
[12] 0.15210970 0.5077465 2.8600336
[13] 0.06276371 0.3535354 1.3247095
[14] 0.06276371 0.2351779 1.3247095
[15] 0.07004219 0.4417831 1.1780883
[16] 0.07004219 0.1867792 1.1780883
[17] 0.06455696 0.4244105 1.1317614
[18] 0.08639241 0.3237154 1.0805712
[19] 0.08639241 0.2883803 1.0805712
[20] 0.07078059 0.3986928 1.0631808
[21] 0.07078059 0.1887482 1.0631808
[22] 0.06339662 0.3173178 1.0592159
[23] 0.06339662 0.2116197 1.0592159
[24] 0.10981013 0.3665493 0.9774648
[25] 0.10981013 0.2928270 0.9774648