协同过滤算法之通过Jaccard相似度计算推荐结果原理及代码实现
生活随笔
收集整理的這篇文章主要介紹了
协同过滤算法之通过Jaccard相似度计算推荐结果原理及代码实现
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- Jaccard相似度介紹
- Jaccard相似度計算推薦結果代碼及實現
- 基本介紹
- Jaccard相似度計算代碼
- 協同過濾推薦代碼實現
Jaccard相似度介紹
- 兩個集合的交集元素個數在并集中所占的比例, 非常適用于布爾向量表示
- 分子是兩個布爾向量做點積計算, 得到的就是交集元素的個數
- 分母是兩個布爾向量做或運算, 再求元素和
- 杰卡德相似度適用于隱式反饋數據(0,1布爾值),主要應用于是否收藏,是否點擊,是否加購物車。
簡單地來說就是交集/并集
J(A,B)=|A∩B|/|A∪B|
Jaccard相似度計算推薦結果代碼及實現
基本介紹
-
我們通過簡單的一個DataFrame例子來實現其算法,最終輸出結果。通常有兩種協同過濾:基于用戶的協同過濾推薦(User-based CF)、基于物品的協同過濾推薦(Item-based CF)。這里我們會構建一個用戶+物品的DataFrame。
-
這里為了方便,可以使用jupyternotebook進行書寫
Jaccard相似度計算代碼
#導入杰卡德相似度 from sklearn.metrics import jaccard_score #計算iPad和MacBook的相似度 jaccard_score(df['iPad'],df['MacBook']) #結果 0.2 #計算所有的數據兩兩的杰卡德相似系數 from sklearn.metrics.pairwise import pairwise_distances #計算所有的數據兩兩的杰卡德相似系數(1-jaccard距離就是相似度) user_similar = 1-pairwise_distances(df.values,metric='jaccard') user_similar = pd.DataFrame(user_similar,columns=users,index = users) #用戶相似度 user_similar #以相同的思路我們來試著做一下物品的相似度(記住物品需要先進行轉置才可以計算) item_similar = 1-pairwise_distances(df.T.values,metric='jaccard') item_similar = pd.DataFrame(item_similar,columns=items,index = items) item_similar協同過濾推薦代碼實現
- 通過計算杰卡德相似度,已經得出了用戶相似度,接下來我們就需要進行協同過濾推薦了。
- 實現協同過濾推薦有2個步驟:
總結
以上是生活随笔為你收集整理的协同过滤算法之通过Jaccard相似度计算推荐结果原理及代码实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一体式表观高光谱仪Triplet AOP
- 下一篇: 黑月教主去水印软件_去视频水印的软件有什