基于协同过滤算法的电子商务网站用户行为分析及服务推荐

对于用户而言,推荐系统和搜索引擎是两个互补工具。搜索引擎满足有明确目标的用户需求,而推荐系统能够帮助用户发现其感兴趣的内容。

如今网上信息泛滥,想要在里面找一条适合自己的信息的成本真的有点高,所以就有了推荐系统。于用户而言,推荐系统能够节省自己的时间;于商家而言,推荐系统能够更好的卖出自己的商品。

基于邻域的推荐算法是推荐系统中最基本的算法,该算法分为两大类:基于用户的协同过滤算法(UserCF)和基于物品的协同过滤算法(ItemCF)。相比于基于用户的协同过滤算法,基于物品的协同过滤算法在工业界应用更多,因为基于用户的协同过滤算法主要有两个缺点:

1.随着网站的用户数目越来越大,计算用户数的相似度将会越来越困难,其运算的时间复杂度和空间复杂度基本和用户的增长数成平方关系
2.基于用户的协同过滤算法很难对推荐结果做出解释

本项目的目标是采用协同过滤算法对用户进行推荐,来帮助用户从海量数据中快速发现感兴趣的网页。
分析过程包括如下内容:

  1. 从系统中获取用户访问网站的原始记录;
  2. 对数据进行多维度分析,包括用户访问内容,流失用户分析以及用户分类等;
  3. 对数据进行预处理
  4. 以用户访问html后缀的网页为关键条件,对数据进行处理;
  5. 对比多种推荐算法进行推荐,通过模型评价得到比较好的智能推荐模型,对数据进行预测

从数据库导入数据

import pandas as pd
from sqlalchemy import create_engine
engine = create_engine('mysql+mysqlconnector://root:liuying0131@localhost:3306/ch12law')
sql = pd.read_sql('all_gzdata', engine, chunksize = 10000)

数据探索-网页类型统计

counts = [ i['fullURLId'].value_counts() for i in sql] #逐块统计
counts = pd.concat(counts).groupby(level=0).sum() 
#level=0,表明合并统计结果,把相同的统计项合并(即按index分组并求和);concat首尾相接,表示将所有的counts上下连接起来
counts = counts.reset_index() #重新设置index,将原来的index作为counts的一列。
counts.columns = ['index', 'num'] #重新设置列名,主要是第二列,默认为0
counts['type'] = counts['index'].str.extract('(\d{3})') #提取前三个数字作为类别id
counts_ = counts[['type', 'num']].groupby('type').sum() #按类别合并
counts_['ratio']=counts_/counts_.sum() #增加比例列
counts_.sort_values('num', ascending = False) 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值