Java代码——计算两个HashMap的余弦相似度
2014-04-17 10:49
176 查看
1.一种效率较高的HashMap遍历方法:
2.余弦相似度计算:
![](http://img.blog.csdn.net/20140417104440140?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTGVtb25fc2lzdGVy/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
3.使用HashMap来存储两个向量,并计算其余弦相似度:
Map map = new HashMap(); Iterator iter = map.entrySet().iterator(); while (iter.hasNext()) { Map.Entry entry = (Map.Entry) iter.next(); Object key = entry.getKey(); Object val = entry.getValue(); }
2.余弦相似度计算:
3.使用HashMap来存储两个向量,并计算其余弦相似度:
public class Similarity { public static float computeSim(HashMap<String,Float> map1,HashMap<String,Float> map2){ float result = 0; Iterator iter1 = map1.entrySet().iterator(); Iterator iter2 = map2.entrySet().iterator(); Float sum1 = (float) 0; Float sum2 = (float) 0; Float sum3 = (float) 0; Float v1,v2; while(iter2.hasNext()){ Entry entry = (Entry) iter2.next(); v2 = (Float) entry.getValue(); sum2+=v2*v2; } String key; while(iter1.hasNext()){ Entry entry = (Entry) iter1.next(); v1 = (Float) entry.getValue(); key = (String) entry.getKey(); sum1 += v1*v1; if(map2.containsKey(key)){ v2 = map2.get(key); sum3 += v1*v2; } } result = sum3/(sum1+sum2); return result; } }
相关文章推荐
- java实现计算两个整数的最大公约数代码及附图
- JAVA基础(31) Java代码计算两个经纬度之间的距离
- JAVA作业—从命令行输入两个参数打开文件并计算代码行数 .
- JAVA作业—从命令行输入两个参数打开文件并计算代码行数
- java计算两个日期之间相差的天数
- java计算两个日期之间相差的天数
- Java计算两个日期相差几年几月几时几分几秒,Calender方式实现
- 如何计算并测量ABAP及Java代码的环复杂度Cyclomatic complexity
- 一行代码比较用户A和用户B的年龄大小(两个日期计算)
- Java小程序计算圆周率代码
- C#计算两个时间差的方法代码分享
- php 计算两个时间相差的天数、小时数、分钟数、秒数详解及实例代码
- Java函数2:计算两个日期相差的天数
- java计算两个任意日期间的相差的天数(自然天)
- Java:计算两个日期相差的天数
- java中计算两个日期的月数差
- php 计算两个时间相差的天数、小时数、分钟数、秒数详解及实例代码
- java精确除法计算,四舍五入 Java问题通用解决代码
- javaScript 计算两个日期的天数相差(示例代码)
- java代码:统计一本小说中的数字,并计算前10所占百分比