Spark MLlib 数据挖掘5–聚类与降维
聚类是一种无监督的学习问题,目标是基于一些相似概念将实体的子集彼此分组。
聚类通常用于对未知数据进行打标分析,寻找数据之间的相似性和相异性,主要用于探索数据内部可能存在的统计性规律。
一、KMeans算法
KMeans算法的基本思想是初始随机给定K个簇中心,按照最邻近原则把待分析样本点分到各个簇。然后按平均法重新计算各个簇的簇心,从而确定为新的簇心。一直迭代,直到簇心的移动距离小于某个给定的值
聚类过程如下图所示:
Spark MLlib中Kmeans样例代码:
Kmeans参数:
K 是所需簇的数量。
maxIterations 是要运行的最大迭代次数。
initializationMode 指定随机初始化。
Runs 是运行Kmeans算法的次数。
initializationSteps 确定k-means中的步数。
Epsilon 确定k-means已收敛的距离阈值。
initialModel 是一组用于初始化的可选集群中心。
import org.apache.spark.mllib.clustering.{
KMeans, KMeansModel}
import org.apache.spark.mllib.linalg.Vectors
// Load and parse the data
val data = sc.textFile("data/mllib/kmeans_data.txt")
val parsedData = data.map(s => Vectors.dense(s.split(' ').map