利用 Python 实现简单的基于用户的商品推荐模型
设计思想:
找出与该用户具有相似购物习惯的其他用户,例如他们曾经购买过一些相同的商品,然后将其他用户购买过但是该用户未曾购买的商品推荐给他。
简单讲就是当一个用户 A 需要个性化推荐时,可以先找到和他兴趣相似的用户群体 C,然后把 C 喜欢的、并且 A 没有听说过的物品推荐给 A,也就是基于用户的商品推荐算法。
实现原理:
① 找到与目标用户兴趣相似的用户集合;
② 找到这个集合中用户喜欢的、并且目标用户没有听说过的物品推荐给目标用户。
实验结果:
实验源码:
uid_score_itemid.txt
summer,4.0 ,1
lina,5.0 ,1
tom,5.0 ,1
xixi,5.0 ,1
aliyun,5.0 ,1
summer,5.0 ,2
xiaoming,4.0 ,2
aliyun,4.0 ,2
lina,5.0 ,2
odi,5.0 ,2
summer,5.0 ,3
violetblue,5.0 ,3
frogsun,4.0 ,3
lina,4.0 ,3
Alaleio,5.0 ,3
alod,1.0 ,4
tom,1.0 ,4
aliyun,1.0 ,4
lina,1.0 ,4
keol,1.0 ,4
shih3,4.0 ,5
tom,5.0 ,5
summer,4.0 ,5
meimei,4.0 ,5
xixi,4.0 ,5
baseUserRecomment.py
# -*-coding:utf-8-*-
from math import sqrt
fp = open("uid_score_itemid.txt", "r")
users = {
}
for line in open("uid_score_itemid.txt"):
lines = line.strip().split(",")
if lines[0] not in users:
users[lines[0]] = {
}
users[lines[0]][lines[2]] = float(lines[1])
class recommender:
# data:数据集,这里指users
# k:表示得出最相近的k的近邻
# metric:表示使用计算相似度的方法
# n:表示推荐item的个数
def __init__(self, data, k=3, metric='pearson', n=12):
self