站长杂谈

关于服务器中的k均值算法

时间:2017-05-31 16:27 点击:

  关于服务器中的k均值算法

  在今天的教程里面小编为香港服务器以及美国服务器的使用者带来服务器中的k均值算法,k均值算法是一种典型的聚类算法,具有很好的聚类效果,对于分布式数据库中的数据的组织方式具有重要的意义,在这里小编就为广大的香港服务器以及美国服务器的使用者简单的介绍一下k均值算法的使用方式。

  K-means算法是硬聚类算法,它的工作方式是基于以下的工作原理,它计算数据样例到原型的距离作为目标函数,利用求极值的方法得到迭代运算的调整规则。K均值算法采用距离作为相似性的评价指标,即认为两个对象的距离越近,其相似度就越大,就越有可能被聚为同一个类。同时这个算法给出蔟的概念:距离靠近的对象组成的点统称为簇,把得到紧凑且又互相区分的簇作为算法的最为主要的方向。该算法第一步中是随机的选取任意k个对象作为初始聚类的中心,初始地代表一个簇。

  k均值算法主要由下面的步骤构成:

  1:随机在图中取K个点,这作为聚类的初始值。

  2:然后对图中的所有点求到这K个点的距离,并且要计算平均值。

  3:接下来,我们要移动点到属于他的数据点的集合的中心。

  4:然后重复第2)和第3)步,最终我们选定的种子点没有移动,迭代结束,我们得到我们想要的最终结果。

  k均值算法的优点:

  1:算法能根据较少的已知聚类样本的类别对树进行剪枝确定部分样本的分类。

  2:克服少量样本聚类的不准确性,该算法本身具有优化迭代功能,优化了初始监督学习样本分类不合理的地方,避免了小数据量带来的数据信息不足的问题;

  3:只是针对部分小样本可以降低总的聚类时间复杂度。

  4:算法快速、简单。

  5:对大数据集有较高的效率并且具有较高的容错性;

  6:时间复杂度近于线性,时间复杂度很低,可以快速计算,而且适合挖掘大规模数据集。

  k均值算法的代码实现(主要是在matlab中实现):

  function[costDis]=runKMeans(K,fileString)//定义函数

  X=load(fileString);

  %分析数据集,存储从数据集中得到的信息。

  N=size(X,1);

  D=size(X,2);

  %对于多维向量分配空间。

  Kmus=zeros(K,D);%notneedtoallocateitbutitisstillworthy

  %i随机找寻给定数据的随机点,作为初始化的信息。

  rndinds=randperm(N);

  Kmus=X(rndinds(1:K),:);

  %明确迭代的最大次数。

  maxiters=1000;

  foriter=1:maxiters

  %dothisbyfirstcalculatingasquareddistancematrixwherethen,kentry

  %containsthesquareddistancefromthenthdatavectortothekthmuvector

  sqDmat=calcSqDistances(X,Kmus);

  %给出空间距离的矩阵。

  Rnk=determineRnk(sqDmat);

  KmusOld=Kmus;

  plotCurrent(X,Rnk,Kmus);

  pause(1);

  Kmus=recalcMus(X,Rnk);

  %检查是否簇的中心已经变化了

  ifsum(abs(KmusOld(:)-Kmus(:)))<1e-6

  disp(iter);

  break

  end

  end

  costDis=sum(min(sqDmat,[],2));//返回结果给costDis

  end

  服务器中的k均值算法编就带领大家介绍到这里了,希望大家对k均值算法有了一个更加深入的了解。

  如果您还有什么不明确或者是不懂的地方,欢迎来新世界主机咨询了解,详情请咨询Skype:vpssj.net@hotmail.com 。我们必将竭诚为您服务。