主题请求
找出页面中出现频率最高的标签!
个人解决方案:
var eles=document . getelementsbytagname(' * ');var RS=[];for(var I=0;雅思. length;I){ var tag _ name=eles[I]. tagname . tolowercase();if(未定义!=tag _ name){ if(insonarray(RS,tag_name)) { addWeight(rs,tag _ name);} else { RS . push({ tag : tag _ name,weight : 1 })} } } sortbyweak(RS);思考:
获取所有标签-根据标签名称聚类-根据权重排序。
如果有更好的方法,欢迎交流。
我们来看看今天的问题:
获取一张图片的前N个主色值类似于上面大多数标签的问题,数据大小不同,但其他都差不多。
这个问题的思路很清晰。第一步是获取图片的数据;其次,根据颜色值进行聚类;第三步是对聚类结果进行排序。所以这一次,就是基于这样的想法。
1.数据采集
图像数据采集采用canvas的getImageData()方法,可以获取图像每个像素的rgba数据。
var img data as=context . getimagedata(0,0,150,150);//获取当前画布数据var img data=img data as . data;//get rgba data var i=0,len=imgdata.lengthvar arr=[];//将图片的rgba数据推入新数组(I;伊琳;i=4 ) { arr.push(imgdata[i]'、' imgdata[i 1]'、' imgdata[i 2]'、' img data[I 3]);}这样就可以得到图片的所有数据,剩下的就是数学题了。
2.数据分组
重复数据消除,合并相同的颜色值,并记录颜色值的数量(权重)
聚类方法有很多,如直接数理统计,或k-means,决策树,朴素贝叶斯,支持向量机等。你可以使用任何你喜欢的方法,但是你仍然需要考虑不同方法的适用性和效率。我们将得到这样一个数组[{rgba:' 21,12,45,0 ',weight: 12},{ 0.}]来记录颜色值和出现时间。
3.对聚类结果进行排序
对上一步得到的json数组进行排序,按照属性权重的值由大到小或者由小到大进行排序,排序算法不用解释。
4.预览结果
5、做什么
相似颜色值的组合
rgba(234,234,234,1)和rgba(234,235,235,1)是否相似需要合并成一个值,这里会涉及到相似度的计算。
优化聚类算法
提高复杂性、性能和执行速度
结合了视觉化的东西
6.摘要
最好在后端处理大量数据,毕竟可以使用分布式框架等多端计算。
但是浏览器处理数据的能力仍然有限。