java 多线程 算法_目前最快速的多线程Kmeans算法,java实现

目前最快速Kmeans算法,并由java实现!面对很大的K值表现依然很好。

代码地址: https://github.com/Jethu1/fastKmeans

#1.这是一个由java实现的的,多线程Kmeans聚类算法;

#2.在聚类的选种阶段分别实现了Kmeans++算法和NIPS 2016的文章“Fast and Probably Good Seedings for k-Means”中提出了AFK-MC²算法,该算法改进了k-Means算法中初始种子点的生成方式,使其聚类速度相较于目前最好的k-Means++方式提高了好几个数量级。

#3.在迭代计算加速方面实现了2018年的一篇文章中描述的迭代加速算法Ameans:A-means improving the cluster assignment phase of k-means for Big Data; 上述两篇论文在项目的doc文件夹中。

#4.如果你的项目中的向量是稀疏向量,并且有值的位置可以提前保存到List中,那么可以将这个List纳入聚类计算中,在进行两个向量间的距离计算时,只计算有值位置的距离。

#5.实现起来不容易,如果觉得有用麻烦给fastKmeans项目点个赞呗。

使用方法

1.一般的使用方式: List clusterRes = MultiThreadKmeans.run(kmeansData, kmeansData.length*0.7, kmeansData.length * 20,10,2);

kmeansData: 矩阵

kmeansData.length*0.7:聚类个数

kmeansData.length * 20:最大迭代次数

10:开启线程数目

2:使用哪一种选种算法;1:随机选种 2:Kmean++选种  3: AFK-MC2选种

2.以文本聚类为例,如果在进行文本向量化是保存了词的非零位置: List nouzeroList = TfIdf.getZeroList(nodeContents); //TFIDF方式进行文本向量化,nodeContents为文本内容

List clusterRes = MultiThreadKmeans.run(kmeansData, kmeansData.length*0.7, kmeansData.length * 20,10,nouzeroList,2);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值