資源簡介
基于用戶最近鄰模型的協同過濾算法的JAVA代碼實現,用戶相似度用Pearson相關系數進行計算。
代碼片段和文件信息
/*
?*?To?change?this?template?choose?Tools?|?Templates
?*?and?open?the?template?in?the?editor.
?*/
package?recommendation;
import?java.util.ArrayList;
import?java.util.Collections;
import?java.util.Comparator;
import?java.util.HashMap;
import?java.util.List;
import?java.util.Map;
import?java.util.Map.Entry;
public?class?testRecommend?{
????public?static?void?main(String[]?args)?{
????????Map>?userPerfMap?=?new?HashMap>();
????????Map?pref1?=?new?HashMap();
????????pref1.put(“A“?3);
????????pref1.put(“B“?4);
????????pref1.put(“C“?3);
????????pref1.put(“D“?5);
????????pref1.put(“E“?1);
????????pref1.put(“F“?4);
????????userPerfMap.put(“p1“?pref1);
????????Map?pref2?=?new?HashMap();
????????pref2.put(“A“?2);
????????pref2.put(“B“?4);
????????pref2.put(“C“?4);
????????pref2.put(“D“?5);
????????pref2.put(“E“?3);
????????pref2.put(“F“?2);
????????userPerfMap.put(“p2“?pref2);
????????Map?pref3?=?new?HashMap();
????????pref3.put(“A“?3);
????????pref3.put(“B“?5);
????????pref3.put(“C“?4);
????????pref3.put(“D“?5);
????????pref3.put(“E“?2);
????????pref3.put(“F“?1);
????????userPerfMap.put(“p3“?pref3);
????????Map?pref4?=?new?HashMap();
????????pref4.put(“A“?2);
????????pref4.put(“B“?2);
????????pref4.put(“C“?3);
????????pref4.put(“D“?4);
????????pref4.put(“E“?3);
????????pref4.put(“F“?2);
????????userPerfMap.put(“p4“?pref4);
????????Map?pref5?=?new?HashMap();
????????pref5.put(“A“?4);
????????pref5.put(“B“?4);
????????pref5.put(“C“?4);
????????pref5.put(“D“?5);
????????pref5.put(“E“?1);
????????pref5.put(“F“?0);
????????userPerfMap.put(“p5“?pref5);
????????Map?simUserSimMap?=?new?HashMap();
????????String?output1?=?“皮爾遜相關系數:“?output2?=?“歐幾里得距離:“;
????????for?(Entry>?userPerfEn?:?userPerfMap.entrySet())?{
????????????String?userName?=?userPerfEn.getKey();
????????????if?(!“p5“.equals(userName))?{
????????????????double?sim?=?getUserSimilar(pref5?userPerfEn.getValue());
????????????????double?distance?=?getEuclidDistance(pref5?userPerfEn.getValue());
????????????????output1?+=?“p5與“?+?userName?+?“之間的相關系數:“?+?sim?+?““;
????????????????output2?+=?“p5與“?+?userName?+?“之間的距離:“?+?distance?+?““;
????????????????simUserSimMap.put(userName?sim);
????????????}
????????}
????????System.out.println(output1);
????????System.out.println(output2);
????????Map>?simUserObjMap?=?new?HashMap>();
????????Map?pobjMap1?=?new?HashMap();
????????pobjMap1.put(“一夜驚喜“?3);
????????pobjMap1.put(“環太平洋“?4);
????????pobjMap1.put(“變形金剛“?3);
????????simUserObjMap.put(“p1“?pobjMap1);
????????M
評論
共有 條評論