首页 > 编程语言 >Python数据挖掘之关联规则学习

Python数据挖掘之关联规则学习

时间:2023-04-20 10:03:02浏览次数:39  
标签:confidence Python support 规则学习 default lift 规则 数据挖掘 id

一、关联算法应用介绍

关联规则分析是数据挖掘中最活跃的研究方法之一,目的是在一个数据集中找出各项之间的关联关系,而这种关系并没有在数据中直接表示出来。常见于与购物篮分析。

常用关联算法表如下,简单理解的话,就是测算某几项东西一起出现的概率。比如:如果测算得出,大量订单中出现面包、牛奶这两个东西,那么就放在一起销售,增加市场收入。

三个判断准则:支持度(support)、置信度(confident)、提升度(lift)。参考链接:如何理解关联法则中的三个判断准则

1.support(A)= number of A/total items,support(B)= number of B/total items,support(A=>B)= support(B=>A)= number of A and B/total items
2.confidence(A=>B)= number of A and B/number of A,confidence(A=>B)!=  confidence(B=>A)
3.lift(A=>B)= confidence(A=>B)/support(B),lift(A=>B)= lift(B=>A)

对三个准则的解释:

support很简单,就是单一商品或者rule出现的概率。我们认为某条规则(rule)出现的次数需要达到一定程度,才能认为这条规则有足够的支持度来支撑其是真实存在的,而不仅仅是因为偶然出现了几次就认为这是一条普遍存在的规则。support是第一道过滤的准则,能够在繁杂众多的交易中过滤出值得我们关注的潜在规则。

confidence我们认为代表着“给定consequent的情况下,antecedent出现的概率”,也就是说是判断规则中两边存在的联系。confidence越高越好,一个高的confidence证明当交易出现了某个antecedent的时候,很大可能会出现某个consequent,也就是某条规则成立的概率越大。

lift融合了support和confidence,代表一条规则中,antecedent和consequent的依赖性,当lift=1的时候,代表给定一个antecedent,某个consequent出现的概率是随机的,也就是说antecedent和consequent相互独立,两者没有任何依赖性,规则不成立。当lift<1的时候,证明antecedent和consequent之间可能存在负依赖性,两者同时存在的概率甚至小于随机选择,若果lift大大小于1,有可能两者是替代商品。当lift>1的时候,则代表两者可能存在正依赖性,顾客买antecedent的时候更倾向于同时购买consequent。

举例:

假设有两个商品A和B,商品A的support是40%,商品B的support是95%,表明40%的交易里面存在A,95%的交易里面存在B,注意,A和B之间在这里仅仅代表自己,40%和95%这两个数值并不代表他们之间存在联系。假如confidence(A=>B)=80%,表明如果顾客购买了A,有80%的顾客同时有购买了B。又假设support(A=>B)足够高,这似乎看起来support和confidence都很高的情况下,A=>B这条规则是很有可能成立的。然而lift只有confidence(A=>B)/support(B)= 80% / 95% =0.8421,也就是说lift不太支持这条规则成立,因为顾客普遍都会买B,导致了support和confidence都偏高而lift则不高。

二、pycaret.arules使用方法

1)setup() :初始化-> create_model() :创建模型-> plot_model()展示模型结果与分析

2)get_rules():查看详细规则,返回pandas.DataFrame

2.1API介绍 

初始化:

# pycaret使用模型的第一步,初始化。
# data: pandas.DataFrame
# transaction_id: str 识别事务的ID字段
# item_id: str 用于做关联的字段,如:菜品Id列
# ignore_items: list, default = None 规则挖掘中,需要被忽略的规则
# session_id: int, default = None 随机种子?
# return 全局变量
pycaret.arules.setup(data, transaction_id, item_id, ignore_items=None, session_id=None)

创建模型:

#metric:设置评估变量,可以为'confidence',‘support’, ‘lift’, ‘leverage’, ‘conviction’
#threshold: float, default = 0.5,评估变量的最小阈值
#min_support: float, default = 0.05,支持度最小阈值
#round: int, default = 4,设置小数位精确度
#Returns:pandas.DataFrame规则详情
pycaret.arules.create_model(metric='confidence', threshold=0.5, min_support=0.05, round=4)

绘制展示:

# model: pandas.DataFrame, default = none,传入刚刚创建的模型
# plot: str, default = ‘2d’,或'3d',绘制图表类型的参数
# scale: float, default = 1,图像分辨率
pycaret.arules.plot_model(model, plot='2d', scale=1)

其他

具体使用代码:

from pycaret.datasets import get_data
data = get_data('france')
from pycaret.arules import *
exp_name = setup(data = data, transaction_id = 'InvoiceNo', item_id = 'Description')
rule1 = create_model(metric='confidence', threshold=0.7, min_support=0.05)
plot_model(rule1, plot='3d')

标签:confidence,Python,support,规则学习,default,lift,规则,数据挖掘,id
From: https://www.cnblogs.com/q-q56731526/p/17335724.html

相关文章

  • python3 猜数字小游戏
    Guess_the_Number.pyimportrandom......
  • python接口自动化
    #coding=utf-8'''python中常用的做接口自动化测试的库有哪些?requests、urllib、urllib3、httplibrequests是开源免费的,应用最多的一个库'''#importrequests#创建接口请求三种方法#r=requests.post(url=url,data=data,json=json)#r=requests.request('psot',url=url......
  • python接口自动化2关联接口
    #coding=utf-8"""===================================深圳多测师信息技术有限公司作者:多测师-小程日期:2023年03月30日==================================="""#关联接口:上一个接口的返回参数作为下一个接口的入参#importrequests#importre#classProvince():......
  • python+playwright 学习-35.获取页面的完整 HTML 内容
    前言selenium里面有个driver.page_source可以获取整个html页面的内容,playwright里面也有类似的方法使用page.content()page.content()获取html内容使用示例withsync_playwright()asp:browser=p.chromium.launch(headless=False)context=browser.new_context(......
  • python_07
    #coding=utf-8'''python中的类和对象:类(class):用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。实例化:创建一个类的实例,类的具体对象。对象:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和......
  • python编写CDN刷新脚本
    脚本刷新根目录[root@jenkinscdn]#catdns_flush.py#!/usr/bin/python3fromaliyunsdkcore.clientimportAcsClientfromaliyunsdkcdn.request.v20180510.RefreshObjectCachesRequestimportRefreshObjectCachesRequestimportsysiflen(sys.argv)<2:print(�......
  • python+playwright 学习-49 pytest-xdist 多进程执行用例
    前言在实际工作中项目下的web自动化用例非常多,单进程执行会消耗很长的运行时间,可能运行一次用例得几个小时。为了加快用例的运行速度,可以使用pytest-xdist多进程执行用例。但并不是说你写的用例,直接安装插件就能使用,实际使用的过程中还会遇到很多的问题。pytest-xdist多进程执行......
  • python-悲观锁和乐观锁
    乐观锁和悲观锁它们都是一种思想,都是人们定义出来的概念,和语言无关并发控制:当程序出现并发的问题时,我们需要保证在并发情况下数据的准确性,以保证当前用户在和其他用户一起操作时,得到的结果和他单独操作时得到的结果是一样的,没有做好并发控制,就可能导致脏读、幻读、不可重复读等问......
  • 【中介者设计模式详解】C/Java/JS/Go/Python/TS不同语言实现
    简介中介者模式(MediatorPattern)是一种行为型模式。它限制对象之间的直接交互,它用一个中介对象来封装一系列的动作,以让对象之间进行交流。中介者使各个对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。当一些对象和其他对象紧密耦合以致难以对其进......
  • 简单的python3脚本:从日志中提取信息
    命名:log_extractor.pyordownload_stats_extractor.py#coding:utf-8#!/usr/bin/python3deffilter_line(line,contains,contains_not):ifall(cinlineforcincontains)andnotany(ninlinefornincontains_not):ifint(line.split()[8])==2......