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