模式识别“k-means”C语言程序,就是关于坐标点的划分问题,C语言高手请进!

[复制链接]
查看11 | 回复2 | 2008-12-10 14:53:46 | 显示全部楼层 |阅读模式
如果懂模式识别k-means算法的就请直接给我c程序吧,如果不懂看一下介绍:在程序前这样输入15个点int x[15][3] = {{ 3, 1, 0}, { 3, 2, 0}, { 2, 2, 0}, { 3, 3, 0}, { 2, 3, 0}, { 8, 8, 0},{ 8, 9, 0}, { 9, 8, 0}, { 9, 7, 0},{ 9, 9, 0}, { 16, 5, 0}, { 16, 4, 0},{ 15, 5, 0}, { 15, 6, 0}, { 16, 6, 0}} (z坐标为0,相当于二维坐标),选其中任意3个点z1、z2、z3作为基本点,比较其余12点与这3点距离,与哪个点近就和哪个点划分在一起,例如某一点到z2的距离小于到z1、z3距离,它就和z2算是一个类cluster2,这样找出12个点分别属于那个cluster,划分好所有点之后一共分3个cluster,求出各个cluster的所拥有点的中心z1’、z2’、z3’,然后再以这三个新中心点求出原15个点到这3个点距离并划分成新的3个cluster,然后再求新的cluster各点的中心,再求出15个点分别属于哪个新的cluster,然后一次循环下去,直到得到的中心值不变,printf出三个不变的中心值坐标,15点分别属于哪个中心所在的cluster。
由于本人初学C语言不久,请用基本语句,并注明每一步的作用,详细!谢谢!有追加分数!
下面的这个看不懂,呵呵,再给总结下程序步骤:
1.在已知15个点中任意找出3点
2.比较12个点与3点距离并划分成3类
3.求3个类的中心值
4.比较所有15点与3个中心值距离并重新划分成3类
5.再求新中心、比较距离并划分...
6.当新中心值不再变化,即第n与n-1次中心值相同则输出结果。
简单点的改改!

回复

使用道具 举报

千问 | 2008-12-10 14:53:46 | 显示全部楼层
写了一个,参考一下,有什么问题请说。 #include #include int x[15][3]={{3,1,0},{3,2,0},{2,2,0},{3,3,0},{2,3,0},{8,8,0},{8,9,0},{9,8,0},{9,7,0},{9,9,0},{16,5,0},{16,4,0},{15,5,0},{15,6,0},{16,6,0}}; double oldcentral[3][3];//旧的中心点的坐标 double newcentral[3][3];//计算距离,分类后求平均值得到的新的中心点的坐标 int clas[15];//15个点各属于哪个类,类的编号从0...
回复

使用道具 举报

千问 | 2008-12-10 14:53:46 | 显示全部楼层
搬的凳子坐这看...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行