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

做牙厂的网站西安网站建设小程序开发

做牙厂的网站,西安网站建设小程序开发,ic交易网站建设,宣武网站建设模糊c均值聚类与k均值聚类区别k均值聚类k均值聚类的实现中#xff0c;把每个样本划分到单一的类别中#xff0c;亦即是每个样本只能属于一种类别#xff0c;不能属于多种类别。这样的划分#xff0c;称为硬划分。模糊c均值均类为了解决硬划分所带来的问题#xff0c;因此有…模糊c均值聚类与k均值聚类区别k均值聚类k均值聚类的实现中把每个样本划分到单一的类别中亦即是每个样本只能属于一种类别不能属于多种类别。这样的划分称为硬划分。模糊c均值均类为了解决硬划分所带来的问题因此有了称为软划分的聚类算法这一类算法中每个样本不再只能属于一种类别而是对于每个样本都有对应的隶属度数组数组里的每一个元素代表该样本属于某种类别的程度。而该样本的隶属度数组中的总值等于1。其目标方程以及优化的推导过程可以参照下述链接个人认为推导过程十分详细。模糊c均值聚类推导实现步骤根据相关的推导结果具体实现步骤如下初始化数据集初始化隶属度数组根据隶属度数组更新聚类中心根据聚类中心更新隶属度数组是否达到结束条件没有达到则重复2-4步骤。实现各个相关函数都有注释。#include #include #include #include typedef struct{double x;double y;} Position;//随机生成二维数据点//len:节点数量//range节点x、y值的范围Position *randomPosition(int len, int range){srand((unsigned)time(NULL));Position *allPos (Position *)malloc(len * sizeof(Position));short a 1; //人为差异量for (int i 0; i len; i){if (a){allPos[i].x (double)rand() / 2147483647 * range;allPos[i].y (double)rand() / 2147483647 * range;a 0;}else if (!a){allPos[i].x (double)rand() / 2147483647 * range50;allPos[i].y (double)rand() / 2147483647 * range50;a 1;}}return allPos;}//fcm初始化隶属度矩阵//posNum节点数量//clusterNum聚类中心数量double **init(int posNum, int clusterNum){double **u (double **)malloc(sizeof(double *) * clusterNum);for (int i 0; i {u[i] (double *)malloc(sizeof(double) * posNum);}srand((unsigned)time(NULL));double sum;//初始化usigmaU[i]1for (int i 0; i posNum; i){sum1;for (int x 0; x clusterNum - 1; x){u[x][i] ((double)rand() / 2147483647) * sum;sum - u[x][i];printf(u[%d][%d]:%f ,x,i,u[x][i]);}u[clusterNum-1][i]sum;printf(u[%d][%d]:%f\n,clusterNum-1,i,u[clusterNum-1][i]);}return u;}//输出所有数据点//allPos节点数组//len节点数量void outputPos(Position *allPos, int len){for (int i 0; i len; i)printf(position %d:(%f,%f)\n, i, allPos[i].x, allPos[i].y);return;}//所有隶属于聚类中心i的点的隶属程度和//u隶属度矩阵//posNum节点数量//i:第i个聚类中心//m隶属度因子double sumUi(double** u,int posNum,int i,int m){double res0;for(int x0;xrespow(u[i][x],m);return res;}//所有隶属于聚类中心i的点的x坐标的和//u隶属度矩阵//allPos:节点数组//posNum节点数量//i:第i个聚类中心//m隶属度因子double sumXi(double** u,Position* allPos,int posNum,int i,int m){double res0;for(int x0;xresallPos[x].x*pow(u[i][x],m);return res;}//所有隶属于聚类中心i的点的y坐标的和//u隶属度矩阵//posNum节点数量//i:第i个聚类中心//m隶属度因子double sumYi(double** u,Position* allPos,int posNum,int i,int m){double res0;for(int x0;xresallPos[x].y*pow(u[i][x],m);return res;}//第j个节点到所有聚类中心距离总和//pos:第j个节点//cluster:聚类中心数组//clusterNum聚类中心数量//m隶属度因子double sumDis(Position pos,Position* cluster,int clusterNum,int m){double res0;for(int i0;ires(double)1/pow(pow(pos.x-cluster[i].x,2)pow(pos.y-cluster[i].y,2),(double)1/(m-1));return res;}//更新聚类中心//allPos:节点数组//cluster:聚类中心数组//u隶属度矩阵//posNum节点数量//clusterNum聚类中心数量//m隶属度因子void updateCluster(Position* allPos,Position* cluster,double** u,int posNum,int clusterNum,int m){for(int i0;icluster[i].xsumXi(u,allPos,posNum,i,m)/sumUi(u,posNum,i,m);cluster[i].ysumYi(u,allPos,posNum,i,m)/sumUi(u,posNum,i,m);}}//更新隶属度矩阵//allPos:节点数组//cluster:聚类中心数组//u隶属度矩阵//posNum节点数量//clusterNum聚类中心数量//m隶属度因子void updateU(Position* allPos,Position* cluster,double** u,int posNum,int clusterNum,int m){double disXI;for(int i0;ifor(int x0;xdisXIpow(pow(allPos[x].x-cluster[i].x,2)pow(allPos[x].y-cluster[i].y,2),(double)1/(m-1));u[i][x](double)1/(disXI*sumDis(allPos[x],cluster,clusterNum,m));}}//输出目标函数//allPos:节点数组//cluster:聚类中心数组//u隶属度矩阵//posNum节点数量//clusterNum聚类中心数量//m隶属度因子void outpuCost_fun(Position* allPos,Position* cluster,double** u,int posNum,int clusterNum,int m){double res0;for(int i0;ifor(int x0;xres(pow(u[i][x],m)*(pow(allPos[x].x-cluster[i].x,2)pow(allPos[x].y-cluster[i].y,2)));printf(costFun:%f\n,res);}//..略同上void outputU(double** u,int posNum,int clusterNum){for(int i0;ifor(int x0;xprintf(u[%d][%d]:%f ,x,i,u[x][i]);printf(\n);}}void fuzzy_Cmeans(int posNum,int clusterNum, int m, int iterTime,int range){Position* allPosrandomPosition(posNum,range);Position* cluster(Position*)malloc(sizeof(Position)*clusterNum);double** uinit(posNum,clusterNum);for (int i 0; i iterTime; i){updateCluster(allPos,cluster,u,posNum,clusterNum,m);updateU(allPos,cluster,u,posNum,clusterNum,m);outpuCost_fun(allPos,cluster,u,posNum,clusterNum,m);//outputU(u,posNum,clusterNum);}}int main(){fuzzy_Cmeans(100,10,3,500,500);return 0;}结果可以看到其目标函数的值是逐渐减少的最后达到稳定的状态。
http://www.zqtcl.cn/news/195496/

相关文章:

  • 安全的南昌网站制作上海网站建设网
  • 360网站制作潍坊医疗网站建设方案
  • 深圳网站策划公司域名解析暂时失败
  • 怎么做安居客网站wordpress 函数文件
  • 微名片网站怎么做html代码表示
  • 两学一做纪实评价系统网站如何做好百度推广
  • 网站设置手机才能播放企业网站开发需求
  • 网站建设微信运营销售做网站用啥语言
  • dw建设网站步骤活动汪活动策划网站
  • 民和县公司网站建设网站开发的特点
  • 模板企业快速建站上传网站中ftp地址写什么
  • 云南本地企业做网站太原网站制作公司哪家好
  • 西部数码域名网站模板wordpress抓取股票行情
  • 丰台深圳网站建设公司关于服装店网站建设的策划方案
  • win7 iis网站无法显示随州网站建设哪家实惠
  • 利用网站新媒体宣传法治建设建站哪个平台好
  • 网站seo课设wordpress 500 根目录
  • 电子商务网站建设的阶段化分析如何利用视频网站做数字营销推广
  • 电子商务网站建设ppt模板国外注册机网站
  • 西部数码做跳转网站百度seo排名培训优化
  • 农业网站素材wordpress all in one
  • 学习网站建设有前景没wordpress 和dokuwiki
  • 服装网站开发方案网站设计美工排版编辑
  • 旅游网站首页模板下载广州市建设工程检测中心网站
  • 餐饮加盟网站建设wordpress 首行缩进
  • kkday是哪里做的网站橙云 php网站建设
  • 站长之家0网站规划作品
  • 物流公司网站建设系统规划广告设计怎么学
  • 异地备案 网站中信建设有限责任公司经济性质
  • 网站没有备案怎么申请广告宿迁莱布拉网站建设