数据挖掘 ---支持度和置信度的用法

如果客户买了 xx 物品,那么他可能买YY物品

规则常用的方法,支持度和置信度

支持度是指规则的应验次数

置信度就是应验次数所占的比例

直接上代码

# 面包,牛奶,奶酪,苹果,香蕉
from collections import OrderedDict
import numpy as np
from pyexcel_xls import get_data
from pyexcel_xls import save_data
xls_data = get_data(r"777.xls")
features = ["bread", "milk", "cheese", "apples", "bananas"]

# print (xls_data[‘Sheet1‘])
lis =xls_data[‘Sheet1‘]
X= np.array(lis)
n_samples,n_features=X.shape  # 获取行数
print(n_samples)
print(n_features)
# print(X)
# 统计买苹果的人数
num_apple_purchaes =0
for  sample  in X:
    if sample[3]==1:
        num_apple_purchaes +=1
print("{0} people bought Apples".format(num_apple_purchaes))
from collections import defaultdict

valid_rules =defaultdict(int)         # 接受应验次数
invalid_rules =defaultdict(int)       # 接受不应验次数
num_occurences =defaultdict(int)       # 接受出现次数

for sample in X:                                 #对每一行进行循环
    for premise in range(n_features):            #对每列进行循环
        if sample[premise] == 0: continue        #判断该行的某一列列元素是否位0,即是否购买,若为0,跳出本轮循环,测试下一列

        num_occurences[premise] += 1             #记录有购买的一列 sample[premise]
        for conclusion in range(n_features):     #当读取到某一列有购买后,再次循环每一列的值
            if premise == conclusion:            #排除相同的一列,若循环到同一列,则跳出循环,比较下一列
                continue
            if sample[conclusion] == 1:          #当sample[conclusion] 的值为1时,满足了当顾客购买前一件商品时也买了这种商品

                valid_rules[(premise, conclusion)] += 1  #记录下该规则出现的次数
            else:

                invalid_rules[(premise, conclusion)] += 1  #当不满足时即 sample[conclusion]=0 时,记录下不满足该规则的次数
support = valid_rules                               #支持度=规则出现的次数
confidence = defaultdict(float)                     #强制将置信度转为浮点型
for premise, conclusion in valid_rules.keys():
    confidence[(premise, conclusion)] = valid_rules[(premise, conclusion)] / num_occurences[premise] #计算某一规则的置信度,并将其存在字典confidence中

for premise, conclusion in confidence:     #根据字典的两个参数来取值
    premise_name = features[premise]       #我们之前定义了features列表,它的每一列都对应数组的每一列,即商品名称
    conclusion_name = features[conclusion] #商品名称

    print("Rule: 如果顾客购买 {0} 那么他可能同时购买 {1}".format(premise_name, conclusion_name))
    print(" - Confidence: {0:.3f}".format(confidence[(premise, conclusion)]))
    print(" - Support: {0}".format(support[(premise, conclusion)]))
    print("")

结果:  通过 置信度和支持度即可 知道  当买了什么时候,客户更喜欢在买什么


25
5
18 people bought Apples
Rule: 如果顾客购买 bread 那么他可能同时购买 milk
 - Confidence: 0.533
 - Support: 8

Rule: 如果顾客购买 milk 那么他可能同时购买 cheese
 - Confidence: 0.222
 - Support: 2

Rule: 如果顾客购买 apples 那么他可能同时购买 cheese
 - Confidence: 0.333
 - Support: 6

Rule: 如果顾客购买 milk 那么他可能同时购买 apples
 - Confidence: 0.444
 - Support: 4

Rule: 如果顾客购买 bread 那么他可能同时购买 apples
 - Confidence: 0.667
 - Support: 10

Rule: 如果顾客购买 apples 那么他可能同时购买 bread
 - Confidence: 0.556
 - Support: 10

Rule: 如果顾客购买 apples 那么他可能同时购买 bananas
 - Confidence: 0.611
 - Support: 11

Rule: 如果顾客购买 apples 那么他可能同时购买 milk
 - Confidence: 0.222
 - Support: 4

Rule: 如果顾客购买 milk 那么他可能同时购买 bananas
 - Confidence: 0.556
 - Support: 5

Rule: 如果顾客购买 cheese 那么他可能同时购买 bananas
 - Confidence: 0.556
 - Support: 5

Rule: 如果顾客购买 cheese 那么他可能同时购买 bread
 - Confidence: 0.556
 - Support: 5

Rule: 如果顾客购买 cheese 那么他可能同时购买 apples
 - Confidence: 0.667
 - Support: 6

Rule: 如果顾客购买 cheese 那么他可能同时购买 milk
 - Confidence: 0.222
 - Support: 2

Rule: 如果顾客购买 bananas 那么他可能同时购买 apples
 - Confidence: 0.647
 - Support: 11

Rule: 如果顾客购买 bread 那么他可能同时购买 bananas
 - Confidence: 0.467
 - Support: 7

Rule: 如果顾客购买 bananas 那么他可能同时购买 cheese
 - Confidence: 0.294
 - Support: 5

Rule: 如果顾客购买 milk 那么他可能同时购买 bread
 - Confidence: 0.889
 - Support: 8

Rule: 如果顾客购买 bananas 那么他可能同时购买 milk
 - Confidence: 0.294
 - Support: 5

Rule: 如果顾客购买 bread 那么他可能同时购买 cheese
 - Confidence: 0.333
 - Support: 5

Rule: 如果顾客购买 bananas 那么他可能同时购买 bread
 - Confidence: 0.412
 - Support: 7
 

最后按照置信度排序

原文地址:https://www.cnblogs.com/baili-luoyun/p/11217075.html

时间: 2024-11-05 14:59:27

数据挖掘 ---支持度和置信度的用法的相关文章

关联分析中的支持度、置信度和提升度

1.支持度(Support) 支持度表示项集{X,Y}在总项集里出现的概率.公式为: Support(X→Y) = P(X,Y) / P(I) = P(X∪Y) / P(I) = num(XUY) / num(I) 其中,I表示总项集.num()表示求项集个数 2.置信度 (Confidence) 置信度表示在先决条件X发生的情况下,由关联规则"X→Y"推出Y的概率.即在含有X的项集中,含有Y的可能性,公式为: Confidence(X→Y) = P(Y|X)  = P(X,Y) /

频繁项集?关联规则?支持度?置信度?

项集: 最基本的模式是项集,它是指若干个项的集合.频繁模式是指数据集中频繁出现的项集.序列或子结构.频繁项集是指支持度大于等于最小支持度(min_sup)的集合.其中支持度是指某个集合在所有事务中出现的频率.频繁项集的经典应用是购物篮模型.常用的频繁项集的评估标准有支持度,置信度和提升度(关联规则)三个 关联规则: 关联规则是形如X→Y的蕴涵式,其中, X和Y分别称为关联规则的先导(antecedent或left-hand-side, LHS)和后继(consequent或right-hand-

支持度(support)和置信度(confidence)

支持度(Support)的公式是:Support(A->B)=P(A U B).支持度揭示了A与B同时出现的概率.如果A与B同时出现的概率小,说明A与B的关系不大:如果A与B同时出现的非常频繁,则说明A与B总是相关的.    置信度(Confidence)的公式式:Confidence(A->B)=P(A | B).置信度揭示了A出现时,B是否也会出现或有多大概率出现.如果置信度度为100%,则A和B可以捆绑销售了.如果置信度太低,则说明A的出现与B是否出现关系不大.    示例:某销售手机的

python单分类预测模版,输出支持度,多种分类器,str的csv转float

预测结果为1到11中的1个 首先加载数据,训练数据,训练标签,预测数据,预测标签: if __name__=="__main__": importTrainContentdata() importTestContentdata() importTrainlabeldata() importTestlabeldata() traindata = [] testdata = [] trainlabel = [] testlabel = [] def importTrainContentda

Web 前端技术:CSS3---新属性,浏览器支持度,圆角边框(border-radius),阴影(box-shadow),文字与字体(text-shadow属性、word-wrap属性、@font-face规则),2D转换、过渡与动画(transform属性),3D变换

浏览器支持度 CSS3属性: columns:规定列的宽度和列数 默认宽度.列数值为auto column-width:每栏的宽度 column-gap :两栏之间的间距距离 column-count : 栏目的数目 column-rule : color(色值) width(宽度) style(线条样式) 分栏中的分割线的颜色宽度及样式的设定 1.border-radius属性(圆角边框) eg: 结合不同浏览器兼容问题,使用该CSS3新属性 eg: 2.box-shadow属性(阴影) eg

contenteditable支持度

contenteditable attribute (basic support) - Working Draft Global user stats*: Support: 86.71% Partial support: 0.32% Total: 87.03% Method of making any HTML element editable Resources: Demo page WHATWG blog post Blog post on usage problems   IE Firef

R语言数据挖掘实战系列(5)

R语言数据挖掘实战系列(5)--挖掘建模 一.分类与预测 分类和预测是预测问题的两种主要类型,分类主要是预测分类标号(离散属性),而预测主要是建立连续值函数模型,预测给定自变量对应的因变量的值. 1.实现过程 (1)分类 分类是构造一个分类模型,输入样本的属性值,输出对应的类别,将每个样本映射到预先定义好的类别.分类模型建立在已有类标记的数据集上,模型在已有样本上的准确率可以方便地计算,所以分类属于有监督的学习. (2)预测 预测是建立两种或两种以上变量间相互依赖的函数模型,然后进行预测或控制.

【数据挖掘技术】关联规则(Apriori算法)

一.关联规则中的频繁模式   关联规则(Association Rule)是在数据库和数据挖掘领域中被发明并被广泛研究的一种重要模型,关联规则数据挖掘的主要目的是找出: [频繁模式]: Frequent Pattern,即多次重复出现的模式和并发关系(Cooccurrence Relationships),即同时出现的关系,频繁和并发关系也称为关联(Association). 二.应用关联规则的经典案例:沃尔玛超市中“啤酒和尿不湿”的经典营销案例 购物篮分析(Basket Analysis):通

数据挖掘算法——Apriori

在上一篇 数据挖掘入门算法整理 中提到, Apriori算法是 关联规则算法中使用最为广泛的算法,这次我们就来学习下该算法的基本知识. 一.算法概述 Apriori 算法是一种最有影响力的挖掘布尔关联规则的频繁项集的 算法,它是由Rakesh Agrawal 和RamakrishnanSkrikant 提出的.它使用一种称作逐层搜索的迭代方法,k- 项集用于探索(k+1)- 项集.首先,找出频繁 1- 项集的集合.该集合记作L1.L1 用于找频繁2- 项集的集合 L2,而L2 用于找L2,如此下