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

做众筹网站怎么赚钱美词网站建设

做众筹网站怎么赚钱,美词网站建设,贵港网站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.pierceye.com/news/726567/

相关文章:

  • 番禺网站开发设计小程序后端数据库搭建
  • 丰都集团网站建设云南网站开发公司
  • 赶集网的二级域名网站怎么做海南网站建设报价方案
  • dede做手机网站网站开发小作业
  • 网站建设推广ppt室内设计知名网站
  • asp 网站源码网站搭建好了怎么上到服务器
  • 网站有什么到期wordpress怎么编辑保存
  • 服务器添加网站300500启迪设计
  • 上海市建设安全协会网站移动端页面
  • 手机做网站公司成都住房和城乡建设厅官网
  • 锋创科技园网站建设网站开发ide php
  • 山东做网站的公司有哪些电脑怎么制作视频短片
  • 书画网站 建站维护网站成本
  • 什么事网站开发网站服务器租用报价
  • 做黏土的网站青岛网站建设微动力
  • 建网站权威公司广告发布平台
  • 自助游网站开发分析报告总结怎么注册公司微信公众号
  • 网站开发公司业务员培训黄聪wordpress
  • 网站规划与建设ppt模板下载响应式网站模板费用
  • 江苏商城网站建设服务网站建设优化石家庄
  • 高师院校语言类课程体系改革与建设 教学成果奖申报网站wordpress 4.8.2 漏洞
  • 以小说名字做网站的小说网wordpress的数据库主机
  • 永嘉高端网站建设价格h5页面制作多少钱
  • 北京网站建设课程培训WordPress分类id在哪
  • 宁夏网站备案青岛专业网站建设公司
  • 廊坊营销网站团队佛山市创意动力信息科技有限公司
  • 怎么学习做网站网络公司 网站建设
  • 网站权重怎么提升网站开发多线程开发
  • wordpress下拉列表沈阳网站排名优化
  • 非自己的网站如何做二次跳转免费建英文网站