当前位置: 首页 > news >正文

福泉市建设局网站网站seo外包价格

福泉市建设局网站,网站seo外包价格,电脑版淘宝网页,网页制作基础教程本社一、K-means聚类算法 K均值聚类#xff08;K-means clustering#xff09;是一种常见的无监督学习算法#xff0c;用于将数据集中的样本划分为K个不同的类别或簇。它通过最小化样本点与所属簇中心点之间的距离来确定最佳的簇划分。 K均值聚类的基本思想如下#xff1a; …一、K-means聚类算法 K均值聚类K-means clustering是一种常见的无监督学习算法用于将数据集中的样本划分为K个不同的类别或簇。它通过最小化样本点与所属簇中心点之间的距离来确定最佳的簇划分。 K均值聚类的基本思想如下 随机选择K个初始聚类中心质心。对于每个样本计算其与各个聚类中心之间的距离并将样本分配到距离最近的聚类中心所代表的簇。对于每个簇计算簇中样本的均值并将该均值作为新的聚类中心。重复步骤2和步骤3直到聚类中心不再变化或达到预定的迭代次数。 K均值聚类的关键是如何选择初始的聚类中心。常见的方法是随机选择数据集中的K个样本作为初始聚类中心或者使用一些启发式的方法来选择。 K均值聚类的优点包括简单易实现、计算效率高和可扩展性好。它在许多领域中被广泛应用如数据分析、图像处理、模式识别等。然而K均值聚类也存在一些限制例如对于初始聚类中心的敏感性、对于离群值的影响较大以及需要事先指定簇的个数K等。 在实际应用中可以根据实际问题和数据集的特点来选择合适的K值并进行多次运行以获得更稳定的结果。此外K均值聚类也可以与其他算法相结合如层次聚类hierarchical clustering和密度聚类density-based clustering以获得更好的聚类效果。 总的来说K均值聚类是一种常用的无监督学习算法用于将数据集中的样本划分为K个簇。它简单而高效适用于许多聚类问题。然而在使用K均值聚类时需要注意选择初始聚类中心和合适的K值以及对其限制和局限性的认识。 二、基于weka手工实现K-means聚类算法 package weka.clusterers.myf;import weka.clusterers.RandomizableClusterer; import weka.core.*;import java.util.*;/*** author YFMan* Description 自定义的 KMeans 聚类器* Date 2023/6/8 15:01*/ public class myKMeans extends RandomizableClusterer {// 聚类中心的数量private int m_NumClusters 2;// 不同聚类中心的集合private Instances m_ClusterCentroids;// 聚类的最大迭代次数private int m_MaxIterations 500;// 追踪收敛前完成的迭代次数private int m_Iterations 0;// 构造函数public myKMeans() {super();// 设置随机种子m_SeedDefault 10;setSeed(m_SeedDefault);}/** Author YFMan* Description //基类定义的接口必须要实现* Date 2023/6/8 16:37* Param []* return weka.core.Capabilities**/Overridepublic Capabilities getCapabilities() {Capabilities result super.getCapabilities();result.disableAll();result.enable(Capabilities.Capability.NO_CLASS);// attributesresult.enable(Capabilities.Capability.NOMINAL_ATTRIBUTES);result.enable(Capabilities.Capability.NUMERIC_ATTRIBUTES);result.enable(Capabilities.Capability.MISSING_VALUES);return result;}/** Author YFMan* Description //进行聚类* Date 2023/6/8 16:38* Param [data 用于聚类的数据集]* return void**/Overridepublic void buildClusterer(Instances instances) throws Exception {// 迭代次数m_Iterations 0;// 初始化聚类中心m_ClusterCentroids new Instances(instances, m_NumClusters);// 每个样本属于哪个聚类中心int[] clusterAssignments new int[instances.numInstances()];// 伪随机数生成器Random RandomO new Random(getSeed());int instIndex;HashSetInstance initC new HashSet();// 初始化聚类中心随机选择 m_NumClusters 个样本作为聚类中心for (int j instances.numInstances() - 1; j 0; j--) {instIndex RandomO.nextInt(j 1);if (!initC.contains(instances.instance(instIndex))) {m_ClusterCentroids.add(instances.instance(instIndex));initC.add(instances.instance(instIndex));}instances.swap(j, instIndex);if (m_ClusterCentroids.numInstances() m_NumClusters) {break;}}boolean converged false;// 用于存储每个聚类中心的样本集合Instances[] tempI new Instances[m_NumClusters];while (!converged) {m_Iterations;converged true;// 计算每个样本 属于哪个聚类中心for (int i 0; i instances.numInstances(); i) {Instance toCluster instances.instance(i);int newC clusterInstance(toCluster);// 如果样本所属的聚类中心发生变化则说明还没有收敛if (newC ! clusterAssignments[i]) {converged false;}clusterAssignments[i] newC;}// 重新计算聚类中心m_ClusterCentroids new Instances(instances, m_NumClusters);for (int i 0; i m_NumClusters; i) {tempI[i] new Instances(instances, 0);}for (int i 0; i instances.numInstances(); i) {tempI[clusterAssignments[i]].add(instances.instance(i));}// 重新计算聚类中心for (int i 0; i m_NumClusters; i) {// 计算每个属性的平均值m_ClusterCentroids.add(calculateCentroid(tempI[i]));}// 如果迭代次数达到最大值则强制结束if (m_Iterations m_MaxIterations) {converged true;}}}/** Author YFMan* Description //计算某个聚类中心的中心点* Date 2023/6/8 16:57* Param [instances 聚类中心的样本集合]* return weka.core.Instance 聚类中心的中心点**/private Instance calculateCentroid(Instances instances) {int numInst instances.numInstances();int numAttr instances.numAttributes();Instance centroid new Instance(numAttr);double sum;for (int i 0; i numAttr; i) {sum 0;for (int j 0; j numInst; j) {sum instances.instance(j).value(i);}centroid.setValue(i, sum / numInst);}return centroid;}/** Author YFMan* Description //计算两个属性全为数值类型的样本之间的距离欧式距离* Date 2023/6/8 16:47* Param [first 第一个样例, second 第二个样例]* return double**/private double distance(Instance first, Instance second) {// 定义欧式距离double euclideanDistance 0;// 定义overlapping距离double overlappingDistance 0;for (int index 0; index first.numAttributes(); index) {if (index first.classIndex()) {continue;}// 如果是数值类型的属性则计算欧式距离if (first.attribute(index).isNumeric()) {double dis first.value(index) - second.value(index);euclideanDistance dis * dis;} else {// 如果是标称类型的属性则计算是否相等if (first.value(index) ! second.value(index)) {overlappingDistance 1;}}}return Math.sqrt(euclideanDistance) overlappingDistance;}/** Author YFMan* Description //对一个给定的样例进行分类* Date 2023/6/8 16:50* Param [instance 给定的样例]* return int 返回样例所属的聚类中心id**/Overridepublic int clusterInstance(Instance instance) throws Exception {double minDist Double.MAX_VALUE;int bestCluster 0;for (int i 0; i m_NumClusters; i) {double dist distance(instance, m_ClusterCentroids.instance(i));if (dist minDist) {minDist dist;bestCluster i;}}return bestCluster;}/** Author YFMan* Description //返回聚类中心的数量* Date 2023/6/8 16:34* Param []* return int**/Overridepublic int numberOfClusters() throws Exception {return m_NumClusters;}/** Author YFMan* Description //主函数* Date 2023/6/8 16:33* Param [argv 命令行参数]* return void**/public static void main(String[] argv) {runClusterer(new myKMeans(), argv);} }
http://www.sadfv.cn/news/348301/

相关文章:

  • 七星彩网站建设购物网站创建
  • 做网站软件下载手机版企业网站的建设水平直接关系到网络营销的效果
  • 电子商务网站建设考试wordpress 移动顶部菜单
  • seo都用在哪些网站注册集团公司需要什么条件?
  • 网站备案信息注销桐乡网站设计公司
  • wordpress同步博客长沙seo报价
  • 打开网站 输入内容存在危险字符经典重庆论坛上不了了
  • 网站短信验证怎么做的wordpress音乐播放页面
  • 基于thinkphp网站制作江西省建设厅网站资质升级查询
  • 呼和浩特网站网站建设唐山公司做网站
  • 做摄影网站厦门网站建设设计公司哪家好
  • 西安的商城网站建设咔咔做受视频网站
  • 做网站没有数据石家庄学设计的正规学校
  • 信息技术初二做网站网站模版html
  • 外贸led网站建设网站制作 培训
  • 临淄网站建设wordpress新手教程
  • 知名中文网站建设互联业务登录页 网站
  • 广州百度网站建设公司百度一下知道首页
  • 电脑建立网站平台网站建好后如何上线
  • 电子商务网站软件建设核心国际新闻最新报道
  • 云优化 网站建设装饰公司在哪个网站上接活
  • 兰山区网站建设推广建网站的目的是什么
  • 湘潭找个人做网站的室内设计软件哪个比较好
  • 免费做cpa单页网站江门住房和城乡建设部网站
  • 怎么给自己做网站吗文字设计图片在线生成
  • 昆明建设厅培训网站站酷网官网
  • 公司网站开发设计网站标题格式
  • 网站建设项目设计的图片怎么利用网站做淘宝客
  • 免费网站建站wwordpress go页面如何使用
  • 如何建立自己的微网站做外贸免费的网站有哪些