
Spark:Scala实现KMeans算法
K-Means算法是一种cluster analysis的算法,其主要是来计算数据聚集的算法,主要通过不断地取离种子点最近均值的算法。
具体来说,通过输入聚类个数k,以及包含 n个数据对象的数据库,输出满足方差最小标准的k个聚类。
2 k-means 算法基本步骤
(1) 从 n个数据对象任意选择 k 个对象作为初始聚类中心;
(2) 根据每个聚类对象的均值(中心对象),计算每个对象与这些中心对象的距离;并根据最小距离重新对相应对象进行划分;
(3) 重新计算每个(有变化)聚类的均值(中心对象);
(4) 计算标准测度函数,当满足一定条件,如函数收敛时,则算法终止;如果条件不满足则回到步骤(2)。
算法的时间复杂度上界为O(n*k*t), 其中t是迭代次数,n个数据对象划分为 k个聚类。
3 MLlib实现KMeans
以MLlib实现KMeans算法,利用MLlib KMeans训练出来的模型,可以对新的数据作出分类预测,具体见代码和输出结果。
Scala代码:
4 以Spark集群standalone方式运行
①在IDEA打成jar包(如果忘记了,参见 ),上传到用户目录下/home/ebupt/test/kmeans.jar
②准备训练样本数据:hdfs://eb170:8020/user/ebupt/kmeansData,内容如下
[ebupt@eb170 ~]$ hadoop fs -cat ./kmeansData
③spark-submit提交运行
[ebupt@eb174 test]$ -submit --master spark://eb174:7077 --name KmeansWithMLib --class com.hq.KMeansTest --executor-memory 2G --total-executor-cores 4 ~/test/kmeans.jar hdfs://eb170:8020/user/ebupt/kmeansData
输出结果摘要:
5 Spark总结
本文主要介绍了MLbase如何实现机器学习算法,简单介绍了MLBase的设计思想。
与其它 系统Weka、mahout不同:
发布日期:2021-05-27 02:54:40
浏览次数:4
分类:技术文章
本文共 3726 字,大约阅读时间需要 12 分钟。
1 什么是KMeans算法K-Means算法是一种cluster analysis的算法,其主要是来计算数据聚集的算法,主要通过不断地取离种子点最近均值的算法。
具体来说,通过输入聚类个数k,以及包含 n个数据对象的数据库,输出满足方差最小标准的k个聚类。
2 k-means 算法基本步骤
(1) 从 n个数据对象任意选择 k 个对象作为初始聚类中心;
(2) 根据每个聚类对象的均值(中心对象),计算每个对象与这些中心对象的距离;并根据最小距离重新对相应对象进行划分;
(3) 重新计算每个(有变化)聚类的均值(中心对象);
(4) 计算标准测度函数,当满足一定条件,如函数收敛时,则算法终止;如果条件不满足则回到步骤(2)。
算法的时间复杂度上界为O(n*k*t), 其中t是迭代次数,n个数据对象划分为 k个聚类。
3 MLlib实现KMeans
以MLlib实现KMeans算法,利用MLlib KMeans训练出来的模型,可以对新的数据作出分类预测,具体见代码和输出结果。
Scala代码:
4 以Spark集群standalone方式运行
①在IDEA打成jar包(如果忘记了,参见 ),上传到用户目录下/home/ebupt/test/kmeans.jar
②准备训练样本数据:hdfs://eb170:8020/user/ebupt/kmeansData,内容如下
[ebupt@eb170 ~]$ hadoop fs -cat ./kmeansData
③spark-submit提交运行
[ebupt@eb174 test]$ -submit --master spark://eb174:7077 --name KmeansWithMLib --class com.hq.KMeansTest --executor-memory 2G --total-executor-cores 4 ~/test/kmeans.jar hdfs://eb170:8020/user/ebupt/kmeansData
输出结果摘要:
5 Spark总结
本文主要介绍了MLbase如何实现机器学习算法,简单介绍了MLBase的设计思想。
与其它 系统Weka、mahout不同:
- MLbase是的,Weka是单机的。
- Mlbase是自动化的,Weka和mahout都需要使用者具备技能,来选择自己想要的算法和参数来做处理。
- MLbase提供了不同抽象程度的接口,可以扩充ML算法。
参考文献:http://www.aboutyun.com/thread-10817-1-1.html
转载地址:https://blog.csdn.net/leijie0322/article/details/44617095 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
感谢大佬
[***.8.128.20]2023年11月21日 12时48分39秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
vue ts开发环境之webpack配置
2019-03-25
vue ts开发环境之安装包
2019-03-25
vue ts开发环境之module.d.ts
2019-03-25
vue ts开发环境之tsconfig.json
2019-03-25
vue ts开发环境之组件
2019-03-25
spring源码解析之BeanFactory及其继承结构
2019-03-25
BeanDefinition
2019-03-25
elasticsearch-head插件显示未连接
2019-03-25
win10安装rabbitmq3.7.8
2019-03-25
AcWing 837 连通块中点的数量
2019-03-25
AcWing 240 食物链
2019-03-25
AcWing 838 堆排序
2019-03-25
AcWing 839 模拟堆
2019-03-25
AcWing 840 模拟散列表
2019-03-25
AcWing 841 字符串哈希
2019-03-25
AcWing 843 n-皇后问题
2019-03-25
AcWing 844 走迷宫
2019-03-25
AcWing 845 八数码
2019-03-25
AcWing 846 树的重心
2019-03-25
AcWing 847 图中点的层次
2019-03-25