本文欢迎转载,但转载请标注作者及出处。

      一直在寻找开源的python推荐系统源码,偶然机会接触到crab,Crab是基于Python开发的开源推荐软件,它提供了一些常用的推荐算法,例如协同过滤(CF)、Slope One等,并且自带了几个数据集,非常方便。

首先介绍一下我的环境,我的Linux系统是ububtu14.04安装的python2.7.6,若想成功运行Crab比较繁琐的部分是需要安装一些依赖的库,下面是我的整个安装流程,也包括我在安装过程中出现的问题和解决方法,希望对有同样需要的人有所帮助。

系统的Tutorial可以看这里:

http://muricoca.github.io/crab/

1.库安装

在安装crab前需要安装numpy,SciPy,setuptools,scikits.learn,python development headers和C++编译器。Unbuntu系统下用root权限执行:

sudo apt-get install python-dev python-numpy python-numpy-dev python-setuptools python-numpy-dev python-scipy libatlas-dev g++

为了运行代码,还需要安装matplotlib:

sudo apt-get install python-matplotlib

在这里为了检测以上几个库是否成功安装,我们先进行测试,为后续做保障。(此处参考博客http://blog.csdn.net/i_with_u/article/details/45460661)

import numpy as np
import matplotlib.pyplot as plt  X = np.arange(-5.0, 5.0, 0.1)
Y = np.arange(-5.0, 5.0, 0.1)  x, y = np.meshgrid(X, Y)
f = 17 * x ** 2 - 16 * np.abs(x) * y + 17 * y ** 2 - 225
fig = plt.figure()
cs = plt.contour(x, y, f, 0, colors = 'r')
plt.show()

如果出现以上心形,意味着以上库已经安装正确。否者,根据错误提示,重新安装库。

为了安装scikits.learn最新的稳定版,可以通过使用PIP或easy_install的安装:

sudo pip install -U scikits.learn

or:

sudo easy_install -U scikits.learn

进入python交互环境输入:

import sklearn.svm  

如果没有红色错误,表示安装成功。

Nose安装

sudo easy_install nose

检查

import nose
result = nose.run
print result ()

如果返回True或False,意味着安装完成。以后,在Python开发可用使用nose 做单元测试。

Crab

接下来就是最重要的crab的安装了

这里建议采用去官网下载安装包进行下载安装,官网下载下载:https://github.com/muricoca/crab

解压后,cmd到该文件夹下,输入命令:

python setup.py install

来安装该库。接着出入命令:将该源码升级到最新版本。

上面的库安装部分就完成了,其实也没那么繁琐对吧~接下来就对crab进行测试吧

在python交互环境下输入一下代码

from scikits.crab import datasets
movies = datasets.load_sample_movies()
songs = datasets.load_sample_songs() 

如果没有错误,意味着安装已经基本完成!

接下来进行进一步检测

(注:此处代码来自深蓝苹果的博客:http://my.oschina.net/kakablue/blog/260749)  
#!/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()<pre name="code" class="python" style="color: rgb(51, 51, 51); line-height: 25.2000007629395px;">

在运行这段代码是出现了一个问题

No Attribute named _set_params

这个错误的解决方法是打开错误中的提到的scikits\crab\recommenders\knn\class.py,将第138和600行的“self._set_params(**params)”替换成“self.set_params(**params)”。

再运行代码进行测试,没有错误就表示成功了!

转载于:https://www.cnblogs.com/iter1991/p/5664731.html

ubuntu14.04下python2.7推荐系统Crab搭建相关推荐

  1. PHP学习记录第一篇:Ubuntu14.04下LAMP环境的搭建

    PHP学习记录第一篇:Ubuntu14.04下LAMP环境的搭建 最近一段时间会学习一下PHP全栈开发,将会写一系列的文章来总结学习的过程,以自勉. 第一篇记录一下LAMP环境的安装 0. 安装Apa ...

  2. ubuntu14.04下安装cudnn5.1.3,opencv3.0,编译caffe及配置matlab和python接口过程记录

    已有条件: ubuntu14.04+cuda7.5+anaconda2(即python2.7)+matlabR2014a 上述已经装好了,开始搭建caffe环境. 1. 装cudnn5.1.3,参照: ...

  3. Ubuntu14.04下Neo4j图数据库官网安装部署步骤(图文详解)(博主推荐)

    不多说,直接上干货! 说在前面的话  首先,查看下你的操作系统的版本. root@zhouls-virtual-machine:~# cat /etc/issue Ubuntu 14.04.4 LTS ...

  4. Linux(Ubuntu14.04)下安装Anaconda和Spyder

    Linux(Ubuntu14.04)下安装Anaconda是为了安装python所需要的各种库以及他们的环境配置. Spyder是使用python的IDE 安装python和pip 一般linux系统 ...

  5. ubuntu14.04下出现libmysqlclient.so.20找不到问题

    ubuntu14.04下出现libmysqlclient.so.20找不到问题 搜了下,发现没人公布解决这个问题的方法,于是分享了下,分享让科技进步更快,大家一起加油 /usr/bin/ld: war ...

  6. 解决Ubuntu14.04 下 E: Encountered a section with no Package: header 问题

    参考: ubuntu-E:Encountered a section with no Package: header的解决办法 解决Ubuntu14.04 下 E: Encountered a sec ...

  7. ubuntu 11.04下Android开发环境的搭建!

    ubuntu 11.04下Android开发环境的搭建! 1.安装JDK 首先到oracle的官网上下载linux版本的JDK,网址为:http://www.oracle.com/technetwor ...

  8. Ubuntu14.04下安装wineqq国际版和卸载QQ

    转载自: http://www.bubuko.com/infodetail-343048.html http://jingyan.baidu.com/article/e9fb46e199d60d752 ...

  9. ubuntu14.04下mysql数据库的默认存放路径并修改

    ubuntu14.04下mysql数据库的默认存放路径为:/var/lib/mysql 但有些时候,mysql的数据可能会非常大,由于/var所划分的空间不够大,所以我们需要将mysql数据存放路径修 ...

最新文章

  1. linux GDB 简单用法以及例子
  2. Ecshop支付宝网银支付插件|支付宝网银直连插件|纯网关网银接口
  3. .Net DES加密解密(不带向量)
  4. angular post php 404,AngularJS POST失败:飞行前响应具有无效的HTTP状态代码404
  5. php官网软件下载,php下载_php官方下载_3DM软件
  6. 5G Wifi频段及信道介绍
  7. 前端激荡三十年(一本最详细的编年史册)
  8. 方差 标准差_总体、样本、总体方差、样本方差、抽样方差和标准误
  9. 前馈神经网络初步了解
  10. 30天150万公里,韦布望远镜抵达终点成功入轨,18镜合一进行时
  11. SAP 采购订单关单
  12. java解析micaps_9210的Micaps第13类卫星云图数据
  13. [Webpy]在webpy中使用jinja2模板
  14. CSS菜鸟教程自学2,Text文本
  15. 国产手机销量同比大跌超过五成,手机库存货需10个月消化
  16. NOI 2021 游记题解总结
  17. 粉丝经历!湖大毕业工作2年,成功拿下字节跳动后端研发岗offer!
  18. 20230308-二维数组的长度
  19. 群晖nas使用的端口
  20. 面试必问题之Docker分布式搭建

热门文章

  1. sql select distinct常见错误_这8种常见的SQL错误用法,80%的程序员还在犯
  2. 车辆贷款违约预测 Top1(2021科大讯飞)
  3. 基于特征融合的图像情感识别
  4. ortools解决tsp_ortools系列:后话
  5. feign post 传递空值_别再问 GET 和 POST 有什么不同了
  6. Ubuntu Quickbuild 安装配置
  7. python中组合框_Tkinter Python中的多个组合框
  8. python3.6.5安装pip_无法在Python3.6中pip安装pickle
  9. html css表格样式模板_HTML amp; CSS 基础入门【4】列表及其样式
  10. 贝格数据携手清华大学“勘探”大数据富矿