概念:聚类算法是一种无监督学习任务,用于将对象分到具有高度相似性的聚类中.
举例:N个人有N多爱好,每个爱好提供出一个贡献值(或者称之为特征值),至于这个贡献值怎么得出目前不讨论.那么聚类算法就能实现根据这些特征值,把这N个人进行分组.
本人所在行业为轨道交通行业,致力于利用轴箱传感器采集到的数据进行故障诊断和预测.文中提到的数据源自真实采集数据.每行16个浮点型数值.
具体为: 最大值,最小值,平均值,均方值,有效值,方差,偏度,峭度,峰值,方根幅值,绝对平均值,波形指标,脉冲指标,裕度指标,峭度指标.
数据共计24000多条,假设人为复核,一条一条去过,那么必然浪费很多时间.那么如何才能更有效率呢?
答案自然是使用Kmeans对数据进行聚类.这里使用的数据已经清洗过,数据清洗概念不知者自行脑补.
接下来上代码
public void digest(String path) { SparkConf conf = new SparkConf().setAppName("K-means Example"); conf.setMaster("local"); JavaSparkContext sc = new JavaSparkContext(conf); // Load and parse data JavaRDD<String> data = sc.textFile(path); JavaRDD<Vector> parsedData = data.map(new Function<String, Vector>() { private static final long serialVersionUID = 1L; public Vector call(String s) { String[] sarray = s.split(" "); double[] values = new double[sarray.length]; for (int i = 0; i < sarray.length; i++) values[i] = Double.parseDouble(sarray[i]); return Vectors.dense(values); } }); parsedData.cache(); // Cluster the data into two classes using KMeans int numClusters = 2; int numIterations = 20; KMeansModel clusters = KMeans.train(parsedData.rdd(), numClusters, numIterations); // Evaluate clustering by computing Within Set Sum of Squared Errors double WSSSE = clusters.computeCost(parsedData.rdd()); System.out.println("Within Set Sum of Squared Errors = " + WSSSE); // Save and load model clusters.save(sc.sc(), "TrainningModel"); sc.close(); }
第一步就是要对数据进行处理,并进行训练,最后保存模型.模型保存在了TrainningModel文件夹中.此时,我们已经有了训练后保存的模型,那么就可以拿这个模型来判定数据.具体判定方法如下
public void awardFrData(String path) { SparkConf conf = new SparkConf().setAppName("K-means Example"); conf.setMaster("local"); JavaSparkContext sc = new JavaSparkContext(conf); KMeansModel sameModel = KMeansModel.load(sc.sc(), "TrainningModel"); JavaRDD<String> data = sc.textFile(path); JavaRDD<Vector> test = data.map(new Function<String, Vector>() { private static final long serialVersionUID = 1L; public Vector call(String s) { String[] sarray = s.split(" "); double[] values = new double[sarray.length]; for (int i = 0; i < sarray.length; i++) values[i] = Double.parseDouble(sarray[i]); return Vectors.dense(values); } }); JavaRDD<Integer> rst = sameModel.predict(test); rst.repartition(1).saveAsTextFile("Result"); }
上面代码将数据处理成RDD后,进行预测并返回了一个RDD,代码默认保存在了Result文件夹中.
打开Result文件夹中的part-00000文件,即可看到每行一个数字的数据.0和1.
最后,我们可以通过查看0,1标签的数据百分比来进行下一步的数据分析.
我在进行数据分析时,尝试对数据进行三类聚类话划分.发现0标签的数据占比在99%,1和2占比在1%左右.我提供的特征数据是用来诊断轴承是否故障的基本特征数据.当聚类算法把这些数据聚类后,很明显,那个1%的数据才是最可疑的数据.因为大多数时候,轴承是正常的,所以数据体现的也是相似的.
为了检验聚类真实效果,我特意将三类数据中各抽出一条进行图表对比.效果如下.
其中Row24460是0标签,Row24462是1标签,Row24515是2标签.明显看出三组数据具有很明显的特征.
结论,在数据没有标签化之前,如果需要对数据分析.那么第一步是清洗数据,第二部是尝试对数据进行聚类.当然聚类也是一种数据清洗.在这两万多条数据中,我已经择出去了一条峭度指标达到两万多的数据.在使用聚类分析时,它被孤零零的划分为一类.我把视为异常数据.
因为这些数据采集过程中没有报出过故障,所以没有办法对其标签化.也就没有办法进行神经网络训练.但值得欣慰的是,使用Kmeans能够得出1%的数据与众不同,这个结果还是很让人满意的.
我接下来的任务就是通过尝试分析这1%的数据,对比原始数据的公里标,来复核是不是因为某段铁轨轨道波磨,或者有损伤导致的振动数据异常.
最后附上整理后的表格文件.所有对数据分析有兴趣的可以直接拿去使用.见附件.
相关推荐
在描述中,“毕业设计&课设--毕业设计源码-基于Spark的Kmeans聚类算法优化”重申了项目的核心内容,即利用Spark对KMeans算法进行了某种形式的优化。这可能涉及到提高算法的效率,比如减少迭代次数、提升并行计算性能...
- **数据预处理**:对数据进行标准化或归一化,可以使不同尺度的数据在同一水平上比较,提高聚类效果。 - **性能优化**:Spark提供了策略如BlockManager和RDD缓存来提高KMeans的执行效率。合理利用这些机制,可以...
1. 并行化处理:利用Spark的RDD(弹性分布式数据集)进行并行计算,减少数据处理的时间。 2. 数据分区:根据数据分布和集群架构合理分配数据,提高计算效率。 3. 近似最近邻(Approximate Nearest Neighbor, ANN)...
综上所述,精通Apache Spark涉及到对Spark Core的底层架构理解、对Spark SQL处理结构化数据的能力以及使用MLlib进行高效机器学习任务的能力。掌握Spark能够为处理大数据提供强大的支持,是当前大数据处理领域的必备...
在大数据分析领域,Apache Spark作为一个高效、通用的并行计算框架,因其强大的处理能力和易用性而备受青睐。本主题将深入探讨如何在Spark框架下实现两种常用的机器学习算法:K-means聚类和随机森林(Random Forest...
总的来说,使用Java实现k-means聚类算法并在鸢尾花数据集上应用,不仅可以加深对k-means算法的理解,还能为实际的数据分析和挖掘任务提供有价值的参考。在这个过程中,我们可以学习到数据处理、算法实现、性能优化等...
用户画像是一种数据驱动的方法,用于构建一个详细的用户模型,它结合了用户的行为、偏好、社会属性等信息,形成一个全面的、立体的用户形象。在大数据时代,用户画像已经成为企业和产品经理进行精细化运营、个性化...
3. 数据预处理:删除类别标签列,使用VectorAssembler将数据转化为特征向量,并通过StandardScaler进行标准化,确保各特征在同一尺度上。 4. 构建模型:使用pyspark.ml.clustering库中的KMeans模型,设定输入列、...
其次,笔记可能涉及了R中的数据操作,包括数据清洗(如使用dplyr包进行筛选、排序、分组和汇总)、数据转换(如使用tidyr进行数据重塑)以及数据可视化(如使用ggplot2创建高质量图表)。这些是数据预处理的关键步骤...
【标签】"系统开源" 暗示了这份源代码可能是基于开放源码的系统和工具编写的,这意味着学习者不仅在实践已有的开源技术,还可能对这些技术进行了定制化或者创新。开源系统在大数据领域广泛使用,例如Apache Hadoop、...
数据集相关:生成VOC目录结构 | 标签转xml写入 | coco txt转voc xml | 可视化VOC标签框 | 更新训练验证txt图片名 | VOC转csv格式 | 计算csv格式数据合适的anchor | labelme标注的人体17点json转COCO 常用算法:NMS ...
- 由于MapReduce的本地化计算特性,K-Means在大数据上的执行效率可能会受限,有时需要结合Spark等更高效的分布式计算框架。 总之,这个开源项目提供了在Java MapReduce环境下实现K-Means聚类的示例,有助于学习者...