目前最快速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<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<List> nouzeroList = TfIdf.getZeroList(nodeContents); //TFIDF方式进行文本向量化,nodeContents为文本内容

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

目前最快速的多线程Kmeans算法,java实现的更多相关文章

  1. 【Java】K-means算法Java实现以及图像切割

    1.K-means算法简述以及代码原型 数据挖掘中一个重要算法是K-means.我这里就不做具体介绍.假设感兴趣的话能够移步陈皓的博客: http://www.csdn.net/article/201 ...

  2. K-Means 算法(Java)

    kMeans算法原理见我的上一篇文章.这里介绍K-Means的Java实现方法,参考了Python的实现方法. 一.数据点的实现 package com.meachine.learning.kmean ...

  3. k-means算法Java一维实现

    这里的程序稍微有点变形.k_means方法返回K-means聚类的若干中心点.代码: import java.util.ArrayList; import java.util.Collections; ...

  4. K-means算法Java实现

    public class KMeansCluster {          private int k;//簇的个数          private int num = 100000;//迭代次数  ...

  5. 原创:Kmeans算法实战+改进(java实现)

    kmeans算法的流程:   EM思想很伟大,在处理含有隐式变量的机器学习算法中很有用.聚类算法包括kmeans,高斯混合聚类,快速迭代聚类等等,都离不开EM思想.在了解kmeans算法之前,有必要详 ...

  6. K-Means算法的Java实现

    K-means算法是硬聚类算法,是典型的基于原型的目标函数聚类方法的代表,它是数据点到原型的某种距离作为优化的目标函数,利用函数求极值的方法得到迭代运算的调整规则.K-means算法以欧式距离作为相似 ...

  7. Java实现Kmeans算法

    Kmeans算法的Java实现.源代码放在github上,大家有兴趣能够下下来看看, 源代码地址: https://github.com/l294265421/algorithm-kmeans 实现该 ...

  8. K-Means算法的收敛性和如何快速收敛超大的KMeans?

    不多说,直接上干货! 面试很容易被问的:K-Means算法的收敛性. 在网上查阅了很多资料,并没有看到很清晰的解释,所以希望可以从K-Means与EM算法的关系,以及EM算法本身的收敛性证明中找到蛛丝 ...

  9. Kmeans算法的K值和聚类中心的确定

    0 K-means算法简介 K-means是最为经典的基于划分的聚类方法,是十大经典数据挖掘算法之一. K-means算法的基本思想是:以空间中k个点为中心进行聚类,对最靠近他们的对象归类.通过迭代的 ...

随机推荐

  1. Beta发布——美工+文案

    此作业要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2408项目地址:https://coding.net/u/wuyy694/ ...

  2. 20162328蔡文琛 week06 大二

    20162328 2017-2018-1 <程序设计与数据结构>第6周学习总结 教材学习内容总结 队列元素按FIFO的方式处理----最先进入的元素最先离开. 队列是保存重复编码k值得一种 ...

  3. listagg wm_concat 行转列

    一. 这个写法和wm_concat相似,listagg(day,',')要把哪一列转换为同一行within group (order by day)同一行如何排序 with temp as ( ' d ...

  4. vue视频插件VLC

    VLC 仅支持windows下特定版本火狐浏览器--Firefox_ESR_55.3 <template> <object type='application/x-vlc-plugi ...

  5. caffe神经网络模型的绘图

    Python/draw_net.py, 这个文件,就是用来绘制网络模型的.也就是将网络模型由prototxt变成一张图片. 1.安装GraphViz # sudo apt-get install Gr ...

  6. WebService(三)

    JAX-WS简单使用示例: 1.服务端 package com.rong.service; import javax.jws.WebMethod; import javax.jws.WebParam; ...

  7. 【acm】杀人游戏(hdu2211)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2211 杀人游戏 Time Limit: 3000/1000 MS (Java/Others)    M ...

  8. css 在背景图上加渐变

    <html> <head> <title>我的第一个 HTML 页面</title> <style> .banner { width: %; ...

  9. ICPCCamp 2017 I Coprime Queries

    给出一个长度为\(n\)的正整数序列\(a\),\(m\)次询问\(l,r,x\),问\(max\{i|i\in[l,r],gcd(a_i,x)=1\}\). \(n,m,a_i\le 10^5\). ...

  10. hdu3507 Print Article(斜率优化入门)(pascal)

    Problem Description Zero has an old printer that doesn't work well sometimes. As it is antique, he s ...