协同过滤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维原始数据, ...
随机推荐
- docker中进行IDA远程调试提示“TRACEME: Operation not permitted[1] Closing connection from 192.168.109.1...”的解决方法
加入 --security-opt seccomp:unconfined选项,关闭docker远程命令执行保护 如: docker run --security-opt seccomp:unconfi ...
- 插件PageHelper实现分页查询
一,需求: CommonQuery--PyQueryBean PyQueryBean:鹏飞历史记录查询,以往哪些人对征信进行了查询.CommonQuery:查询条件:根据查询人(umName).被查询 ...
- SEL_CallFuncN,SEL_CallFuncO等的区别
ocos2d-x中有大量的回调函数的应用,主要有以下几类,看下CCObject.h中的定义 typedef void (CCObject::*SEL_SCHEDULE)(float);// 用来调up ...
- Dll封装dll,并且调用该封装的dll
按照图1,2,3创建一个默认的(可以导出符号的dll项目) 默认创建的,很好地给我们说明了怎么导出 变量,导出函数,导出类 注意这里加入你要导出的函数的声明 WIN32PROJECT1_API int ...
- 微信小程序之蓝牙开发(详细读数据、写数据、附源码)
本文将详细介绍微信小程序的蓝牙开发流程(附源码)准备:微信只支持低功耗蓝牙也就是蓝牙4.0,普通的蓝牙模块是用不了的,一定要注意. 蓝牙可以连TTL接到电脑上,再用XCOM调试 一开始定义的变量 va ...
- Vec3b类型数据确定颜色通道
前言 这几天实习生测试一张图像的三个通道分别是什么颜色,使用的是Vec3b类型,然后发现了一个有意思的点.. 测试过程 先创建了一定大小的数据, Mat test( , , CV_8UC3, Scal ...
- android复制包需要修改的几个地方
1.要看什么情况,若是在同一个eclipse下,那么就需要修改包名.若不在的话,那就可以不用了. 2.这个app_name也是一样. 3.先说下情况,这是我修改好的.原本这个R的是引之前包的,必须要改 ...
- C#浮点数保留位数
C#浮点数保留位数 这里用String.Forma("{0:F}",x);来解决. 下面是试验和截图 using System; using System.Collections. ...
- LG1397 [NOI2013]矩阵游戏
题意 婷婷是个喜欢矩阵的小朋友,有一天她想用电脑生成一个巨大的n行m列的矩阵(你不用担心她如何存储).她生成的这个矩阵满足一个神奇的性质:若用F[i][j]来表示矩阵中第i行第j列的元素,则F[i][ ...
- 红黑树-算法大神的博客-以及java多线程酷炫的知识
http://www.cnblogs.com/skywang12345/p/3245399.html 解释第5条:从 ->根节点(或者任意个结点)到->所有的末端节点的路径中 ->黑 ...