前言:
今天看官们对“kmeans算法步骤”可能比较注意,同学们都想要分析一些“kmeans算法步骤”的相关内容。那么小编同时在网络上收集了一些关于“kmeans算法步骤””的相关知识,希望兄弟们能喜欢,朋友们快快来了解一下吧!简介:在接触机器学习的时候,大部分都是从Kmeans算法开始,kmeans方法可以说是一种比较简单的聚类算法,单机版的kmeans算法网上有很基于python,java,matlab,R等的实现。运用于海量数据的有mahout,spark mllib等分布式实现,直接调用就可以使用,本文主要介绍基于spark的kmeans算法的实现,由于资源有限,该程序是在本地运行的,数据源使用的是本地文件。
数据集介绍(格式如下):
5.0#3.6#1.4#0.2#1
5.1#3.7#1.5#0.4#1
每一行都代表是一个样例的特征值,并且用#号切分,这里省去了特征提取和处理的过程。
算法原理(这个大家肯定都清楚,一笔带过):
算法接收参数K值,将实现输入的n个数据对象划分为k个聚类,以便使得所获得的聚类满足,同一聚类中的对象相似度较高,而不同聚类中的相似度较小。
spark具体实现:
这里主要涉及到4个类:
KmeansProperty:每个对象的特征值;
Cluster:每个节点所属的簇ID及其特征值;
RandomClusterGenerator:读取训练集数据,并且生成原始的簇中心点;
Kmeans:调度类;
KmeansProperty详解:
Cluster详解:
主要包含3个属性:簇ID,该簇的节点个数,该节点的特征值;其它的构造方法及toString容易理解。
RandomClusterGenerator详解:
包含4个属性:k指簇的个数,data是训练样本集,clusters是生成的k个簇中心节点,kmeansCLuster是ArrayList类型的簇中心节点。
getInitialCluster是生成k个中心点。
Kmeans详解:
主要涉及到两个方法:
获得节点到7个簇中心的最小距离(这里默认的是分成7类)在map操作中使用
计算连个节点之间的距离
该方法主要是在reduceByKey的时候调用,生成新的节点
获得每个节点所属的簇中心的ID
下面的方法是计算最新的簇中心点,并转化成ArrayList类型
上述过程是一次迭代,要是根据迭代的个数只需要加循环就可以。
标签: #kmeans算法步骤 #kmeans算法思路 #kmeans算法数据集 #r语言与kmeans算法 #matlab kmeans函数