您的位置:首页 > 其它

简单的推荐系统环境

2014-02-17 22:34 204 查看
很早以前就听过推荐系统这个词,然后浏览一起网页侧边栏的广告时也经常看到京东、淘宝、LifeVC等广告的推荐产品,最近比较有空,所以希望深入了解一下什么是推荐系统。所以特意搭了一个环境来试一试。
1. 安装
这个简单的环境是基于Python的,然后利用了Python的库python-recsys。首先先下载python-recsys,地址是http://github.com/ocelma/python-recsys,然后然后要先安装这个库的依赖库,用以下方法直接按照即可(Mac 平台下!)。
sudo easy_install csc-pysparse
sudo easy_install networkx
sudo easy_install divisi2
安装完这些依赖库以后安装python-recsys即可。
tar -zxvf python-recsys.tar.gz
cd python-recsys
sudo python setup.py install


2.使用
安装完以后就可以使用了,这里使用奇异值分解(SVD)的方法来进行推荐,算法的原理见 http://www.cnblogs.com/FengYan/archive/2012/05/06/2480664.html。然后为了测试结果,我们首先需要获得数据集,数据集可以在网站http://grouplens.org/datasets/movielens/中下载,我们这里使用1M大小的数据,使用的文件是ratings.dat。然后就可以进行推荐了,详细的代码如下:
from recsys.algorithm.factorize import SVD
svd = SVD()
svd.load_data(filename='./data/movielens/ratings.dat', sep='::', format={'col':0, 'row':1, 'value':2, 'ids': int})
#假设奇异值的个数为100
k = 100
svd.compute(k=k, min_values=10, pre_normalize=None, mean_center=True, post_normalize=True)
#你可以计算两个电影的相似度
ITEMID1 = 1
ITEMID2 = 2355
print svd.similarity(ITEMID1, ITEMID2)
#或者得到类似的电影
print svd.similar(ITEMID1)
#再预测一下用户对电影的评分
MIN_RATING = 1.0
MAX_RATING = 5.0
USERID1 = 1
print svd.predict(ITEMID1, USERID, MIN_RATING, MAX_RATING)
#重头戏,推荐电影给用户!
print svd.recommend(USERID, is_row = False)
#谁应该看这部电影
print svd.recommend(ITEMID)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: