# itemcf demo
# python 3.7
import numpy as np
import math
# test data
users=
["u1"
,"u2"
,"u3"
]item_like_list=
["a,b,c"
,"a,b,c,e,f"
,"a,e"
]# 單個商品喜歡人數
def check_1item
(item)
:return
sum(
list
(map
(lambda x:item in x,item_like_list)))
# print
(check_1item
("a"))
# 同時喜歡item1與item2的人數
def check_2items
(item1,item2)
: m =
sum(
list
(map
(lambda x: item1 in x and item2 in x,item_like_list)))
# print
("%s與%s的交集數為%d"
%(item1,item2,m)
)return m
# print
(check_2items
("a"
,"e"))
# 商品唯一列表
itemall=
set(
)for items in item_like_list:
for itemone in items.
split
(","):
itemall.
add(itemone)
itemunilist=
list
(itemall)
itemunilist.
sort()
print
("商品唯一總列表:"
)print
(itemunilist)
# 共現矩陣,對稱矩陣
mat = np.
mat(np.
zeros([
len(itemunilist)
,len
(itemunilist)
],dtype=
int)
)for i in range
(len
(itemunilist)):
for j in range
(len
(itemunilist)):
if(i == j)
:continue
m=check_2items
(itemunilist[i]
,itemunilist[j])if
(mat[i, j]==0
):mat[i, j]
= m if
(mat[j, i]==0
):mat[j, i]
= mprint
("商品共現矩陣統計:"
)print (mat)
# 喜歡單個商品的人數
singlecount=
for item in itemunilist:
singlecount[item]
=check_1item
(item)
print
("單個商品人數統計:"
)print
(singlecount)
# 余弦相似度矩陣
matcos = np.
mat(np.
zeros([
len(itemunilist)
,len
(itemunilist)
],dtype=
float))
for i in range
(mat.shape[0]
):for j in range
(mat.shape[1]
):matcos[i,j]
= mat[i,j]
/(math.
sqrt
(singlecount[itemunilist[i]])
*math.
sqrt
(singlecount[itemunilist[j]])
)print
("余弦相似度矩陣:"
)print
(matcos)
# 計算給u1的推薦,取k為3
# u1喜歡abc,所以計算剩餘的ef得分
# 先從余弦相似度矩陣的ef行,根據余弦值最大值排序取k個,e--
>a,f,b f--
>b,c,e
# 上面的集合與u1喜歡的abc取交集,e--
>a,b f--
>b,c
# (e,a)*1
+(e,b)
*1為u1對e物品的興趣度
# (f,b)*1
+(f,c)
*1為u1對f物品的興趣度
推薦系統初探:itemcf演算法實現知乎問題推薦
«推薦系統實踐 » p63
python推薦演算法課程 推薦系統演算法的基本思路
注意 2.本課程的核心目的是協助學員學習具體業務場景下的解決方案,為降低學員學習難度,課程中均盡量使用簡明易懂的 進行資料整理和模型實現,沒有出現任何晦澀高深的 並盡量基於pandas sklearn等標準包介面程式設計。故此希望看到筆者在課程中炫技的各位程式設計高手請勿購買本系列課程。課程簡介 推...
推薦演算法python資料集 推薦演算法資料集
movies recommendation movielens 基本內容 movielens資料集由grouplens研究組在 university of minnesota 明尼蘇達大學 與我們使用資料集無關 中組織的。movielens是電影評分的集合,有各種大小。資料集命名為1m,10m和20...
Python 常用的庫 推薦演算法
1 numpy 科學計算和資料分析 2 pandas 包含大量的庫和資料模型。包含操作大型資料集的工具,dataframe和series兩大資料結構 3 jieba中文分詞庫,三種分詞模式 精準模式,全模式,搜尋引擎模式,支援繁體分詞和自定義詞典 4 json 輕量級的資料交換格式,就是python...