kmeans实际应用例子 java_k-means聚类JAVA实例

《mahout in action》第六章。

datafile/cluster/simple_k-means.txt数据集例如以下:

1 1

2 1

1 2

2 2

3 3

8 8

8 9

9 8

9 9

  1. k-means聚类算法原理

1、从D中随机取k个元素。作为k个簇的各自的中心。

2、分别计算剩下的元素到k个簇中心的相异度,将这些元素分别划归到相异度最低的簇。

3、依据聚类结果。又一次计算k个簇各自的中心,计算方法是取簇中全部元素各自维度的算术平均数。

4、将D中所有元素依照新的中心又一次聚类。

5、反复第4步,直到聚类结果不再变化。

6、将结果输出。

  1. 举例说明

2.1 从D中随机取k个元素,作为k个簇的各自的中心。

private final static Integer K=2; //选K=2,也就是估算有两个簇。

以下选1 1,2,1两个点。

C0:1 1

C1:2 1

2.2 分别计算剩下的元素到k个簇中心的相异度,将这些元素分别划归到相异度最低的簇。

结果为:

C0 : 1 1

C0:的点为:1.0,2.0

C1: 2 1

C1:的点为:2.0,2.0

C1:的点为:3.0,3.0

C1:的点为:8.0,8.0

C1:的点为:8.0,9.0

C1:的点为:9.0,8.0

C1:的点为:9.0,9.0

2.3 依据2.2的聚类结果。又一次计算k个簇各自的中心,计算方法是取簇中全部元素各自维度的算术平均数。

採取欧区距离公式。

C0 新的簇心为:1.0,1.5

C1 新的簇心为:5.857142857142857,5.714285714285714

2.4 将D中所有元素依照新的中心又一次聚类。

第2次迭代

C0:的点为:1.0,1.0

C0:的点为:2.0,1.0

C0:的点为:1.0,2.0

C0:的点为:2.0,2.0

C0:的点为:3.0,3.0

C1:的点为:8.0,8.0

C1:的点为:8.0,9.0

C1:的点为:9.0,8.0

C1:的点为:9.0,9.0

2.5 反复第4步,直到聚类结果不再变化。

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:6316401e-5cfc-438d-86eb-cac85f191596

[En]

[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:6b17d737-1587-4f6c-a892-9a5eff7e0029

private final static Double converge=0.001;

C0的簇心为:1.777777777777778,1.7916666666666667

C1的簇心为:8.394285714285715,8.388571428571428

各个簇心移动中最小的距离为。move=0.11866671868496578

第4次迭代

C0:的点为:1.0,1.0

C0:的点为:2.0,1.0

C0:的点为:1.0,2.0

C0:的点为:2.0,2.0

C0:的点为:3.0,3.0

C1:的点为:8.0,8.0

C1:的点为:8.0,9.0

C1:的点为:9.0,8.0

C1:的点为:9.0,9.0

C0的簇心为:1.799382716049383,1.7997685185185184

C1的簇心为:8.495771428571429,8.495542857142857

各个簇心移动中最小的距离为。move=0.003296297741248916

第6次迭代

C0:的点为:1.0,1.0

C0:的点为:2.0,1.0

C0:的点为:1.0,2.0

C0:的点为:2.0,2.0

C0:的点为:3.0,3.0

C1:的点为:8.0,8.0

C1:的点为:8.0,9.0

C1:的点为:9.0,8.0

C1:的点为:9.0,9.0

C0的簇心为:1.0,1.5

C1的簇心为:5.857142857142857,5.714285714285714

第2次迭代

C0:的点为:1.0,1.0

C0:的点为:2.0,1.0

C0:的点为:1.0,2.0

C0:的点为:2.0,2.0

C0:的点为:3.0,3.0

C1:的点为:8.0,8.0

C1:的点为:8.0,9.0

C1:的点为:9.0,8.0

C1:的点为:9.0,9.0

C0的簇心为:1.777777777777778,1.7916666666666667

C1的簇心为:8.394285714285715,8.388571428571428

各个簇心移动中最小的距离为。move=0.11866671868496578

第4次迭代

C0:的点为:1.0,1.0

C0:的点为:2.0,1.0

C0:的点为:1.0,2.0

C0:的点为:2.0,2.0

C0:的点为:3.0,3.0

C1:的点为:8.0,8.0

C1:的点为:8.0,9.0

C1:的点为:9.0,8.0

C1:的点为:9.0,9.0

C0的簇心为:1.799382716049383,1.7997685185185184

C1的簇心为:8.495771428571429,8.495542857142857

各个簇心移动中最小的距离为。move=0.003296297741248916

第6次迭代

C0:的点为:1.0,1.0

C0:的点为:2.0,1.0

C0:的点为:1.0,2.0

C0:的点为:2.0,2.0

C0:的点为:3.0,3.0

C1:的点为:8.0,8.0

C1:的点为:8.0,9.0

C1:的点为:9.0,8.0

C1:的点为:9.0,9.0

Original: https://blog.csdn.net/weixin_33795883/article/details/114155178
Author: 无月劫
Title: kmeans实际应用例子 java_k-means聚类JAVA实例

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/561559/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球