本文实例讲述了Java实现的计算稀疏矩阵余弦相似度功能。分享给大家供大家参考,具体如下:
进口java.util.HashMap; 公开课MyUDF {/* * * UDF评估接口 * * UDF在记录层面上是一对一,字段上是一对一或多对一。评估方法在每条记录上被调用一次,输入为一个或多个字段,输出为一个字段 */公共双重评估(字符串,字符串b) {//TODO:请按需要修改参数和返回值,并在这里实现你自己的逻辑 如果(==null | | b==null) 返回0.0; 字符串temp1 []=a.split (", "); 字符串temp2 []=b.split (", "); 如果(temp1==null | | temp2==null) { 返回0.0; } Double> HashMap<字符串;map1=new HashMap<字符串,Double> (); Double> HashMap<字符串;map2=new HashMap<字符串,Double> (); (字符串临时:temp1) { 字符串t []=temp.split (“:”); map1。把(t [0] Double.parseDouble (t [1])); } (字符串临时:temp2) { 字符串t []=temp.split (“:”); map2。把(t [0] Double.parseDouble (t [1])); } 双fenzi=0; 双fenmu1=0; (我:字符串map1.keySet ()) { 双精度值=https://www.yisu.com/zixun/map1.get(我); 如果(map2.get(我)!=null) { fenzi +=* map2.get价值(我); } fenmu1 +=*价值; } 双fenmu2=0; (双我:map2.values ()) { fenmu2 +=*我; } 双fenmu=Math.sqrt (fenmu1) * Math.sqrt (fenmu2); 返回fenzi/fenmu; } 公共静态void main (String [] args) { 字符串a=" 12:500、14:100 20:200”; 字符串b=" 12:500、14:100 30:100”; MyUDF MyUDF=new MyUDF (); System.out.println (myUDF。评估(a, b)); } } >之前运行结果:
0.9135468796041984 引用>
更多关于java算法相关内容感兴趣的读者可查看本站专题:《java数据结构与算法教程》、《java操作DOM节点技巧总结》,《java文件与目录操作技巧汇总》和《java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。
Java实现的计算稀疏矩阵余弦相似度示例