首页 > 开发 > Java > 正文

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

2024-07-14 08:41:29
字体:
来源:转载
供稿:网友

本文实例讲述了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教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表