协同过滤CF算法之入门
数据规整
首先将评分数据从 ratings.dat 中读出到一个 DataFrame 里:
>>>
import
pandas as pd
In [2]: import pandas as pd
In [3]: df = pd.read_csv('2014-12-18.csv')
In [4]: df.head()
Out[4]:
user_id item_id behavior_type user_geohash item_category hour
0 100268421 284019855 1 95ridd7 1863 19
1 109802727 56489946 1 NaN 8291 10
2 109802727 56489946 1 NaN 8291 10
3 109802727 266907147 1 99ctk96 9117
>>> data
=
ratings.pivot(index
=
'user_id'
,columns
=
'movie_id'
,values
=
'rating'
)
>>> data[:
5
]
movie_id
1
2
3
4
5
6
user_id
1
5
NaN NaN NaN NaN NaN ...
2
NaN NaN NaN NaN NaN NaN ...
3
NaN NaN NaN NaN NaN NaN ...
4
NaN NaN NaN NaN NaN NaN ...
5
NaN NaN NaN NaN NaN
2
...
>>> check_size
=
1000
>>> check
=
{}
>>> check_data
=
data.copy()
#复制一份 data 用于检验,以免篡改原数据
>>> check_data
=
check_data.ix[check_data.count(axis
=
1
)>
200
]
#滤除评价数小于200的用户
>>>
for
user
in
np.random.permutation(check_data.index):
movie
=
np.random.permutation(check_data.ix[user].dropna().index)[
0
]
check[(user,movie)]
=
check_data.ix[user,movie]
check_data.ix[user,movie]
=
np.nan
check_size
-
=
1
if
not
check_size:
break
>>> corr
=
check_data.T.corr(min_periods
=
200
)
>>> corr_clean
=
corr.dropna(how
=
'all'
)
>>> corr_clean
=
corr_clean.dropna(axis
=
1
,how
=
'all'
)
#删除全空的行和列
>>> check_ser
=
Series(check)
#这里是被提取出来的 1000 个真实评分
>>> check_ser[:
5
]
(
15
,
593
)
4
(
23
,
555
)
3
(
33
,
3363
)
4
(
36
,
2355
)
5
(
53
,
3605
)
4
dtype: float64
参考:
协同过滤CF算法之入门的更多相关文章
- 基于物品的协同过滤推荐算法——读“Item-Based Collaborative Filtering Recommendation Algorithms” .
ligh@local-host$ ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.0.3 基于物品的协同过滤推荐算法--读"Item-Based ...
- 【Machine Learning】Mahout基于协同过滤(CF)的用户推荐
一.Mahout推荐算法简介 Mahout算法框架自带的推荐器有下面这些: l GenericUserBasedRecommender:基于用户的推荐器,用户数量少时速度快: l GenericI ...
- SparkMLlib—协同过滤推荐算法,电影推荐系统,物品喜好推荐
SparkMLlib-协同过滤推荐算法,电影推荐系统,物品喜好推荐 一.协同过滤 1.1 显示vs隐式反馈 1.2 实例介绍 1.2.1 数据说明 评分数据说明(ratings.data) 用户信息( ...
- SimRank协同过滤推荐算法
在协同过滤推荐算法总结中,我们讲到了用图模型做协同过滤的方法,包括SimRank系列算法和马尔科夫链系列算法.现在我们就对SimRank算法在推荐系统的应用做一个总结. 1. SimRank推荐算法的 ...
- 基于MapReduce的(用户、物品、内容)的协同过滤推荐算法
1.基于用户的协同过滤推荐算法 利用相似度矩阵*评分矩阵得到推荐列表 已经推荐过的置零 2.基于物品的协同过滤推荐算法 3.基于内容的推荐 算法思想:给用户推荐和他们之前喜欢的物品在内容上相似的物品 ...
- 推荐系统算法学习(一)——协同过滤(CF) MF FM FFM
https://blog.csdn.net/qq_23269761/article/details/81355383 1.协同过滤(CF)[基于内存的协同过滤] 优点:简单,可解释 缺点:在稀疏情况下 ...
- Spark ML协同过滤推荐算法
一.简介 协同过滤算法[Collaborative Filtering Recommendation]算法是最经典.最常用的推荐算法.该算法通过分析用户兴趣,在用户群中找到指定用户的相似用户,综合这些 ...
- 协同过滤 CF & ALS 及在Spark上的实现
使用Spark进行ALS编程的例子可以看:http://www.cnblogs.com/charlesblc/p/6165201.html ALS:alternating least squares ...
- 基于局部敏感哈希的协同过滤推荐算法之E^2LSH
需要代码联系作者,不做义务咨询. 一.算法实现 基于p-stable分布,并以‘哈希技术分类’中的分层法为使用方法,就产生了E2LSH算法. E2LSH中的哈希函数定义如下: 其中,v为d维原始数据, ...
随机推荐
- Free 4 months Serial License Key Of Outpost Security Suite Pro 8.1
VISIT HEREto gey a 1 year key.... for the latest version Promo code ? well use the same here too : C ...
- IOS延时加载网络图片
重网上下载图片是很慢的,为了不影响体验,选择延时加载图片是很好的办法. 一个tableView 列表,左边暂时没有图 - (UITableViewCell *)tableView:(UITab ...
- 转:ios导航栏设置
原帖:http://www.cocoachina.com/industry/20131104/7287.html 本文提供的代码需要用Xcode 5来执行.如果你还在使用老版本的Xcode,那么在运行 ...
- 清除git以外文件
清除git以外文件 清除git以外文件 git clean -fxd git log 查看某段时刻的log git log --until=2013-11-23 #表示查看2013年11月23日以前的 ...
- MySQL Performance Tuning: Tips, Scripts and Tools
With MySQL, common configuration mistakes can cause serious performance problems. In fact, if you mi ...
- CSS3之border-image
先上效果图,类似于IPHONE手机左上角的返回按钮样式,如果是在CSS2那么就要做一张背景图片扩展就没那么灵活了,CSS3内就不需要了,CSS3样式挺强大方便的. 源图片: 样式: .banner { ...
- 在C++里一个类成员函数多少行代码才是最好呢?
这个问题,很多同事以及学生都问我这个问题.其实这是一个比较实际的问题,因为设计一个类成员函数的好与坏,决定了一个类代码的质量. 为了回答这个问题,昨晚又重新看看斯坦福大学的编程视频,可以用下面这个截图 ...
- buy now按钮的添加
样例是 www.dealfreeship.com:在D:\xampp\htdocs\aliexpress\app\design\frontend\default\se101\template\cata ...
- Size类型如何调用和定义
cv::Size sz = cv::Size(PROB_W, PROB_H);//Size(srcimage.cols, srcimage.rows) groundtoimage(xylimit, u ...
- stm32 SPI介绍和配置
SPI是一种高速的,全双工同步的通信总线,在芯片管脚上占用了四根线,节约了芯片的管脚,同时为PCB的布局节省了空间,提供了方便,因此越来越多的芯片集成了这种通信协议,STM32也就有了SPI接口. 有 ...