欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    2022年K-Means聚类算法及实现代码 .pdf

    • 资源ID:39725696       资源大小:39.67KB        全文页数:4页
    • 资源格式: PDF        下载积分:4.3金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要4.3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    2022年K-Means聚类算法及实现代码 .pdf

    K-Means算法k-means 算法接受参数k;然后将事先输入的n 个数据对象划分为k 个聚类以便使得所获得的聚类满足:同一聚类中的对象相似度较高;而不同聚类中的对象相似度较小。聚类相似度是利用各聚类中对象的均值所获得一个“中心对象”(引力中心)来进行计算的。假设要把样本集分为c 个类别,算法描述如下:(1)适当选择c 个类的初始中心;(2)在第 k 次迭代中,对任意一个样本,求其到c 个中心的距离,将该样本归到距离最短的中心所在的类;(3)利用均值等方法更新该类的中心值;(4)对于所有的c 个聚类中心,如果利用(2)(3)的迭代法更新后,值保持不变,则迭代结束,否则继续迭代。#include#include#include#define _NUM 3/预定义划分簇的数目using namespace std;/*特征对象,表示一个元组,一个元组有两个数值属性*/struct Tuple int attr1;int attr2;/*获取两个特征对象之间的距离,在此以欧基米德距离作为距离度量标准*/double getDistXY(Tuple t1,Tuple t2)return sqrt(t1.attr1-t2.attr1)*(t1.attr1-t2.attr1)+(t1.attr2-t2.attr2)*(t1.attr2-t2.attr2);/*计算簇的中心点,在此以簇中所有对象的平均距离来计算中心点*/Tuple getMeansC(vector c)名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 4 页 -int num=c.size();double meansX=0,meansY=0;Tuple t;for(int i=0;i num;i+)meansX+=ci.attr1;meansY+=ci.attr2;t.attr1=meansX/num;t.attr2=meansY/num;return t;/*获取算法的准则函数值,当准则函数收敛时算法停止*/double getE(vector classes,Tuple means)double sum=0;for(int i=0;i _NUM;i+)vector v=classesi;for(int j=0;j v.size();j+)sum+=(vj.attr1-meansi.attr1)*(vj.attr1-meansi.attr1)+(vj.attr2-meansi.attr2)*(vj.attr2-meansi.attr2);coutsum:sumendl;return sum;/*对当前的特征对象,查找与其最临近的簇,最临近即到簇中心点的距离最短*/int searchMinC(Tuple t,Tuple means_NUM)int c=0;int d=(t.attr1-means0.attr1)*(t.attr1-means0.attr1)+(t.attr2-means0.attr2)*(t.attr2-means0.attr2);for(int i=1;i _NUM;i+)int temp=(t.attr1-meansi.attr1)*(t.attr1-meansi.attr1)+(t.attr2-meansi.attr2)*(t.attr2-meansi.attr2);if(temp d)名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 4 页 -c=i;d=temp;return c;/*k-Means算法*/void kMeans(vector init)vector classes_NUM;/定义簇数组,共需划分 _NUM 个簇int c;Tuple means_NUM;/定义中心点数组,每个簇对应一个中心点double newE,oldE=-1;/定义准则函数值for(int i=0;i c;classesi.push_back(initc-1);meansi=getMeansC(classesi);/计算当前每个簇的中心点coutmeansi:meansi.attr1 meansi.attr2endl;newE=getE(classes,means);/计算当前准则函数值coutnewE:newE oldE:oldEendl;for(i=0;i=1)/当新旧函数值相差不到1 即准则函数值不发生明显变化时,算法终止 for(int j=0;j init.size();j+)/遍历所有特征对象,将其加入到离它最近的簇 int toC=searchMinC(initj,means);classestoC.push_back(initj);cout-endl;for(i=0;i _NUM;i+)/打印出当前每个簇的特征对象 vector temp=classesi;cout类i+1:endl;for(j=0;j temp.size();j+)名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 4 页 -couttempj.attr1 tempj.attr2endl;cout-endl;for(i=0;i _NUM;i+)/更新每个簇的中心点 meansi=getMeansC(classesi);coutmeansi:meansi.attr1 meansi.attr2endl;oldE=newE;newE=getE(classes,means);/计算新的准则函数值for(i=0;i _NUM;i+)/清空每个簇 classesi.clear();/*程序入口*/void main(int args,char*arg)int n1,n2;vector init;/保存所有输入的特征对象while(cin n1 n2)&n1!=-1&n2!=-1)/输入特征对象 Tuple p;p.attr1=n1;p.attr2=n2;init.push_back(p);kMeans(init);/调用 k-Means算法进行聚类分析 名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 4 页 -

    注意事项

    本文(2022年K-Means聚类算法及实现代码 .pdf)为本站会员(C****o)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开