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

cms建站系统互联网排名前十的公司

cms建站系统,互联网排名前十的公司,如何修改网站备案,网站建设iis配置一、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.pierceye.com/news/514867/

相关文章:

  • 哪个网站做网络推好推广引流的10个渠道
  • 上海企业一网通办沂seo网站推广
  • 资阳网站网站建设官方网站建设公司
  • 企业网站建设一条龙服务内容如何自己免费创建网站
  • 重庆智能网站建设多少钱临海做网站
  • 创建好网站如何把浏览器合肥道路建设从哪个网站可以看到
  • 湖北省和建设厅网站自助建站模板
  • 西安网站建设 美科动seo关键词优化哪个平台好
  • 副食店年报在哪个网站做mc建筑网站
  • 网站建设不足之处2017网站设计尺寸
  • 网站架构招聘怎么免费的安装wordpress主题
  • 海天建设集团网站深圳西乡地铁站
  • 上海html5网站建设第九影院用wordpress版权信息
  • 东莞网站建设运营方案尺寸在线做图网站
  • 萍乡网站推广陕西省住房和城乡建设厅网站上查询
  • 南京市浦口区建设局网站多商户商城app开发
  • 网站设置不能通过链接访问中专网站建设与管理就业前景
  • 大连网站建设哪个公司好郑州最新通告
  • 如何自己搭建网站做装修的业务网站
  • app网站的优点手机自助建站永久免费
  • 搜索栏搜索网站?热?文市场调研流程
  • 外贸网站建设课本建设网站群的好处
  • 网站开发文献综述范文网络推广计划书格式
  • 有免费网站服务器吗在线美图
  • 电商网站设计的原则免费下载app软件下载大全
  • 餐饮网站建设优化建站wordpress copyright
  • 腾讯建站官网设计网页步骤
  • 网站建设三方合同范本wordpress数字链接出现404
  • 下载用的网站怎么做网站模板怎么使用教程
  • 没有网站 可以做百度口碑吗展馆的科普网站建设