制造业工业软件&R语言数据挖掘之聚类算法探索
在铅酸行业中,对于数据中心等地方使用的电池对电池安全等性能要求更严,因此会采用恒功率放电检查手段对电池进行检测,以筛选出不符合工艺要求的电池。
恒功率检测机中的检测软件,能够记录一段时间内一个回路中每个电池的电压和电流数据,这些数据我通过R语言和聚类算法,做了一些简单的数据挖掘。这个案例得到的结论没有为工艺员提供有价值的知识,但是通过这次分析,印证了R语言中聚类函数的正确性,同时也得到了一些有用的经验,为以后同类型的问题提供了思路。
步骤
1、数据准备
2、选择算法
3、编程建模
4、评价
一、数据准备
1、原始数据表示例截图如下
一张原始表中有4个sheet,每个sheet中有120列数据
2、将每一列求平均值,4个sheet整理成一张新表,一共480个数据,示例如图所示
二、选择算法
先用Kmeans算法进行聚类,再用DBscan算法分析异常点
三、编程建模
1、Kmeans算法函数:kmeans
R语言代码如下:
library(openxlsx)
setwd('E:/')
data1<-read.xlsx("9.16.xlsx",sheet=1)
library(stats)
KM<-kmeans(x=data1,centers=4,nstart = 1)
KM$centers
KM$cluster
fitted(KM)
data1$KM<-as.factor(KM$cluster)
library(ggplot2)
ggplot(data1,aes(x=编号,y=平均值,colour=as.factor(data1$KM)),pch = 3, cex=1)+geom_point()
运行结果如下:
2、DBscan算法函数:dbscan
R语言代码如下:
library(fpc)
library(openxlsx)
setwd('E:/')
data1<-read.xlsx("9.16.xlsx",sheet=1)
db<-dbscan(data=data1,eps=0.17,MinPts =4,scale=TRUE)
plot(db,data1,cex=0.6)
db
运行结果如下:
四、结论评价
1、Kmeans
聚类数变量(center)经过几次调整,发现等于4的时候,聚类图与实际情况非常吻合,从图中来看,每一类的数量大约是120,从这个角度来看,R语言中Kmeans算法是正确的(虽然这个函数已经非常经典,但是只有实际应用才知道其到底是不是有用的)。
本次实验所用数据很少,才480个,而且结果是事先知道的,虽然对实际工作没有指导性意见,但是如果有非常大量的数据,通过这个方法,可以快速发现聚类规律,也许到那个时候就能产生实际作用了。
2、DBscan
MinPts 这个变量也是经过了反复调整,发现值等于4的时候是比较合适的。border 代表异常点,用圆圈表示,
seed代表核心点,用三角形表示。从图中可以看出,编号400,平均值1.85附近有很多圆圈。我推测这些圆圈所代表的电池是电压参数异常的,于是我将这个图发给工艺员看,并问他左下角的圆圈是否有问题,他告诉我这几个点对应的电压是属于正常范围内并无问题。因此这个实验也没有对实际业务产生指导作用。但是如果数据量非常大,且事先并无先验知识的情况下,用这样的思路进行数据分析也许是可行的。
总结: 在铅酸制造行业有很多设备都能产生大量数据,如果能拿到这些数据,通过聚类算法,发现其中的规律和异常,也许会对生产提供帮助。因此本次实验虽然“无用”,但是为以后的“有用”打下了基础。
上一篇: JAVA中的final关键字用法实例详解