项目概述
本项目案例根据某法律咨询服务网站的用户浏览记录,把用户划分为训练集的用户和测试集的用户,再根据找出相应用户的浏览记录划分为训练集数据和测试集数据。训练集用于后续构建用户物品矩阵,再根据用户物品矩阵构建物品相似度矩阵(根据杰卡德相似系数公式计算物品相似度);测试集用于根据用户浏览记录给用户推荐用户可能感兴趣的网页,在计算推荐结果准确度的时候需要根据测试集构建用户浏览字典(键:ip,值:url(列表))
案例的代码已经托管到码云仓库,可自行进行下载:https://gitee.com/atuo-200/recommend_code
案例用的的数据文件已经上传至百度云(单个文件超过100m push不上码云):
数据在:https://pan.baidu.com/s/1m8kfgOZSZNftye_hDjxmSA
提取码:g9t7
案例用到的数据文件中的字段含义如下:

案例代码
案例代码如下,代码上已经附上相应的注释
data_explore.py(用于数据探索,独立的一个模块)
import pandas as pd
import re
"""数据探索模块"""
data = pd.read_csv("data/all_gzdata.csv",encoding="gb18030")
#查看前5条数据
print(data.head())
#查看数据有哪些列
print(data.columns)
#查看有多少条数据
print(data.shape)
#查看网址类型
print(data["fullURLId"])
#网址类型统计:统计每种网址类型的数量
print("-----------------------")
urlId=['101','199','107','301','102','106','103']
count=[]
for pattern in urlId:
index=[sum(re.search(pattern,i)!=None for i in data.loc[:,'fullURLId'].apply(str))][0]
count.append(index)
urlId_count={
'urlId':urlId,'count':count}
urlId_count=pd.DataFrame(urlId_count)
print(urlId_count)
print("-----------------------")
# 用户点击次数统计
# pd.value_counts() 属于高级方法,返回一个 Series ,其索引值为唯一值,其值为频率,按其计数的降序排列
res = data.loc[:, 'realIP'].value_counts() # 对 IP 进行统计:每个 IP 点击了多少次
res1 = res.value_counts() # 对点击次数的 IP 统计:例如点击了 2 次的 ip 有多少个
IP_count = pd.DataFrame({
'a_IP': list(res1.index), 'count': list(res1)})
IP_total = sum(IP_count.iloc[:, 1])
#IP_count.ix[:, 'pers'] = [index / IP_total for index in IP_count.ix[:, 1]]
IP_count['pers'] = IP_count.iloc[:<

本文介绍了一个基于用户浏览记录的推荐系统实现案例,采用杰卡德相似系数计算物品间相似度,实现用户个性化网页推荐,并评估推荐准确性。
最低0.47元/天 解锁文章
1935

被折叠的 条评论
为什么被折叠?



