python智能推荐系统教程_在 Python 中实现你自己的推荐系统

本文介绍了推荐系统的基本原理,特别是协同过滤技术,包括基于内容和协同过滤两种类型。通过使用MovieLens数据集,展示了如何在Python中实现基于内存的协同过滤(用户-产品和产品-产品)以及基于模型的协同过滤,特别是利用奇异值分解(SVD)。文章讨论了不同方法的优缺点,如基于内存的CF在扩展性和冷启动问题上的局限,以及SVD在处理稀疏数据的优势。最后,提到了混合推荐系统作为提高预测精度的解决方案。
摘要由CSDN通过智能技术生成

来源:http://t.cn/R50dT09

作者: cambridgecoding

翻译:ictar

现今,推荐系统被用来个性化你在网上的体验,告诉你买什么,去哪里吃,甚至是你应该和谁做朋友。人们口味各异,但通常有迹可循。人们倾向于喜欢那些与他们所喜欢的东西类似的东西,并且他们倾向于与那些亲近的人有相似的口味。推荐系统试图捕捉这些模式,以助于预测你还会喜欢什么东西。电子商务、社交媒体、视频和在线新闻平台已经积极的部署了它们自己的推荐系统,以帮助它们的客户更有效的选择产品,从而实现双赢。

两种最普遍的推荐系统的类型是基于内容和协同过滤(CF)。协同过滤基于用户对产品的态度产生推荐,也就是说,它使用“人群的智慧”来推荐产品。与此相反,基于内容的推荐系统集中于物品的属性,并基于它们之间的相似性为你推荐。一般情况下,协作过滤(CF)是推荐引擎的主力。该算法具有能够自身进行特征学习的一个非常有趣的特性,这意味着它可以开始学习使用哪些特性。CF可以分为基于内存的协同过滤和基于模型的协同过滤。在本教程中,你将使用奇异值分解(SVD)实现基于模型的CF和通过计算余弦相似实现基于内存的CF。

我们将使用MovieLens数据集,它是在实现和测试推荐引擎时所使用的最常见的数据集之一。它包含来自于943个用户以及精选的1682部电影的100K个电影打分。你应该添加解压缩的movielens数据文件夹你的notebook目录下。你也可以在这里下载数据集。import numpyasnp

import pandasaspd

读入u.data文件,它包含完整的数据集。你可以 file, which contains the full dataset. You can在这里(http://files.grouplens.org/datasets/movielens/ml-100k-README.txt)阅读该数据集的简要说明。

header=['user_id','item_id','rating','timestamp']

df=pd.read_csv('ml-100k/u.data',sep='\t',names=header)

先看看数据集中的前两行。接下来,让我们计算唯一用户和电影的数量。n_users=df.user_id.unique().shape[0]

n_items=df.item_id.unique().shape[0]

print'Number of users = '+str(n_users)+' | Number of movies = '+str(n_items)Number of users = 943 | Number of movies =1682

你可以使用scikit-learn库将数据集分割成测试和训练。Cross_validation.train_test_split根据测试样本的比例(test_size),本例中是0.25,来将数据混洗并分割成两个数据集。from sklearn import cross_validationascv

train_data,test_data=cv.train_test_split(df,test_size=0.25)

基于内存的协同过滤

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值