主页 > 新闻资讯 > 大数据专业课程培训之K-Means聚类算法简介

大数据专业课程培训之K-Means聚类算法简介

作者:张老师 浏览次数: 2020-06-19 17:51
大数据当中,算法是一个听起来就自带光环的词,而在行业当中,大数据算法工程师也可以说是企业亟需的高级技术人才。我们所熟悉的某条、某宝,这些APP的背后都离不开大数据算法的支持。今天的大数据专业课程培训分享,我们来讲讲K-Means聚类算法。

K-Means聚类算法,也称k均值聚类算法,是集简单和经典于一身的基于距离的聚类算法。在大数据当中,聚类算法本身也是非常普遍采用的,常常用在数据预处理上。

大数据专业课程培训

K-Means聚类算法核心思想

K-means聚类算法是一种迭代求解的聚类分析算法,其步骤是随机选取K个对象作为初始的聚类中心,然后计算每个对象与各个种子聚类中心之间的距离,把每个对象分配给距离它最近的聚类中心。

聚类中心以及分配给它们的对象就代表一个聚类。每分配一个样本,聚类的聚类中心会根据聚类中现有的对象被重新计算。这个过程将不断重复直到满足某个终止条件。终止条件可以是没有(或最小数目)对象被重新分配给不同的聚类,没有(或最小数目)聚类中心再发生变化,误差平方和局部最小。

TF-IDF算法实现过程示例

第一步,导入实验要用到的包工具

import org.apache.spark.ml.clustering.{KMeans,KMeansModel}

import org.apache.spark.ml.linalg.Vectors

import org.apache.spark.sql.SparkSession

引入spark.implicits._,以便于RDDs和DataFrames之间的隐式转换

import spark.implicits._

第二步,定义一个case class作为DataFrame每一个数据样本的数据类型。

case class model_examples (features: org.apache.spark.ml.linalg.Vector)

第三步,把定义完成的数据读入RDD结构中去,并通过RDD的隐式转换.toDF()方法完成RDD到DataFrame的转换(实验数据还是采用的):

val rawData = sc.textFile("file:///data/iris.data")

使用split方法取得每条数据的值,使用filter算子过滤掉类标签。

val df = rawData.map(line =>{ model_examples( Vectors.dense(line.split(",").filter(p => p.matches("\\d*(\\.?)\\d*")).map(_.toDouble)) )}).toDF()

第四步,得到过滤完的数据以后,通过ML包的固有流程:创建Estimator并调用其fit()方法来生成相应的Transformer对象

val kmeansmodel = new KMeans().
setK(3).
setFeaturesCol("features").
setPredictionCol("prediction").
fit(df)

第五步,使用transform()方法将存储在DataFrame中的给定数据集进行整体处理,生成带有预测簇标签的数据集

val results = kmeansmodel.transform(df)

第六步,使用collect()方法,该方法将DataFrame中所有的数据组织成一个Array对象进行返回

results.collect().foreach(row =>
{
println( row(0) + " is predicted as cluster " + row(1))
})

第七步,使用kmeansmodel类中自带的clusterCenters属性查看iris数据中所有类别的聚类中心情况

kmeansmodel.clusterCenters.foreach(
center => {
println("Clustering Center:"+center)
})

以上就是今天的大数据专业课程培训,K-Means聚类算法的简单介绍了。聚类算法是大数据算法当中的一个重要类别,K-Means聚类算法更是其中的重要知识点,必学必掌握。加米谷大数据,成都大数据培训机构,大数据开发、大数据分析与挖掘,高级技能提升,本月正在招生中,课程大纲及学习资料可联系客服获取!
热点排行
推荐文章
立即申请>>