欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

制造业工业软件&R语言数据挖掘之聚类算法探索

程序员文章站 2024-03-07 16:58:51
...

在铅酸行业中,对于数据中心等地方使用的电池对电池安全等性能要求更严,因此会采用恒功率放电检查手段对电池进行检测,以筛选出不符合工艺要求的电池。

恒功率检测机中的检测软件,能够记录一段时间内一个回路中每个电池的电压和电流数据,这些数据我通过R语言和聚类算法,做了一些简单的数据挖掘。这个案例得到的结论没有为工艺员提供有价值的知识,但是通过这次分析,印证了R语言中聚类函数的正确性,同时也得到了一些有用的经验,为以后同类型的问题提供了思路。

 

步骤

1、数据准备

2、选择算法

3、编程建模

4、评价

 

一、数据准备

1、原始数据表示例截图如下

一张原始表中有4个sheet,每个sheet中有120列数据

制造业工业软件&R语言数据挖掘之聚类算法探索

2、将每一列求平均值,4个sheet整理成一张新表,一共480个数据,示例如图所示

制造业工业软件&R语言数据挖掘之聚类算法探索 

二、选择算法

先用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()

运行结果如下:

制造业工业软件&R语言数据挖掘之聚类算法探索 

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

 

运行结果如下:

制造业工业软件&R语言数据挖掘之聚类算法探索

 制造业工业软件&R语言数据挖掘之聚类算法探索

四、结论评价

1、Kmeans

聚类数变量(center)经过几次调整,发现等于4的时候,聚类图与实际情况非常吻合,从图中来看,每一类的数量大约是120,从这个角度来看,R语言中Kmeans算法是正确的(虽然这个函数已经非常经典,但是只有实际应用才知道其到底是不是有用的)。

本次实验所用数据很少,才480个,而且结果是事先知道的,虽然对实际工作没有指导性意见,但是如果有非常大量的数据,通过这个方法,可以快速发现聚类规律,也许到那个时候就能产生实际作用了。

 

2、DBscan

MinPts 这个变量也是经过了反复调整,发现值等于4的时候是比较合适的。border 代表异常点,用圆圈表示,

seed代表核心点,用三角形表示。从图中可以看出,编号400,平均值1.85附近有很多圆圈。我推测这些圆圈所代表的电池是电压参数异常的,于是我将这个图发给工艺员看,并问他左下角的圆圈是否有问题,他告诉我这几个点对应的电压是属于正常范围内并无问题。因此这个实验也没有对实际业务产生指导作用。但是如果数据量非常大,且事先并无先验知识的情况下,用这样的思路进行数据分析也许是可行的。

 

总结: 在铅酸制造行业有很多设备都能产生大量数据,如果能拿到这些数据,通过聚类算法,发现其中的规律和异常,也许会对生产提供帮助。因此本次实验虽然“无用”,但是为以后的“有用”打下了基础。