이 기사에서는 희소 행렬을 계산하는 코사인 유사성 함수의 Java 구현에 대해 설명합니다. 다음과 같이 참조에 대해 공유하십시오.
import java.util.hashmap; public class myudf { /*** udf 인터페이스 평가** udf는 레코드 수준에서 일대일이며, 현장에서 일대일 또는 다수입니다. 평가 방법은 각 레코드에서 한 번 호출되고, 하나 이상의 필드로 입력하고, 하나의 필드로 출력*/ 공개 이중 평가 (문자열 A, 문자열 b) {// todo : 필요에 따라 매개 변수와 반환 값을 수정하고 (a == null || b == null) 0.0을 반환하는 경우 자신의 논리를 구현하십시오. 문자열 temp1 [] = a.split ( ","); 문자열 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 (문자열 temp : temp2) {string t [] = temp.split ( ":"); map2.put (t [0], double.parsedouble (t [1])); } double fenzi = 0; 이중 fenmu1 = 0; for (문자열 i : map1.keyset ()) {double value = map1.get (i); if (map2.get (i)! = null) {fenzi+= value*map2.get (i); } fenmu1+= value*값; } double fenmu2 = 0; for (double i : map2.values ()) {fenmu2+= i*i; } double fenmu = math.sqrt (fenmu1)*math.sqrt (fenmu2); 반환 펜지/페미; } public static 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.evaluate (a, b)); }}실행 결과 :
0.9135468796041984
Java 알고리즘에 대한 자세한 내용은이 사이트에 관심이있는 독자들이 주제를 볼 수 있습니다. "Java 데이터 구조 및 알고리즘 자습서", "Java Operation Dom Node Tips 요약", "Java 파일 및 디렉토리 작동 팁 요약"및 "Java Cache Operation Tips의 요약"을 볼 수 있습니다.
이 기사가 모든 사람의 Java 프로그래밍에 도움이되기를 바랍니다.