Mahout学习之聚类算法Kmeans
来源:互联网 发布:淘宝装修助手 编辑:程序博客网 时间:2024/05/22 01:36
一:kMeans算法介绍
聚类分析是一种静态数据分析方法,常被用于机器学习,模式识别,数据挖掘等领域。通常认为,聚类是一种无监督式的机器学习方法,它的过程是这样的:在未知样本类别的情况下,通过计算样本彼此间的距离(欧式距离,马式距离,汉明距离,余弦距离等)来估计样本所属类别。从结构性来划分,聚类方法分为自上而下和自下而上两种方法,前者的算法是先把所有样本视为一类,然后不断从这个大类中分离出小类,直到不能再分为止;后者则相反,首先所有样本自成一类,然后不断两两合并,直到最终形成几个大类。
常用的聚类方法主要有以下四种: //照搬的wiki,比较懒...
Connectivity based clustering (如hierarchical clustering 层次聚类法)
Centroid-based clustering (如kmeans)
Distribution-based clustering
Density-based clustering
Kmeans聚类是一种自下而上的聚类方法,它的优点是简单、速度快;缺点是聚类结果与初始中心的选择有关系,且必须提供聚类的数目。Kmeans的第二个缺点是致命的,因为在有些时候,我们不知道样本集将要聚成多少个类别,这种时候kmeans是不适合的,推荐使用hierarchical 或meanshift来聚类。第一个缺点可以通过多次聚类取最佳结果来解决。
Kmeans的计算过程大概表示如下
随机选择k个聚类中心. 最终的类别个数<= k
计算每个样本到各个中心的距离
每个样本聚类到离它最近的中心
重新计算每个新类的中心
重复以上步骤直到满足收敛要求。(通常就是中心点不再改变或满足一定迭代次数).
二:Mahout实现
1.数据准备
仿造数据1.txt
8 8
7 7
6.1 6.1
9 9
2 2
1 1
0 0
2.9 2.9
2.txt
8.1 8.1
7.1 7.1
6.2 6.2
7.1 7.1
2.1 2.1
1.1 1.1
0.1 0.1
3.0 3.0
2.将数据转换为序列文件
方法1:命令行转换,具体参考:点击打开链接
方法2:代码转换,可借用canopy算法中的代码,具体参考:点击打开链接
3.运行
bin/mahout kmeans -i /yourFilePath -o /yourFileOutputPath -c /yourStartCenter -k 2 -x 5 -cl
参数意义说明:
-i 设置文件输入路径, -o 为文件输出路径 -c 为初始输入聚类中心 -k 表示聚类的数目 -x 表示最大的循环次数 -cl 表示算法完成后进行原始数据的分类
4.结果分析
因为k值为2,所以在clusters-0中有两个聚类中心文件
初始化聚类中心为[2.0,2.0] [2.1,2.1]
clueters-1和cluster-2的输出为[1.033,1.033] [5.725,5.725] , [1.525,1.525] [7.325,7.325]
最后的聚类中心是[1.525,1.525] [7.325,7.325]
使用此聚类中心对数据进行聚类,得到clusteredPoints文件夹下边的文件
- Mahout学习之聚类算法Kmeans
- Mahout 之kmeans算法学习笔记
- mahout之聚类算法——KMeans分析
- mahout之聚类算法——KMeans分析
- mahout学习之二——mahout0.9kmeans聚类实例
- mahout使用KMeans算法
- kmeans聚类算法学习
- 聚类算法学习----之----sklearn.cluster.KMeans
- Mahout-kmeans命令行文本文件聚类
- mahout探索之旅——kmeans算法(上)
- mahout kmeans 算法源码解读
- mahout 中聚类算法kmeans案例
- Mahout 聚类算法学习之Canopy(一)
- Mahout学习之Mahout算法分类
- Mahout学习二--kmeans实例
- mahout之2-Kmeans聚类
- Mahout系列之----kmeans 聚类
- Mahout系列之----kmeans 聚类
- iOS中 常用的mac终端指令汇总 技术分享
- Java内存管理第三篇 - 内存可能产生的问题
- Android应用如何反馈Crash报告
- Android中GridView解析
- Android Studio 将github作为远程maven仓库
- Mahout学习之聚类算法Kmeans
- 算法编程题
- 字符串的数组表示法&指针表示法&常量表示法
- java平台读写dxf文件
- 贝塞尔曲线
- UIView笔记
- 九度OJ 1114:神奇的口袋 (DFS、DP)
- 在Android程序中使用已有的SQLite数据库
- Android下拉刷新完全解析,教你如何一分钟实现下拉刷新功能