没有合适的资源?快使用搜索试试~ 我知道了~
关于模式识别C语言的K均值算法
5星 · 超过95%的资源 需积分: 9 61 下载量 74 浏览量
2008-11-25
10:05:03
上传
评论
收藏 27KB DOC 举报
温馨提示
试读
3页
首先产生100个大于-20小于50的随机数,存于数组X[100]中。然后产生三个不相同的初始聚类中心存在W[3]中,算出每个样本离哪个聚类中心最近就将对应的系数1存入d[i][j]中i为对应的类,j为第几个样本数,对应其他两类的d[i][j]为0。然后进行聚类修正,将对应的样本与对应的d[i][j]相乘然后取平均,即除以这类中多少个样本数。计算误差,将上面算得的结果与上次的聚类中心比较,求总和,即把所得的三个新的聚类中心与旧的聚类中心分别求距离,然后求和为E,如果E<k则算法结束,否则将新的聚类中心代替旧的聚类中心进行循环。
资源推荐
资源详情
资源评论
#include "stdio.h"
#include "math.h"
#include "time.h"
int compare(int i,float w[])
{int t=0,j;
for (j=i;j>1;j--)
{if(w[i]==w[j-1])
{t=1;
break;
}
else
continue;
}
return(t);
}
int instead(int d[3][100],float x[],float w[])
{int i,j,c=3,q=0,rag=1;
float s=0,E,v[3],k=0.5;
for(i=0;i<c;i++)
{for(j=0;j<100;j++)
{s=s+d[i][j]*x[j];
q=q+d[i][j];
v[i]=s/q;
}
}
for(i=0;i<c;i++)
{E=+(v[i]-w[i]);
}
if(E>=k)
{for(i=0;i<c;i++)
{w[i]=v[i];
}
rag=1;
}
else
rag=0;
return(rag);
}
void main()
{float x[100],w[3],m;
int i,j,t,c=3,d[3][100],p,q=1,flag,u;
srand((int)time(0));
for(i=0;i<100;i++)
{while(1)
资源评论
- Kqwqw2013-06-27这个真心很好,对于K-均值的理解很有帮助,很适合初學者去參考的。
- jcjy6662013-04-11我想处理图像的,这个虽然貌似不行,但是主题思想在,很好!
- csy5785341412011-11-05k均值聚类经典算法!赞一个,哈哈。
aini121
- 粉丝: 1
- 资源: 8
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功