


全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Ruby简单实现K-means聚类算法文章分类:综合技术 K-means是一个简单容易实现的聚类算法,我们以对一个图片的颜色的RGB值进行聚类为例, 实现这个算法。 K-means算法是一个EM的迭代过程: 1.随机选择k个作为聚类中心 2.E step: 对每一个点,计算它到每一个聚类中心的距离,把这个点分配到最近的聚类中心代表的 聚类中。 3.M step: 重新计算每个聚类的中心:每个聚类中心为该聚类所有点的均值。 重复23直到达到最大的迭代次数或者聚类不再发生变化。 Ruby代码 1. #!/usr/bin/ruby 2. #autor:fuliang/ 3. 4. classRGB 5. attr_accessor:r,:g,:b6. 7. definitialize(r=0,g=0,b=0) 8. r,g,b=r,g,b 9. end10. 11. def+(rgb) 12. r+=rgb.r 13. g+=rgb.g 14. b+=rgb.b 15. self16. end17. 18. def/(n) 19. r/=n 20. g/=n 21. b/=n 22. self23. end24. end25. 26. defrandom_k_centers(instances,k) 27. rand_indxes=(0.instances.size).sort_byrand0.k 28. instances.values_at(*rand_indxes) 29. end30. 31. defdistance(ins1,ins2)#采用余弦值,因为255,255,255和200,200,200颜色基本类似 32. dot_product=ins1.r*ins2.r+ins1.g*ins2.g+ins1.b*ins2.b 33. mod1=Math.sqrt(ins1.r*ins1.r+ins1.g*ins1.g+ins1.b*ins1.b) 34. mod2=Math.sqrt(ins2.r*ins2.r+ins2.g*ins2.g+ins2.b*ins2.b) 35. return1-dot_product/(mod1*mod2) 36. end37. 38. defk_means_cluster(instances,k,max_iter=100) 39. random_centers=random_k_centers(instances,k) 40. prandom_centers 41. instance_cluster_map= 42. change_count=0 43. clusters= 44. 0.upto(max_iter)do|iter_num| 45. clusters= 46. putsiterate#iter_num.47. change_count=0 48. #E-step 49. instances.eachdo|instance| 50. min_distance=1.0/0 51. min_indx=0 52. random_centers.each_with_indexdo|center,index| 53. current_distance=distance(center,instance) 54. ifmin_distancecurrent_distancethen55. min_indx=index 56. min_distance=current_distance 57. end58. end59. ifinstance_cluster_mapinstance!=min_indxthen#tracethechange 60. change_count+=1 61. instance_cluster_mapinstance=min_indx 62. end63. clustersmin_indx|= 64. clustersmin_indxinstance 65. end66. putschange_count=#change_count67. breakifchange_count.zero? 68. #M-step 69. clusters.each_with_indexdo|cluster,index| 70. center=RGB.new71. cluster.eachdo|instance| 72. center+=instance 73. end74. center/=cluster.size 75. random_centersindex=center#updatecenter 76. end77. end78. returnclusters 79. end80. 81. instances= 82. File.open(rgbs.txt).each_linedo|line| 83. line.split(/t/).eachdo|rgb| 84. r,g,b=rgb.split(/,/).collect|e|e.to_i 85. instancesRGB.new(r,g,b) 86. end87. end88. 89. clusters=k_means_cluster(instances,5,100) 90. k_candidates= 91. clusters.eachdo|cluster| 92. sum=cluster.inject(RGB.new)|sum,ins|sum+ins 93. candidate=sum/cluster.size 94. k_candidates current_distance then min_indx = index min_distance = current_distance end end if instance_cluster_mapinstance != min_indx then#trace the change change_count += 1 instance_cluster_mapinstance = min_indx end clustersmin_indx |= clustersmin_indx instance end puts change_count=#change_count break if change_count.zero? #M-step clusters.each_with_index do |cluster,index| center = RGB.new cluster.each do |instance| center += instance end center /= cluster.size random_centersindex = center # update center end end return clustersendinstances = File.open(rgbs.txt).each_line do |line| line.split(/t/).each do | rgb | r,g,b = rgb.split(/,/).collect|e| e.to_i instances RGB.new(r,g,b) endendclusters = k_means_cluster(instances,5,100)k_candidates = cl
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 广东管理学原理中级自考试题及答案
- 了解中医考试题及答案
- 广东法律自考试题及答案
- 控制原理考试题及答案
- 客舱清洁考试题及答案
- 铝电解综合工主管竞选考核试卷及答案
- 带式球团焙烧工入职考核试卷及答案
- 中药合剂工专项考核试卷及答案
- 押题宝典教师招聘之《小学教师招聘》通关考试题库1套附答案详解
- 钽钠还原火法冶炼工理论知识考核试卷及答案
- 友善主题班会课件
- 自动喷灌设计说明及安装大样
- 杭州市“教坛新秀”理论考试简答题汇总
- 2018年全国成人高考专升本政治试题答案
- 人教版(2019)必修三 Unit 3 Diverse Cultures Listening and Talking课件
- 医养结合机构服务质量评价标准(二级医养结合机构)
- 三年级上册数学课件-4.2 两、三位数除以一位数的笔算丨苏教版 (共34张PPT)
- 卡西欧PRO-TREK-PRW-6000使用手册-基础操作
- 建筑结构试验知识点总结
- 2022年公路工程竣交工验收办法实施细则范文
- 日本川崎市武藏小杉格林木(GrandTree)创新型购物中心调研分析报告课件
评论
0/150
提交评论