下载此文档

C聚类样本.doc


文档分类:行业资料 | 页数:约18页 举报非法文档有奖
1/18
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/18 下载此文档
文档列表 文档介绍
  同K均值类似,FCM算法也是一个基于划分聚类算法,它思想就是使得被划分到同一簇对象之间相同度最大,而不一样簇之间相同度最小。  模糊C均值是一般C均值聚类算法改善,一般C均值对数据进行硬性划分,一个样本一定明确属于某一类,FCM对数据进行模糊划分,使用隶属度表示一个样本属于某一类程度。实际聚类中可能会碰到这么情况,蝴蝶形数据集中样本点类别不好硬性判定,所以引入隶属度来进行模糊划分。  隶属度函数是表示一个对象x隶属于集合A程度函数,通常记做μA(x),其自变量范围是全部可能属于集合A对象(即集合A所在空间中全部点),取值范围是[0,1],即0<=1,μA(x)<=1。μA(x)=1表示x完全隶属于集合A,相当于传统集合概念上x∈A。一个定义在空间X={x}上隶属度函数就定义了一个模糊集合A,或叫定义在论域X={x}上模糊子集。对于有限个对象x1,x2,……,xn模糊集合能够表示为::Uc×n  Uij是第i个样本属于第j个聚类隶属度。(a)确定类别数C,参数m,和迭代停止误差Epslion和最大迭代次数MaxIterationTimes(b)初始化聚类中心P(c)计算初始距离矩阵D(d)按下列公式更新隶属度:注意,假如有距离为0情况出现,则把该点和对应类隶属度设为1,其它设为0。(e)更新聚类中心(f)重新计算距离矩阵,并计算目标函数值(g)若达成最大迭代次数或前后两次J绝对差小于迭代停止误差则停止,不然转(d),也能够使用前后两次隶属度矩阵差来判定。(h)将样本点划分为隶属度最大那一类。(使用了opencv做数据显示)[cpp] viewplaincopy#include ""  #include <>   #include <>  #include ""    //FCM聚类,得到结果从0开始计数  void myFCMeans(float* pSamples,int* pClusterResult,int clusterNum,int sampleNum,int featureNum,int m_Value);  void main()  {      #define MAX_CLUSTERS 5      CvScalar color_tab[MAX_CLUSTERS];      IplImage* img = cvCreateImage( cvSize( 500, 500 ), IPL_DEPTH_8U, 3 );      CvRNG rng = cvRNG(cvGetTickCount());      CvPoint ipt;            color_tab[0] = CV_RGB(255,0,0);      color_tab[1] = CV_RGB(0,255,0);      color_tab[2] = CV_RGB(100,100,255);      color_tab[3] = CV_RGB(255,0,255);      color_tab[4] = CV_RGB(255,255,0);              int i,k;      int clusterNum = cvRandInt(&rng)%MAX_CLUSTERS + 2;  //最少有两类      int sampleNum = cvRandInt(&rng)%1000 + 100;         //最少100个点      int feaNum=2;      CvMat* sampleMat = cvCreateMat( sampleNum, 1, CV_32FC2 );            /* generate random sample from multigaussian distribution */      //产生高斯随机数      for( k = 0; k < clusterNum; k++ )      {          CvPoint center;      int topIndex=k*sampleNum/clusterNum;      int bottomIndex=(k == clusterNum - 1 ? sampleNum : (k+1)*sampleNum/clusterNum);            CvMat* localMat=cvCreateMatHeader(bottomIndex-topIndex,1,CV_32FC2);           = cvRandInt(&rng)%img->width;   

C聚类样本 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息