欢迎来到代码驿站!

JAVA代码

当前位置:首页 > 软件编程 > JAVA代码

Java实现的计算稀疏矩阵余弦相似度示例

时间:2021-01-08 12:20:52|栏目:JAVA代码|点击:

本文实例讲述了Java实现的计算稀疏矩阵余弦相似度功能。分享给大家供大家参考,具体如下:

import java.util.HashMap;
public class MyUDF{
  /**
   * UDF Evaluate接口
   *
   * UDF在记录层面上是一对一,字段上是一对一或多对一。 Evaluate方法在每条记录上被调用一次,输入为一个或多个字段,输出为一个字段
   */
  public Double evaluate(String a, String b) {
    // TODO: 请按需要修改参数和返回值,并在这里实现你自己的逻辑
    if(a==null || b==null)
      return 0.0;
    String temp1[]=a.split(",");
    String temp2[]=b.split(",");
    if (temp1==null || temp2==null) {
      return 0.0;
    }
    HashMap<String, Double> map1=new HashMap<String, Double>();
    HashMap<String, Double> map2=new HashMap<String, Double>();
    for(String temp:temp1)
    {
      String t[]=temp.split(":");
      map1.put(t[0], Double.parseDouble(t[1]));
    }
    for(String temp:temp2)
    {
      String t[]=temp.split(":");
      map2.put(t[0], Double.parseDouble(t[1]));
    }
    double fenzi=0;
    double fenmu1=0;
    for(String i:map1.keySet())
    {
      double value=map1.get(i);
      if (map2.get(i)!=null) {
        fenzi+=value*map2.get(i);
      }
      fenmu1+=value*value;
    }
    double fenmu2=0;
    for(double i:map2.values())
    {
      fenmu2+=i*i;
    }
    double fenmu=Math.sqrt(fenmu1)*Math.sqrt(fenmu2);
    return fenzi/fenmu;
  }
  public static void main(String[] args) {
    String a="12:500,14:100,20:200";
    String b="12:500,14:100,30:100";
    MyUDF myUDF=new MyUDF();
    System.out.println(myUDF.evaluate(a, b));
  }
}

运行结果:

0.9135468796041984

更多关于java算法相关内容感兴趣的读者可查看本站专题:《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总

希望本文所述对大家java程序设计有所帮助。

上一篇:优雅地在Java 8中处理异常的方法详解

栏    目:JAVA代码

下一篇:如何使用Spring RestTemplate访问restful服务

本文标题:Java实现的计算稀疏矩阵余弦相似度示例

本文地址:http://www.codeinn.net/misctech/42283.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有