亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java實(shí)現(xiàn)的計算稀疏矩陣余弦相似度示例

 更新時間:2018年07月09日 15:09:30   作者:Bryan__  
這篇文章主要介紹了Java實(shí)現(xiàn)的計算稀疏矩陣余弦相似度功能,涉及java基于HashMap的數(shù)值計算相關(guān)操作技巧,需要的朋友可以參考下

本文實(shí)例講述了Java實(shí)現(xiàn)的計算稀疏矩陣余弦相似度功能。分享給大家供大家參考,具體如下:

import java.util.HashMap;
public class MyUDF{
  /**
   * UDF Evaluate接口
   *
   * UDF在記錄層面上是一對一,字段上是一對一或多對一。 Evaluate方法在每條記錄上被調(diào)用一次,輸入為一個或多個字段,輸出為一個字段
   */
  public Double evaluate(String a, String b) {
    // TODO: 請按需要修改參數(shù)和返回值,并在這里實(shí)現(xiàn)你自己的邏輯
    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));
  }
}

運(yùn)行結(jié)果:

0.9135468796041984

更多關(guān)于java算法相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點(diǎn)技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總

希望本文所述對大家java程序設(shè)計有所幫助。

相關(guān)文章

  • SpringBoot項(xiàng)目在啟動后自動關(guān)閉的實(shí)現(xiàn)

    SpringBoot項(xiàng)目在啟動后自動關(guān)閉的實(shí)現(xiàn)

    我們在寫spring?boot?web項(xiàng)目時,有時會遇到啟動后立即關(guān)閉的情況,?本文主要介紹了SpringBoot項(xiàng)目在啟動后自動關(guān)閉的實(shí)現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2024-01-01
  • SpringBoot利用jpa連接MySQL數(shù)據(jù)庫的方法

    SpringBoot利用jpa連接MySQL數(shù)據(jù)庫的方法

    這篇文章主要介紹了SpringBoot利用jpa連接MySQL數(shù)據(jù)庫的方法,本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-10-10
  • java實(shí)現(xiàn)同態(tài)加密算法的實(shí)例代碼

    java實(shí)現(xiàn)同態(tài)加密算法的實(shí)例代碼

    這篇文章主要給大家介紹了關(guān)于java實(shí)現(xiàn)同態(tài)加密算法的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • AQS核心流程解析cancelAcquire方法

    AQS核心流程解析cancelAcquire方法

    可以清楚的看到在互斥鎖和共享鎖的拿鎖過程中都是有調(diào)用此方法的,而cancelAcquire()方法是寫在finally代碼塊中,并且使用failed標(biāo)志位來控制cancelAcquire()方法的執(zhí)行
    2023-04-04
  • java線程之使用Runnable接口創(chuàng)建線程的方法

    java線程之使用Runnable接口創(chuàng)建線程的方法

    本篇文章介紹了,java中使用Runnable接口創(chuàng)建線程的方法。需要的朋友參考下
    2013-05-05
  • 基于XML配置Spring的自動裝配過程解析

    基于XML配置Spring的自動裝配過程解析

    這篇文章主要介紹了基于XML配置Spring的自動裝配過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-10-10
  • 淺談Java 三種方式實(shí)現(xiàn)接口校驗(yàn)

    淺談Java 三種方式實(shí)現(xiàn)接口校驗(yàn)

    這篇文章主要介紹了淺談Java 三種方式實(shí)現(xiàn)接口校驗(yàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • Java用GDAL讀寫shapefile的方法示例

    Java用GDAL讀寫shapefile的方法示例

    Shapefile文件是描述空間數(shù)據(jù)的幾何和屬性特征的非拓?fù)鋵?shí)體矢量數(shù)據(jù)結(jié)構(gòu)的一種格式,由ESRI公司開發(fā)。這篇文章給大家介紹了Java如何用GDAL讀寫shapefile的方法示例,有需要的朋友們可以參考借鑒,下面來一起看看吧。
    2016-12-12
  • spring與mybatis整合配置文件

    spring與mybatis整合配置文件

    本文通過實(shí)例代碼給大家介紹了spring與mybatis整合配置文件的方法,需要的朋友參考下吧
    2017-09-09
  • Java枚舉類型在switch語句正確使用方法詳解

    Java枚舉類型在switch語句正確使用方法詳解

    這篇文章主要介紹了Java枚舉類型在switch語句正確使用方法詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-07-07

最新評論