python数据分析与挖掘学习笔记(6)-电商网站数据分析及商品自动推荐实战与关联规则算法

news/2024/5/10 23:44:54/文章来源:https://blog.csdn.net/yangdashi888/article/details/78059523

这一节主要涉及到的数据挖掘算法是关联规则及Apriori算法。

由此展开电商网站数据分析模型的构建和电商网站商品自动推荐的实现,并扩展到协同过滤算法。

关联规则最有名的故事就是啤酒与尿布的故事,非常有效地说明了关联规则在知识发现和数据挖掘中起的作用和意义。

其中有几个专用词的概念:

支持度:A与B的支持度Support(A->B)表示为P(A and B)。支持度揭示了A与B同时出现的概率。如果A与B同时出现的概率小,说明A与B的关系不大;如果A与B同时出现的非常频繁,则说明A与B总是相关的。

置信度:如果A发生那么B发生的概率。Confidence(A->B)=support(A->B)/suport(A)。置信度揭示了A出现时,B是否也会出现或有多大概率出现。如果置信度度为100%,则A和B可以捆绑销售了。如果置信度太低,则说明A的出现与B是否出现关系不大。

项集:项的集合称为项集。包含k个项的项集称为k-项集。

如果存在一条关联规则,它的支持度和置信度都大于预先定义好的最小支持度与置信度,我们就称它为强关联规则。强关联规则就可以用来了解项之间的隐藏关系。所以关联分析的主要目的就是为了寻找强关联规则,而Apriori算法则主要用来帮助寻找强关联规则。

Apriori算法的步骤如下:

1.自连接获取候选集。第一轮的候选集就是数据集D中的项,而其他轮次的候选集则是由前一轮次频繁集自连接得到(频繁集由候选集剪枝得到)。

2.对于候选集进行剪枝。如何剪枝呢?候选集的每一条记录T,如果它的支持度小于最小支持度,那么就会被剪掉;此外,如果一条记录T,它的子集有不是频繁集的,也会被剪掉。

一个实际的粗糙例子是:



Apriori的实现如下:

[python] view plaincopy
  1. # -*- coding: utf-8 -*-  
  2. from __future__ import print_function  
  3. import pandas as pd  
  4.   
  5.   
  6. # 自定义连接函数,用于实现L_{k-1}到C_k的连接  
  7. def connect_string(x, ms):  
  8.     x = list(map(lambda i: sorted(i.split(ms)), x))  
  9.     l = len(x[0])  
  10.     r = []  
  11.     for i in range(len(x)):  
  12.         for j in range(i, len(x)):  
  13.             if x[i][:l - 1] == x[j][:l - 1and x[i][l - 1] != x[j][l - 1]:  
  14.                 r.append(x[i][:l - 1] + sorted([x[j][l - 1], x[i][l - 1]]))  
  15.     return r  
  16.   
  17.   
  18. # 寻找关联规则的函数  
  19. def find_rule(d, support, confidence, ms=u'--'):  
  20.     result = pd.DataFrame(index=['support''confidence'])  # 定义输出结果  
  21.   
  22.     support_series = 1.0 * d.sum() / len(d)  # 支持度序列  
  23.     column = list(support_series[support_series > support].index)  # 初步根据支持度筛选  
  24.     k = 0  
  25.   
  26.     while len(column) > 1:  
  27.         k = k + 1  
  28.         print(u'\n正在进行第%s次搜索...' % k)  
  29.         column = connect_string(column, ms)  
  30.         print(u'数目:%s...' % len(column))  
  31.         sf = lambda i: d[i].prod(axis=1, numeric_only=True)  # 新一批支持度的计算函数  
  32.   
  33.         # 创建连接数据,这一步耗时、耗内存最严重。当数据集较大时,可以考虑并行运算优化。  
  34.         d_2 = pd.DataFrame(list(map(sf, column)), index=[ms.join(i) for i in column]).T  
  35.   
  36.         support_series_2 = 1.0 * d_2[[ms.join(i) for i in column]].sum() / len(d)  # 计算连接后的支持度  
  37.         column = list(support_series_2[support_series_2 > support].index)  # 新一轮支持度筛选  
  38.         support_series = support_series.append(support_series_2)  
  39.         column2 = []  
  40.   
  41.         for i in column:  # 遍历可能的推理,如{A,B,C}究竟是A+B-->C还是B+C-->A还是C+A-->B?  
  42.             i = i.split(ms)  
  43.             for j in range(len(i)):  
  44.                 column2.append(i[:j] + i[j + 1:] + i[j:j + 1])  
  45.   
  46.         cofidence_series = pd.Series(index=[ms.join(i) for i in column2])  # 定义置信度序列  
  47.   
  48.         for i in column2:  # 计算置信度序列  
  49.             cofidence_series[ms.join(i)] = support_series[ms.join(sorted(i))] / support_series[ms.join(i[:len(i) - 1])]  
  50.   
  51.         for i in cofidence_series[cofidence_series > confidence].index:  # 置信度筛选  
  52.             result[i] = 0.0  
  53.             result[i]['confidence'] = cofidence_series[i]  
  54.             result[i]['support'] = support_series[ms.join(sorted(i.split(ms)))]  
  55.   
  56.     result = result.T.sort(['confidence''support'], ascending=False)  # 结果整理,输出  
  57.     print(u'\n结果为:')  
  58.     print(result)  
  59.   
  60.     return result  


主要为连接函数和寻找关联规则的函数,其中需要定义support和confidence的值,需要折中选择这两个值,保证得到满意的结果。

ms为连接符。就是一个循环连接和查找的过程。

下面是使用Apriori算法实现商品个性化的推荐。

[python] view plaincopy
  1. # coding = utf-8  
  2. # Apriori算法,实现见apriori模块,以下为应用  
  3. # 使用Apriori算法实现商品个性化推荐  
  4. from apriori import *  
  5. import pandas as pda  
  6. filename = "/home/hadoop/Downloads/lesson_buy.xls"  
  7. dataframe = pda.read_excel(filename, sheetname=0, header=None)  
  8.   
  9. # 转化一下数据  
  10. change = lambda x: pda.Series(1, index=x[pda.notnull(x)])  
  11. mapok = map(change, dataframe.as_matrix())  
  12. data = pda.DataFrame(list(mapok)).fillna(0)  
  13. print(data)  
  14.   
  15. # 临界支持度、置信度设置  
  16. support = 0.2  
  17. confidence = 0.5  
  18. # 使用Apriori算法计算关联结果  
  19. find_rule(data, support, confidence, "-->")  

下面是得到的结果:


可以通过不同尝试不同的置信度和支持度来获得更可靠的结果。

下面提一下协同过滤算法:



协同过滤算法是将每个点转换为概率的形式,根据倒排表,得到矩阵,计算出同一用户对不同物品感兴趣的概率之后,可以将相似品味的用户喜欢的物品推荐给该用户。比如,上面计算对于用户2,分别对A,D,E感兴趣的概率,然后取最大的推荐给该用户。其中每一个物品的计算方法是求得对该物品感兴趣的用户与用户2之间的相似度,比如,计算用户2对D物品感兴趣的概率,则计算用户2与对D感兴趣的用户1,4,5之间的相似度w之和,其中w的计算方法为余弦公式的计算,w(2,1) = |用户1和用户2的交集|/|用户1|×|用户2|.其中|.|为求模。

协同过滤算法分为两种,一种是基于用户的协同过滤算法,第二种是基于物品的协同过滤算法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_803790.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站开源字体使用

如需了解完整内容请访问: https://www.emperinter.info/2020/11/29/how-do-i-use-open-source-fonts-in-my-website/ 最近研究手机换字体时想起尝试更换网站字体,就搞了搞! 字体选择 这个肯定就是选择开源字体了,没啥其它可选的&a…

WordPress网站数据库报错 Error establishing a database connection

最近搞了一下网站迁移,因为主从同步有问题就又重新迁移回去了,结果解决同步的时候不清楚咋把另一个网站的数据库连接给干出Error了。Error如图所示(Error establishing a database connection) 确定密码是否正确 进网站目录查看wp…

build vue 静态化_vue教程-vue+sass+环境变量实现网站换肤

今天给大家分享一个vuecli3.x sass .env环境变量实现网站换肤的效果。本教程实现了,文字颜色、图片、背景图片的更换效果。准备物料:脚手架:vuecli3.xnpm包:node-sass,sass-loader环境变量文件:.env.a, .…

怎样查看网站的真实服务器ip地址,开源之系统:如何查看Ubuntu20.04版系统公有私有IP地址和配置IP...

在终端命令里,如何才能查看当前电脑的IP地址呢?如果是Linux系统老用户,可能很多人会想到那个老命令ifconfig,不过现在新版本已经被丢弃不用了。现在在Ubuntu操作系统里,往往要用ip命令就行。终端输入ip addr就可以查看…

MySQL(Linux)编码问题——网站刚刚上线就被光速打脸

MySQL(Linux)编码问题——刚刚上线就被光速打脸MySql默认编码问题总结了一下,大致是这样的修改数据库配置在URL上加载参数MySql默认编码问题 说到这里真的想哭,改了无数bug,眼睁睁看着完善起来的系统,突然…

给你的阿里云网站加上HTTPS(Nginx)

今天突然心血来潮,看博客的HTTP不爽已经很久了,是时候改变裸奔的现状了 从阿里云获取免费的SSL证书 在阿里云控制台,找到安全(云盾)->SSL证书 点击购买(不要钱的,不用怕) 选择单…

网站建设-1小时学会建站,采用PHPWAMP搭建网站[全程实战]-韦语洋(Lccee)-专题视频课程...

网站建设-1小时学会建站,采用PHPWAMP搭建网站[全程实战]—80403人已学习 课程介绍 phpwamp是目前方便便捷的绿色软件,采用用PHPWAMP搭建本地网站运行环境,然后如何利用phpwamp配置并测试好网站,再手把手教学员如何传到网上运行…

网络营销-网站盈利方式/淘宝客网络赚钱/广告联盟-韦语洋(Lccee)-专题视频课程...

网络营销-网站盈利方式/淘宝客网络赚钱/广告联盟—19093人已学习 课程介绍 课程简单易懂,学习本课,个人看完能学会使用淘宝客赚钱,网站主看完能使用阿里妈妈广告联盟赚取佣金,给自己网站增加收入。学会广告联盟的相关知识&…

PHP绿色集成环境在云服务器上的应用,PHPWAMP在服务器上搭建网站案例

问:什么叫WAMP?答:Windows下的ApacheMysqlPHP,称之为WAMP。 本文案例采用的PHP集成环境是我自己开发的纯绿色版WAMP软件(PHPWAMP)。 我在这款集成环境里集成的组件都是完全版的,适合本地调试&…

PHPWAMP乱码一键解决,PHP乱码通用解决方案/网站乱码的多种原因分析

所有引起网页乱码的原因,我将其划分以下五大类 1、服务器强制编码造成的乱码(此乱码的表现:通常只会引起某个PHP版本乱码(因为默认配置不同),建议使用PHPWAMP内置的常用工具万能乱码修复器,该修…

支持源码多重加密,将网站一键生成EXE文件运行,封装网站源码演示运行

PHP打包器应用场景:做好网站程序后,发布给用户看,但是不想泄露源码,可以选择“封装源码生成EXE文件”,建议封装前先用zend等加密代码,可以起到双重保险,对方在破解软件的同时还需要破解网站源码…

PHPWAMP内置IIS管理器一键搭建PHP网站,支持无限个不同PHP版本同时运行

PHPWAMP内置了功能强大的IIS站点管理,可同时运行多个PHP版本,站点管理可自定义添加PHP版本 使用方式:点击相关设置,直接打开IIS站点管理即可使用,如果你电脑没安装IIS,会自动快速安装 (右键新标签打开图片可…

使用teleport ultra爬取网站源码

有时候看到好看的网站总想爬取下来玩一玩,模仿一下,这里介绍一个好用的工具teleport ultra 下载链接:teleport ultral 下载之后,安装,注意安装的时候把默认勾选的推广软件取消了! 爬取步骤: …

html 页面索引_建站SEO原来如此简单(HTML篇)

之前的文章向大家介绍了内容管理系统CMS的详细内容,也曾提到HTML是基于CMS的。那么这篇文章就带大家彻底的了解一下HTML的各项内容。html一.什么是HTMLHTML,超文本标记语言。是为了创建网页和可在网页浏览器中看到的信息设计的一种标记语言。…

php.ini网站空白,编译安装php,php.ini在配置文件目录下,但是页面无法解析,显示空白...

编译的php版本是 5.5.5,安装完毕后运行测试页面 index.php,内容如下phpinfo();?>php的安装信息:其中配置文件目录为 /usr/local/php/etc/第一次执行 index.php 时,配置文件目录下没有 php.ini,php以默认配置运行,可…

nginx php网站配置文件,Nginx配置文件详解

NGINX与其他服务类似,因为它具有以特定格式编写的基于文本的配置文件。默认情况下,文件名为nginx.conf并放在/etc/nginx目录中(对于开源NGINX产品,位置取决于用于安装NGINX和操作系统的软件包系统,它通常位于/usr/local/nginx/con…

如何屏蔽某网站

博主用电脑的时候用一会儿总是控制不住就刷起了知乎, 然后在蹉跎中度过了美好的时光. 于是决定屏蔽知乎等让我分心的网站, 希望能够专注于眼前的事. 此方法治标不治本, 因为能屏蔽也能让它恢复, 因此想要真正不分心还得提高自制力. 我的思路是修改host文件. 在我的电脑上目录…

Haoop实操3-筛选出社交网站特定日期的用户,以序列化格式输出

1.待处理的数据文件格式(部分截图): 生成上图文件的Python源码:https://blog.csdn.net/qq_25948717/article/details/82492962 2.启动hadoop,我是在node40节点上启动的伪分布式集群,在node100节点下开发的,…

码云最新出炉:亿万流量网站高性能框架设计方案,优化度达到100%

大型网站的设计主要来自庞大的用户,高并发的访问和海量数据,任何简单的业务一旦需要处理数以P计的数据和面对数以亿计的用户,问题就会变得棘手,例如双十一大型秒杀活动、B2B商城项目实战都会产生一系列的问题,比如&…

码云最新出炉:亿万流量网站高性能框架设计方案,优化度达到100%

大型网站的设计主要来自庞大的用户,高并发的访问和海量数据,任何简单的业务一旦需要处理数以P计的数据和面对数以亿计的用户,问题就会变得棘手,例如双十一大型秒杀活动、B2B商城项目实战都会产生一系列的问题,比如&…