服务器之家

服务器之家 > 正文

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

时间:2021-05-14 10:50     来源/作者:Bryan__

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
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程序设计有所帮助。

原文链接:https://blog.csdn.net/bryan__/article/details/50959402

相关文章

热门资讯

2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全 2019-12-26
yue是什么意思 网络流行语yue了是什么梗
yue是什么意思 网络流行语yue了是什么梗 2020-10-11
背刺什么意思 网络词语背刺是什么梗
背刺什么意思 网络词语背刺是什么梗 2020-05-22
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总 2020-11-13
2021德云社封箱演出完整版 2021年德云社封箱演出在线看
2021德云社封箱演出完整版 2021年德云社封箱演出在线看 2021-03-15
返回顶部