В этой статье описывается реализация Java функции сходства косинуса для расчета разреженной матрицы. Поделитесь этим для вашей ссылки, следующим образом:
Импорт java.util.hashmap; открытый класс myudf { /*** udf Оценить интерфейс** udf-один на один на уровне записи, а один-один или много-один-на этой области. Метод оценки вызывается один раз на каждой записи, вводится как одно или несколько полей и выводит как одно поле*/ public Double оценка (строка A, строка B) {// todo: пожалуйста, измените параметры и возвращаемые значения по мере необходимости и реализуйте свою собственную логику здесь, если (a == null || b == null) возврат 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); вернуть Фензи/Фенму; } public static void main (string [] args) {string 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 Dom Node», «Сводка Java File и каталог
Я надеюсь, что эта статья будет полезна для всех Java Programming.