Mahout学习之聚类算法Kmeans

简介: 一:kMeans算法介绍         聚类分析是一种静态数据分析方法,常被用于机器学习,模式识别,数据挖掘等领域。通常认为,聚类是一种无监督式的机器学习方法,它的过程是这样的:在未知样本类别的情况下,通过计算样本彼此间的距离(欧式距离,马式距离,汉明距离,余弦距离等)来估计样本所属类别。

一: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文件夹下边的文件

相关文章
|
7月前
|
机器学习/深度学习 算法 数据挖掘
没发论文的注意啦!重磅更新!GWO-BP-AdaBoost预测!灰狼优化、人工神经网络与AdaBoost集成学习算法预测研究(Matlab代码实现)
没发论文的注意啦!重磅更新!GWO-BP-AdaBoost预测!灰狼优化、人工神经网络与AdaBoost集成学习算法预测研究(Matlab代码实现)
222 0
|
5月前
|
机器学习/深度学习 算法 数据可视化
基于MVO多元宇宙优化的DBSCAN聚类算法matlab仿真
本程序基于MATLAB实现MVO优化的DBSCAN聚类算法,通过多元宇宙优化自动搜索最优参数Eps与MinPts,提升聚类精度。对比传统DBSCAN,MVO-DBSCAN有效克服参数依赖问题,适应复杂数据分布,增强鲁棒性,适用于非均匀密度数据集的高效聚类分析。
|
6月前
|
机器学习/深度学习 运维 算法
【微电网多目标优化调度】多目标学习者行为优化算法MOLPB求解微电网多目标优化调度研究(Matlab代码实现)
【微电网多目标优化调度】多目标学习者行为优化算法MOLPB求解微电网多目标优化调度研究(Matlab代码实现)
296 1
|
6月前
|
算法 数据挖掘 定位技术
基于密度的聚类算法能够在含有噪声的数据集中识别出任意形状和大小的簇(Matlab代码实现)
基于密度的聚类算法能够在含有噪声的数据集中识别出任意形状和大小的簇(Matlab代码实现)
145 1
|
6月前
|
机器学习/深度学习 分布式计算 算法
【风场景生成与削减】【m-ISODATA、kmean、HAC】无监督聚类算法,用于捕获电力系统中风场景生成与削减研究(Matlab代码实现)
【风场景生成与削减】【m-ISODATA、kmean、HAC】无监督聚类算法,用于捕获电力系统中风场景生成与削减研究(Matlab代码实现)
249 0
|
6月前
|
机器学习/深度学习 数据采集 算法
【风光场景生成】基于改进ISODATA的负荷曲线聚类算法(Matlab代码实现)
【风光场景生成】基于改进ISODATA的负荷曲线聚类算法(Matlab代码实现)
146 0
|
7月前
|
人工智能 算法 安全
【博士论文】基于局部中心量度的聚类算法研究(Matlab代码实现)
【博士论文】基于局部中心量度的聚类算法研究(Matlab代码实现)
218 0
|
机器学习/深度学习 算法 数据挖掘
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构。本文介绍了K-means算法的基本原理,包括初始化、数据点分配与簇中心更新等步骤,以及如何在Python中实现该算法,最后讨论了其优缺点及应用场景。
1455 6
|
7月前
|
算法 数据可视化 数据挖掘
基于AOA算术优化的KNN数据聚类算法matlab仿真
本程序基于AOA算术优化算法优化KNN聚类,使用Matlab 2022A编写。通过AOA搜索最优特征子集,提升KNN聚类精度,并对比不同特征数量下的聚类效果。包含完整仿真流程与可视化结果展示。
|
8月前
|
机器学习/深度学习 人工智能 算法
AP聚类算法实现三维数据点分类
AP聚类算法实现三维数据点分类
263 0