下载此文档

Spark MLlib之K-Means聚类算法.ppt


文档分类:IT计算机 | 页数:约11页 举报非法文档有奖
1/11
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/11 下载此文档
文档列表 文档介绍
Spark MLlib之K-Means聚类算法
本章要点
一、基本含义
二、K-Means
三、Spark协同过滤实现
基本含义
聚类算法
聚类,Cluster analysis,有时也被翻译为簇类,其核心任务是:将一组目标object划分为若干个簇,每个簇之间的object尽可能的相似,簇与簇之间的object尽可能的相异。聚类算法是机器学习(或者说是数据挖掘更合适)中重要的一部分,除了最为简单的K-Means聚类算法外,较常见的还有:层次法(CURE、CHAMELEON等)、网格算法(STING、WaveCluster等)等等。
较权威的聚类问题定义:所谓聚类问题,就是给定一个元素集合D,其中每个元素具有n个可观察属性,使用某种算法将D划分成k个子集,要求每个子集内部的元素之间相异度尽可能低,而不同子集的元素相异度尽可能高。其中每个子集叫做一个簇。
基本含义
与分类不同,分类是示例式学习,要求分类前明确各个类别,并断言每个元素映射到一个类别,而聚类是观察式学习,在聚类前可以不知道类别甚至不给定类别数量,是无监督学习的一种。目前聚类广泛应用于统计学、生物学、数据库技术和市场营销等领域,相应的算法也非常的多。
K-Means
K-Means属于基于平方误差的迭代重分配聚类算法,其核心思想十分简单:
随机选择K个中心点
计算所有点到这K个中心点的距离,选择距离最近的中心点为其所在的簇
简单的采用算术平均数(mean)来重新计算K个簇的中心
重复步骤2和3,直至簇类不在发生变化或者达到最大迭代值
输出结果
K-Means算法的结果好坏依赖于对初始聚类中心的选择,容易陷入局部最优解,对K值的选择没有准则可依循,对异常数据较为敏感,只能处理数值属性的数据,聚类结构可能不平衡。
Spark实现K-Means算法
测试数据









测试数据不用带标签,数据分为3个维度。
Spark实现K-Means算法
public static void main(String[] args) {
SparkConf sparkConf = new SparkConf()
.setAppName("K-Means")
.setMaster("local[2]");
JavaSparkContext sc = new JavaSparkContext(sparkConf);
JavaRDD<String> data = ("/home/yurnom/data/");
JavaRDD<Vector> parsedData = (s -> {
double[] values = ((s))
.stream()
.mapToDouble(Double::parseDouble)
.toArray();
return (values);
});
Spark实现K-Means算法
int numClusters = 3; //预测分为3个簇类
int numIterations = 20; //迭代20次
int runs = 10; //运行10次,选出最优解
KMeansModel clusters = ((), numClusters, numIterations, runs);
//计算测试数据分别属于那个簇类
print((v -> ()
+ " belong to cluster :" + (v)).collect());
//计算cost
double wssse = puteCost(());
("Within Set Sum of Squared Errors = " + wssse);
//打印出中心点
("Cluster centers:");
for (Vector center : ()) {
(" " + center);
}
Spark实现K-Means算法
//进行一些预测

Spark MLlib之K-Means聚类算法 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数11
  • 收藏数0 收藏
  • 顶次数0
  • 上传人分享精品
  • 文件大小140 KB
  • 时间2017-08-02