用 k-means方法对下面的数据进行分类,k=3,要求用java写代码 怎么做

Python021

用 k-means方法对下面的数据进行分类,k=3,要求用java写代码 怎么做,第1张

第一次迭代下,除了a4点,其他点都归为一类c1:(a1 a2 a3 a5)c2:(a4) 聚类中心:c1:(2,2)c2(5,4)(聚类中心的计算方式是平均类中所有点)

第二次迭代下,c1(a1 a2 a5)c2(a3 a4) 聚类中心c1:(4/3,5/3)c2(9/2 7/2)

第三次迭代下,c1(a1 a2 a5)c2(a3 a4) 聚类中心c1:(4/3,5/3)c2(9/2 7/2)结果已经稳定跳出循环

K-MEANS算法:

k-means 算法接受输入量 k ;然后将n个数据对象划分为 k个聚类以便使得所获得的聚类满足:同一聚类中的对象相似度较高;而不同聚类中的对象相似度较小。聚类相似度是利用各聚类中对象的均值所获得一个“中心对象”(引力中心)来进行计算的。

k-means 算法的工作过程说明如下:首先从n个数据对象任意选择 k 个对象作为初始聚类中心;而对于所剩下其它对象,则根据它们与这些聚类中心的相似度(距离),分别将它们分配给与其最相似的(聚类中心所代表的)聚类;然后再计算每个所获新聚类的聚类中心(该聚类中所有对象的均值);不断重复这一过程直到标准测度函数开始收敛为止。一般都采用均方差作为标准测度函数. k个聚类具有以下特点:各聚类本身尽可能的紧凑,而各聚类之间尽可能的分开。

具体如下:

输入:k, data[n]

(1) 选择k个初始中心点,例如c[0]=data[0],…c[k-1]=data[k-1]

(2) 对于data[0]….data[n], 分别与c[0]…c[n-1]比较,假定与c[i]差值最少,就标记为i

(3) 对于所有标记为i点,重新计算c[i]=/标记为i的个数;

(4) 重复(2)(3),直到所有c[i]值的变化小于给定阈值。

算法实现起来应该很容易,就不帮你编写代码了。

据我所知,java好像对大数据分析方面没有什么现成的方法或包可以调用。

现在做数据分析(机器学习)用的比较多的是Python和R还有Matlib;

//如果是简单的汇总分析,分类,回归的话,excel就足够了。java使用数据库也可以完成。

其中Python算比较简单的,有现成的科学计算工具和非常活跃的社区。

常用的算法:回归分析,支持向量机(SVM),决策树,K-近邻(KNN),K-均值(k-means)。。。还有比较火的深度学习(DL)。可以了解一下。