赞
踩
本案例针对于铅酸电池行业的设备故障进行R语言数据挖掘:找到故障之间的时间先后规律,比如A故障发生后,多大概率会发生B故障。
目录
步骤
1、数据准备
2、选择算法
3、编程建模
4、分析
5、评价
1、本案例分析的数据是铸焊机的故障记录;将MES中所有铸焊机维修记录导出成EXCEL,一共338条。
记录中包括:故障描述、故障部位、处理方法及结果。
excel 截图如下
2、将故障描述、故障部位、处理方法及结果整理成TXT格式
3、用R语言的分词函数,将文本拆分成关键词
R语言代码如下
- install.packages("jiebaR")
- library("jiebaR")
- setwd('E:/')
- wk = worker(bylines = T,user="设备故障字典.txt",stop_word = "停用词字典.txt")
- wk['./故障描述.txt']
提醒: 分词算法中,最关键的是字典表,包括用户自定义表和停用字典表。如果没有自定义表,最后分词的效果会非常差。
4、将所有拆分后的关键词连接起来,整理在EXCEL中,如图所示
5、将EXCEL导出成TXT文本,如图3所示
本次案例选择了Spade算法:序列关联分析的目的是要从所收集到的众多事务序列中,发现某个事务序列连续出现的规律,找到事务发展的前后关联性,这种前后关联性通常与时间有关。
R语言代码:
- library(arules) #导入R包
- library(Matrix) #导入R包
- library(arulesSequences) #导入R包
- setwd('E:/') #设置工作路径
- mytrans<-read_baskets(con="./铸焊序列.txt",sep=",",info = c("sequenceID","eventID"),encoding = "UTF-8") #将TXT文件导入R,eid要求在每个seqid下无重复且严格排序
- inspect(mytrans[1:10,]) #显示前十行数据
- str(mytrans) #显示数据格式
-
- fset<-cspade(data=mytrans,parameter = list(support=0.55,maxsize=5,maxlen=5,maxgap=80)) #搜索频繁项集,此处的三个参数经过了多次调整
- inspect(fset[1:100,]) #显示前100行
- str(fset) #显示数据格式
- rules<-ruleInduction(x=fset,confidence=0.5) #在频繁序列的基础上派生序列关联规则
- inspect(rules) #显示数据集
- rulesd<-as(rules,"data.frame") #转换成数据框格式
-
- library(xlsx) #导入R包
- write.xlsx(rulesd,file = "./3.xlsx",row.names = TRUE) #序列规则导出成EXCEL
铸焊机序列关联规则如下图所示
将提升度大于1的筛选出来再进一步整理,整理后的规则如下图所示
规则说明:左边是前项实物,右边是后项事务,以第一项为例: 加热管→铅泵管。加热管坏了之后,有较大概率是铅泵管会坏,这里先不去探究具体的逻辑成因,只是将其中的规律提炼出来。
从上步的分析来看,大部分规则从实际业务来看是正确的。 这个案例的应用价值可以体现在:提醒设备、车间在维修和保养过程中,有关联性的操作,比如机修工维修加热管的时候,顺便检查一下铅泵管、铅泵、模具。尽量将后者故障的可能性降至最低。
改进点:1、代码中的参数需要更多的调试,才能找到一个较优化的状态。2、数据量收集到1000条以上,生成的规则可能会更有代表性。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。