亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

Java編程實現基于用戶的協同過濾推薦算法代碼示例

2024-07-13 10:13:36
字體:
來源:轉載
供稿:網友

協同過濾簡單來說是利用某興趣相投、擁有共同經驗之群體的喜好來推薦用戶感興趣的信息,個人通過合作的機制給予信息相當程度的回應(如評分)并記錄下來以達到過濾的目的進而幫助別人篩選信息,回應不一定局限于特別感興趣的,特別不感興趣信息的紀錄也相當重要。

協同過濾又可分為評比(rating)或者群體過濾(social filtering)協同過濾以其出色的速度和健壯性,在全球互聯網領域炙手可熱

UserCF的核心思想即為根據用戶數據模擬向量相似度,我們根據這個相似度,來找出指定用戶的相似用戶,然后將相似用戶買過的而指定用戶沒有買的東西推薦給指定用戶,推薦度的計算也是結合了相似用戶與指定用戶的相似度累加。注意這里我們默認是用戶的隱反饋行為,所以每一個物品的影響因子默認為1。

package cn.csu.CFUtils;import java.util.HashMap;import java.util.HashSet;import java.util.Iterator;import java.util.Map;import java.util.Map.Entry;import java.util.Scanner;import java.util.Set;/**  * 基于用戶的協同過濾推薦算法實現 A a b d B a c C b e D c d e  * @author Administrator  *  */public class UserCF {	public static void main(String[] args) {		/**    * 輸入用戶-->物品條目 一個用戶對應多個物品    * 用戶ID 物品ID集合    * A  a b d    * B  a c    * C  b e    * D  c d e    */		Scanner scanner = new Scanner(System.in);		System.out.println("Input the total users number:");		//輸入用戶總量 		int N = scanner.nextint();		int[][] sparseMatrix = new int[N][N];		//建立用戶稀疏矩陣,用于用戶相似度計算【相似度矩陣】 		Map<String, Integer> userItemLength = new HashMap<>();		//存儲每一個用戶對應的不同物品總數 eg: A 3 		Map<String, Set<String>> itemUserCollection = new HashMap<>();		//建立物品到用戶的倒排表 eg: a A B 		Set<String> items = new HashSet<>();		//輔助存儲物品集合 		Map<String, Integer> userID = new HashMap<>();		//輔助存儲每一個用戶的用戶ID映射 		Map<Integer, String> idUser = new HashMap<>();		//輔助存儲每一個ID對應的用戶映射 		System.out.println("Input user--items maping infermation:<eg:A a b d>");		scanner.nextLine();		for (int i = 0; i < N ; i++){			//依次處理N個用戶 輸入數據 以空格間隔 			String[] user_item = scanner.nextLine().split(" ");			int length = user_item.length;			userItemLength.put(user_item[0], length-1);			//eg: A 3 			userID.put(user_item[0], i);			//用戶ID與稀疏矩陣建立對應關系 			idUser.put(i, user_item[0]);			//建立物品--用戶倒排表 			for (int j = 1; j < length; j ++){				if(items.contains(user_item[j])){					//如果已經包含對應的物品--用戶映射,直接添加對應的用戶 					itemUserCollection.get(user_item[j]).add(user_item[0]);				} else{					//否則創建對應物品--用戶集合映射 					items.add(user_item[j]);					itemUserCollection.put(user_item[j], new HashSet<String>());					//創建物品--用戶倒排關系 					itemUserCollection.get(user_item[j]).add(user_item[0]);				}			}		}		System.out.println(itemUserCollection.toString());		//計算相似度矩陣【稀疏】 		Set<Entry<String, Set<String>>> entrySet = itemUserCollection.entrySet();		Iterator<Entry<String, Set<String>>> iterator = entrySet.iterator();		while(iterator.hasNext()){			Set<String> commonUsers = iterator.next().getValue();			for (String user_u : commonUsers) {				for (String user_v : commonUsers) {					if(user_u.equals(user_v)){						continue;					}					sparseMatrix[userID.get(user_u)][userID.get(user_v)] += 1;					//計算用戶u與用戶v都有正反饋的物品總數				}			}		}		System.out.println(userItemLength.toString());		System.out.println("Input the user for recommendation:<eg:A>");		String recommendUser = scanner.nextLine();		System.out.println(userID.get(recommendUser));		//計算用戶之間的相似度【余弦相似性】 		int recommendUserId = userID.get(recommendUser);		for (int j = 0;j < sparseMatrix.length; j++) {			if(j != recommendUserId){				System.out.println(idUser.get(recommendUserId)+"--"+idUser.get(j)+"相似度:"+sparseMatrix[recommendUserId][j]/Math.sqrt(userItemLength.get(idUser.get(recommendUserId))*userItemLength.get(idUser.get(j))));			}		}		//計算指定用戶recommendUser的物品推薦度 		for (String item: items){			//遍歷每一件物品 			Set<String> users = itemUserCollection.get(item);			//得到購買當前物品的所有用戶集合 			if(!users.contains(recommendUser)){				//如果被推薦用戶沒有購買當前物品,則進行推薦度計算 				double itemRecommendDegree = 0.0;				for (String user: users){					itemRecommendDegree += sparseMatrix[userID.get(recommendUser)][userID.get(user)]/Math.sqrt(userItemLength.get(recommendUser)*userItemLength.get(user));					//推薦度計算				}				System.out.println("The item "+item+" for "+recommendUser +"'s recommended degree:"+itemRecommendDegree);			}		}		scanner.close();	}}

結果:

Input the total users number:6Input user--items maping infermation:<eg:A a b d>aassdddjshgjh2415231424dsjkj dklsjf ladkjsfdf8g78dfg78 8787 48787 sdfasd{dklsjf=[dsjkj], sdfasd=[48787], 8787=[df8g78dfg78], ladkjsf=[dsjkj]}{aassdd=0, df8g78dfg78=1, 48787=1, 2415231424=0, djshgjh=0, dsjkj=2}Input the user for recommendation:<eg:A>aassdd0aassdd--djshgjh相似度:NaNaassdd--2415231424相似度:NaNaassdd--dsjkj相似度:NaNaassdd--df8g78dfg78相似度:NaNaassdd--48787相似度:NaNThe item dklsjf for aassdd's recommended degree:NaNThe item sdfasd for aassdd's recommended degree:NaNThe item 8787 for aassdd's recommended degree:NaNThe item ladkjsf for aassdd's recommended degree:NaN

總結

以上就是本文關于Java編程實現基于用戶的協同過濾推薦算法代碼示例的全部內容,希望對大家有所幫助。如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲国产精品系列| 人九九综合九九宗合| 中文字幕亚洲国产| 国产极品jizzhd欧美| 亚洲黄色av女优在线观看| 久久免费少妇高潮久久精品99| 中文字幕v亚洲ⅴv天堂| 国产成人拍精品视频午夜网站| 亚洲国产精品一区二区三区| 亚洲欧美日本伦理| 欧美精品videos性欧美| 中文字幕日韩精品在线观看| 一区二区在线免费视频| 高清一区二区三区日本久| 国产视频丨精品|在线观看| 青草热久免费精品视频| 亚洲 日韩 国产第一| 久久成人国产精品| 亚洲自拍小视频免费观看| 欧美一级成年大片在线观看| 国产精品h片在线播放| 国产男人精品视频| 欧美中文在线视频| 精品久久久久人成| 亚洲人av在线影院| 97人洗澡人人免费公开视频碰碰碰| 亚洲va欧美va国产综合久久| 欧美精品在线视频观看| 按摩亚洲人久久| 国产精品视频最多的网站| 亚洲免费成人av电影| 久久久av网站| 欧美亚洲国产另类| 亲爱的老师9免费观看全集电视剧| 亚洲电影免费观看高清完整版| 亚洲福利在线播放| 欧美有码在线视频| 亚洲成人精品视频在线观看| 欧美极品美女视频网站在线观看免费| 亚洲国产欧美在线成人app| 日韩在线视频线视频免费网站| 亚洲xxxxx性| 国产精品99久久久久久人| 日韩小视频在线观看| 亚洲国产精品高清久久久| 国产欧美一区二区三区在线| 国产精品99一区| 91免费国产网站| 色偷偷88888欧美精品久久久| 中日韩午夜理伦电影免费| 色综合久久88| 日韩美女av在线免费观看| 精品人伦一区二区三区蜜桃免费| 97久久久免费福利网址| 亚洲欧美激情四射在线日| 成人精品久久av网站| 国产亚洲精品高潮| 欧美多人爱爱视频网站| 欧美精品生活片| 亚洲情综合五月天| 欧美国产高跟鞋裸体秀xxxhd| 91亚洲午夜在线| 日产日韩在线亚洲欧美| 久久夜色精品亚洲噜噜国产mv| 久久久久久久一区二区三区| 日韩国产欧美区| 日韩视频一区在线| 国产亚洲欧美日韩一区二区| 黑人巨大精品欧美一区二区免费| 亚洲欧美三级在线| 国产美女主播一区| 久久精品国产亚洲一区二区| 日韩av在线免播放器| 97在线视频免费| 亚洲欧美日韩一区二区三区在线| 久久亚洲一区二区三区四区五区高| 中文字幕免费精品一区| 日韩在线视频观看正片免费网站| 欧美精品在线视频观看| 国产精品视频一区二区高潮| 国产成人精品最新| 亚洲国产精品va在线| 亚洲性猛交xxxxwww| 成人情趣片在线观看免费| 欧美三级欧美成人高清www| 91久久综合亚洲鲁鲁五月天| 亚洲精品欧美一区二区三区| 538国产精品视频一区二区| 爽爽爽爽爽爽爽成人免费观看| 97视频在线观看视频免费视频| 美女国内精品自产拍在线播放| 欧美在线免费看| 亚洲国产精品女人久久久| 黄色成人在线免费| 亚洲欧美三级伦理| 日韩在线观看免费av| 欧美性猛交xxxx乱大交| 成人精品久久一区二区三区| 日韩精品久久久久久福利| 奇米影视亚洲狠狠色| 国产99久久精品一区二区| 日韩欧美黄色动漫| 精品一区二区三区电影| 国产成人久久久| 91精品久久久久久久久久| 91香蕉嫩草影院入口| 26uuu另类亚洲欧美日本一| 精品高清美女精品国产区| 亚洲欧洲偷拍精品| 欧美视频中文字幕在线| 精品亚洲夜色av98在线观看| 欧洲中文字幕国产精品| 日韩亚洲综合在线| 91美女片黄在线观看游戏| 国产成人精品最新| 亚洲天堂男人的天堂| 91成人国产在线观看| 久久精品久久久久久国产 免费| 亚洲精品国产精品久久清纯直播| 国产成人高清激情视频在线观看| 中文字幕欧美视频在线| 2019中文字幕全在线观看| 亚洲第一网站男人都懂| 国产精品久久久久久久久影视| 欧美激情网友自拍| 在线观看欧美成人| 国产精品99蜜臀久久不卡二区| 中国日韩欧美久久久久久久久| 精品久久久香蕉免费精品视频| 国产中文日韩欧美| 亚洲第一天堂无码专区| 日韩欧美在线免费观看| 亚洲欧美日韩精品久久奇米色影视| 91国内免费在线视频| 亚洲欧美日韩在线高清直播| 日韩日本欧美亚洲| 国产有码在线一区二区视频| 久久综合九色九九| 奇米一区二区三区四区久久| 91免费国产视频| 色偷偷91综合久久噜噜| 欧美一级高清免费播放| 欧美日韩亚洲精品一区二区三区| 91在线精品视频| 久久久久久国产三级电影| 日韩欧美a级成人黄色| 国产精品视频成人| 成人激情免费在线| 欧美日韩国产123| 国产欧美日韩丝袜精品一区| 日韩在线播放一区| 日韩中文有码在线视频| 久久久久久有精品国产| 国产aⅴ夜夜欢一区二区三区| 最近免费中文字幕视频2019| 亚洲www在线观看| 久久综合久中文字幕青草| 国产精品欧美日韩久久| 欧美电影免费观看高清| 国产精品成人av在线| 成人国产在线视频| 欧美在线视频一二三| 日韩美女免费线视频| 91九色在线视频|