Este artículo describe la implementación de Java de la función de similitud de coseno de calcular la matriz dispersa. Compártelo para su referencia, como sigue:
import java.util.hashmap; clase pública myudf { /*** UDF Evalúe la interfaz** UDF es uno a uno en el nivel de registro, y uno a uno o muchos a uno en el campo. El método de evaluación se llama una vez en cada registro, ingrese como uno o más campos, y salga como un campo*/ evaluación doble pública (cadena A, cadena b) {// TODO: Modifique los parámetros y los valores de retorno según sea necesario, e implemente su propia lógica aquí si (a == null || b == null) return 0.0; Cadena temp1 [] = a.split (","); Cadena 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], doble.parsedOuble (t [1])); } for (string temp: temp2) {string t [] = temp.split (":"); map2.put (t [0], doble.parsedOuble (t [1])); } doble fenzi = 0; doble fenmu1 = 0; for (cadena i: map1.keyset ()) {value doble = map1.get (i); if (map2.get (i)! = null) {fenzi+= valor*map2.get (i); } fenmu1+= valor*valor; } doble fenmu2 = 0; para (doble i: map2.values ()) {fenmu2+= i*i; } doble fenmu = math.sqrt (fenmu1)*math.sqrt (fenmu2); return fenzi/fenmu; } public static void main (string [] args) {String a = "12: 500,14: 100,20: 200"; Cadena B = "12: 500,14: 100,30: 100"; Myudf myudf = new myudf (); System.out.println (myudf.evaluate (a, b)); }}Resultados de ejecución:
0.9135468796041984
Para obtener más información sobre los algoritmos de Java, los lectores interesados en este sitio pueden ver los temas: "Estructura de datos Java y tutorial de algoritmo", "Resumen de las puntas de nodo de operación de Java DOM", "Resumen de Java Archivo y TIPS de operación de directorio" y "Summary of Java Cache Operation Tips" TIPS ""
Espero que este artículo sea útil para la programación Java de todos.