需求
对MySQL数据库中某个表的某个字段执行k-means算法,将处理后的数据写入新表中。
源码及驱动
kmeans_jb51.rar
源码
import java.sql.*;
import java.util.*;
/**
* @author tianshl
* @version 2018/1/13 上午11:13
*/
public class Kmeans {
// 源数据
private List origins = new ArrayList<>();
// 分组数据
private Map> grouped;
// 初始质心列表
private List cores;
// 数据源
private String tableName;
private String colName;
/**
* 构造方法
*
* @param tableName 源数据表名称
* @param colName 源数据列名称
* @param cores 质心列表
*/
private Kmeans(String tableName, String colName,List cores){
this.cores = cores;
this.tableName = tableName;
this.colName = colName;
}
/**
* 重新计算质心
*
* @return 新的质心列表
*/
private List newCores(){
List newCores = new ArrayList<>();
for(List v: grouped.values()){
newCores.add(v.stream().reduce(0, (sum, num) -> sum + num) / (v.size() + 0.0));
}
Collections.sort(newCores);
return newCores;
}
/**