文档章节

crab-python的推荐系统

深蓝苹果
 深蓝苹果
发布于 2014/05/05 13:16
字数 758
阅读 918
收藏 1

项目:

是一个发展中的推荐系统

http://www.oschina.net/p/crab


安装:

( 优先用easy_install )

* numpy

    Q:遇到缺少vcvarsall.bat的问题

    A: 当已经安装了vs20xx时,可设置环境变量

        SET VS90COMNTOOLS=%VS100COMNTOOLS%

    Q:遇到各种编译错误

    A:直接上win的安装版,注意和python版本对应

        http://sourceforge.net/projects/numpy/files/NumPy/

* Scipy

    直接上win的安装版,注意和python版本对应

        http://sourceforge.net/projects/scipy/files/Scipy 

* scikits.learn

    依赖numpy

* matplotlib 

    为了构建文档和一些示例代码

     依赖较多,可跳过

* crab

    easy_install安装效果不好,import scikits.crab提示找不到

    改在 https://github.com/muricoca/crab 下载源码包,用python setup.py install 安装

     (在linux下也是同样情况)

----------------------------------

* 测试

  保存为文件,直接python执行即可

#!/usr/bin/env python
#coding=utf-8   


def base_demo():
	# 基础数据-测试数据
	from scikits.crab import datasets
	movies = datasets.load_sample_movies()
	#print movies.data
	#print movies.user_ids
	#print movies.item_ids

	#Build the model
	from scikits.crab.models import MatrixPreferenceDataModel
	model = MatrixPreferenceDataModel(movies.data)

	#Build the similarity
	# 选用算法 pearson_correlation
	from scikits.crab.metrics import pearson_correlation
	from scikits.crab.similarities import UserSimilarity
	similarity = UserSimilarity(model, pearson_correlation)

	# 选择 基于User的推荐
	from scikits.crab.recommenders.knn import UserBasedRecommender
	recommender = UserBasedRecommender(model, similarity, with_preference=True)
	print recommender.recommend(5)	# 输出个结果看看效果 Recommend items for the user 5 (Toby)

	# 选择 基于Item 的推荐(同样的基础数据,选择角度不同)
	from scikits.crab.recommenders.knn import ItemBasedRecommender
	recommender = ItemBasedRecommender(model, similarity, with_preference=True)
	print recommender.recommend(5)	# 输出个结果看看效果 Recommend items for the user 5 (Toby)

def itembase_demo():
    from scikits.crab.models.classes import MatrixPreferenceDataModel
    from scikits.crab.recommenders.knn.classes import ItemBasedRecommender
    from scikits.crab.similarities.basic_similarities import ItemSimilarity
    from scikits.crab.recommenders.knn.item_strategies import ItemsNeighborhoodStrategy
    from scikits.crab.metrics.pairwise import euclidean_distances
    movies = {
			'Marcel Caraciolo': \
				{'Lady in the Water': 2.5, 'Snakes on a Plane': 3.5, 'Just My Luck': 3.0, 'Superman Returns': 3.5, 'You, Me and Dupree': 2.5, 'The Night Listener': 3.0}, \
			'Paola Pow': \
				{'Lady in the Water': 3.0, 'Snakes on a Plane': 3.5, 'Just My Luck': 1.5, 'Superman Returns': 5.0, 'The Night Listener': 3.0, 'You, Me and Dupree': 3.5}, \
			'Leopoldo Pires': \
				{'Lady in the Water': 2.5, 'Snakes on a Plane': 3.0, 'Superman Returns': 3.5, 'The Night Listener': 4.0}, 
			'Lorena Abreu': \
				{'Snakes on a Plane': 3.5, 'Just My Luck': 3.0, 'The Night Listener': 4.5, 'Superman Returns': 4.0, 'You, Me and Dupree': 2.5}, \
			'Steve Gates': \
				{'Lady in the Water': 3.0, 'Snakes on a Plane': 4.0, 'Just My Luck': 2.0, 'Superman Returns': 3.0, 'The Night Listener': 3.0, 'You, Me and Dupree': 2.0}, \
			'Sheldom':\
				{'Lady in the Water': 3.0, 'Snakes on a Plane': 4.0, 'The Night Listener': 3.0, 'Superman Returns': 5.0, 'You, Me and Dupree': 3.5}, \
			'Penny Frewman': \
				{'Snakes on a Plane':4.5,'You, Me and Dupree':1.0, 'Superman Returns':4.0}, 'Maria Gabriela': {}
			}
    model = MatrixPreferenceDataModel(movies)
    items_strategy = ItemsNeighborhoodStrategy()
    similarity = ItemSimilarity(model, euclidean_distances)
    recsys = ItemBasedRecommender(model, similarity, items_strategy)
    
    print recsys.most_similar_items('Lady in the Water')
	#Return the recommendations for the given user.
    print recsys.recommend('Leopoldo Pires')
    #Return the 2 explanations for the given recommendation.
    print recsys.recommended_because('Leopoldo Pires', 'Just My Luck', 2)
	#Return the similar recommends
    print recsys.most_similar_items('Lady in the Water')
	#估算评分
    print recsys.estimate_preference('Leopoldo Pires','Lady in the Water')
	
	
base_demo()
itembase_demo()



推荐算法:

这里不细究算法本身,只介绍概念,方便理解crab的实现

* kNN算法 

    简单的分类/聚类算法,从训练集中找到和新数据最接近的k条记录,然后根据他们的主要分类来决定新数据的类别。

    3个主要因素:训练集、距离或相似的衡量、k的大小

* SVD 

    带有社交因素,根据已有的评分情况,分析出评分者对各个因子的喜好程度以及电影包含各个因子的程度,最后再反过来根据分析结果预测评分

© 著作权归作者所有

上一篇: ubuntu
下一篇: python-各种tips
深蓝苹果
粉丝 33
博文 95
码字总数 32473
作品 0
深圳
程序员
私信 提问
Python 的推荐系统--Crab

系统的Tutorial可以看这里: http://muricoca.github.io/crab/ Crab是基于Python开发的开源推荐软件,其中实现有item和user的协同过滤。据说更多算法还在开发中, Crab的python代码看上去很清...

叶秀兰
2014/04/21
6.4K
0
[转]开源推荐系统框架

以下内容是转至盛大创新研究院官方博客的一篇文章http://in.sdo.com/?p=1707,文中几乎涵盖了当今主流的推荐系统开源软件,我把全文都贴过来了,不过与原文不同的是我把有些已经停止更新/或者...

daos
2017/10/17
0
0
Python show-me-code 完结&总结

关键字:python、爬虫、数据分析、语音识别 文末附源码链接 环境:python3.5 win7 pycharm 完成 show-me-code 练习册 中的python基础修炼题目,共有26道,web相关的两道后续更新。每个文件夹...

RookieDay
2017/11/10
0
0
mac python3 轻松安装教程

推荐看原文:http://tryenough.com/python_install 首先要知道,mac自带一个2.7版本的python,如果你之前没装过其他版本,在终端运行 就会看到这个版本号打印出来。 你可以直接使用这个版本的...

TryEnough
05/13
0
0
TOP 10 开源的推荐系统简介

最 近这两年推荐系统特别火,本文搜集整理了一些比较好的开源推荐系统,即有轻量级的适用于做研究的SVDFeature、LibMF、LibFM等,也有重 量级的适用于工业系统的 Mahout、Oryx、EasyRecd等,...

Yamazaki
2014/04/29
626
0

没有更多内容

加载失败,请刷新页面

加载更多

zk中ToBeAppliedRequestProcessor解析

ToBeAppliedRequestProcessor在Leader中 在已处理事务和最后处理事务处理器之间,处理器链上下一个是FinalRequestProcessor public void processRequest(Request request) throws RequestPro...

writeademo
27分钟前
2
0
Allegro快捷键设置-PCB环境

立题简介: 内容:简单介绍Allegro绘制的PCB环境下的快捷键; 来源:实际使用得出; 作用:对Allegro绘制PCB快捷键进行介绍; PCB环境:Cadence 16.6; 立题详解: 对“allegro”板而言,其在...

demyar
28分钟前
2
0
idea maven web项目启动build时报错java.lang.NullPointerException

之前还好好的,重启一下idea就报这个错了,大概率是tomcat没杀掉端口被占用了,在tomcat配置中更换一下sever端口就好了

宇辰OSC
32分钟前
3
0
weed3-2.3.1.查询之输出

Weed3 一个超轻量级ORM框架(只有0.1Mb哦) 源码:https://github.com/noear/weed3 源码:https://gitee.com/noear/weed3 查询可是个复杂的话题了,可能我们80%的数据库处理都在查询。 今天先...

刘之西东
32分钟前
3
0
【Android JetPack系列】数据绑定:DataBinding

参考MVVM

Agnes2017
41分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部