gpt4 book ai didi

java - K 均值算法

转载 作者:行者123 更新时间:2023-12-02 08:40:09 25 4
gpt4 key购买 nike

friend 们,我希望你的帮助,我正在用Java开发K-Means算法,所以我已经执行了for循环来对数据进行各自的质心运算并确定距离,但是每个质心的距离在不同的周期。现在我需要的是将所有这些结果放在循环之外的自己中。我附上部分代码。

 System.out.println("\n" + "----------" + "\n" + "Cluster K" + "\n" + "----------");
System.out.println();
for (int i = 0; i < Datos.length; i++) {
distanciaK = (float) Math.sqrt(Math.pow(Datos[i][0] - Datos[10][0], 2) + Math.pow(Datos[i][1] - Datos[10][1], 2) + Math.pow(Datos[i][2] - Datos[10][2], 2) + Math.pow(Datos[i][3] - Datos[10][3], 2) + Math.pow(Datos[i][4] - Datos[10][4], 2));
System.out.println(distanciaK);

}

System.out.println("\n" + "----------" + "\n" + "Cluster M" + "\n" + "----------");
System.out.println();
for (int i = 0; i < Datos.length; i++) {
distanciaM = (float) Math.sqrt(Math.pow(Datos[i][0] - Datos[12][0], 2) + Math.pow(Datos[i][1] - Datos[12][1], 2) + Math.pow(Datos[i][2] - Datos[12][2], 2) + Math.pow(Datos[i][3] - Datos[12][3], 2) + Math.pow(Datos[i][4] - Datos[12][4], 2));
System.out.println(distanciaM);

}

System.out.println();

代码输出

集群K

9.08.4852819.3808326.32455544.24264053.60555127.6157738.831762.8284275.83095170.04.79583175.4772265.196152

<小时/>

集群M

5.1961524.89897979.4868336.9282034.89897973.87298357.0710687.0710683.16227774.24264055.4772266.7082040.01.0

最佳答案

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

导入以上包使用集群名称和值作为代表集群的列表创建了映射。将方法添加到相应的 map 条目。

System.out.println("\n" + "----------" + "\n" + "Cluster K" + "\n" + "----------");
System.out.println();
Map<String,List<Float>> clusterMeanInfo = new HashMap<>();
clusterMeanInfo.put("Cluster K",new ArrayList<>());
clusterMeanInfo.put("Cluster M",new ArrayList<>());
for (int i = 0; i < Datos.length; i++) {
distanciaK = (float) Math.sqrt(Math.pow(Datos[i][0] - Datos[10][0], 2) + Math.pow(Datos[i][1] - Datos[10][1], 2) + Math.pow(Datos[i][2] - Datos[10][2], 2) + Math.pow(Datos[i][3] - Datos[10][3], 2) + Math.pow(Datos[i][4] - Datos[10][4], 2));
System.out.println(distanciaK);
clusterMeanInfo.get("Cluster K").add(distanciaK);

}

System.out.println("\n" + "----------" + "\n" + "Cluster M" + "\n" + "----------");
System.out.println();
for (int i = 0; i < Datos.length; i++) {
distanciaM = (float) Math.sqrt(Math.pow(Datos[i][0] - Datos[12][0], 2) + Math.pow(Datos[i][1] - Datos[12][1], 2) + Math.pow(Datos[i][2] - Datos[12][2], 2) + Math.pow(Datos[i][3] - Datos[12][3], 2) + Math.pow(Datos[i][4] - Datos[12][4], 2));
System.out.println(distanciaM);
kMeans.add(distanciaM);
clusterMeanInfo.get("Cluster K").add(distanciaM);
}

for (String key :clusterMeanInfo.keySet()) {
System.out.print(key + ' ');
clusterMeanInfo.get(key).forEach( value -> {
System.out.print(value + ' ');
});
System.out.println();
}

关于java - K 均值算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61427464/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com