美文网首页
numpy亲和性分析

numpy亲和性分析

作者: 一路向后 | 来源:发表于2021-07-19 22:10 被阅读0次

1.基本原理

   假设 商场考虑摆放 面包 牛奶 奶酪 苹果 香蕉的摆放位置。肯定要遵循一些规则,比如 顾客买完面包后,很大可能会买一些牛奶,所以就让面包和牛奶放在一起。任何一个规则都由前提和结论组成,上例中,前提就是顾客买卖面包,结论就是顾客很大程度上买牛奶。
   评价规则的好坏,就是他发生的可能性的大小,越大,说明人群中符合这个规则的人越多。通常判断规则的好坏的指标有 支持度和置信度。支持度代表 规则有效的数目,置信度指的是 有效的规则所占的比例。

2.数据集affinity_dataset.txt

0 1 1 0 1
0 1 0 0 0
0 0 1 1 1
0 0 1 1 1
0 1 0 1 0
1 1 1 1 1
0 0 1 1 0
1 0 1 0 1
0 1 0 0 1
0 0 1 1 1
1 1 0 0 0
0 0 0 1 0
0 0 1 1 1
0 0 1 0 1
1 0 0 0 1
0 1 0 0 0
0 1 0 1 0
1 1 0 0 0
1 1 0 0 0
0 1 1 1 0
1 0 0 0 0
1 1 0 0 0
0 1 0 1 0
0 1 1 0 1
1 0 0 0 1
0 0 1 1 0
0 1 0 1 1
1 0 1 0 0
1 0 0 0 1
0 0 1 0 1
0 1 1 0 0
0 0 1 0 1
0 1 0 0 0
0 0 1 0 1
1 1 0 1 1
1 0 0 1 0
1 0 0 0 0
1 1 0 0 0
1 1 1 1 0
1 1 0 0 0
0 0 1 1 1
1 1 0 0 1
1 1 0 0 1
0 0 0 0 1
0 0 0 1 1
1 0 0 0 1
1 0 0 1 1
0 0 1 0 1
0 0 0 1 1
1 0 0 0 1
1 1 0 0 1
1 1 0 1 0
0 0 1 1 1
0 0 1 0 1
0 0 1 1 1
1 1 0 0 1
0 1 1 1 1
0 0 1 0 1
1 0 0 0 0
1 1 0 0 0
1 1 0 0 0
1 1 0 0 1
1 1 0 1 1
0 0 0 1 1
0 1 0 0 1
0 1 0 0 0
0 1 0 1 0
0 0 0 1 1
0 1 0 0 1
1 0 0 0 1
0 0 1 0 1
0 1 0 1 1
1 0 0 0 1
0 0 1 1 1
0 0 0 0 1
0 0 1 1 1
1 0 0 0 0
1 1 0 0 1
0 0 1 0 1
0 0 0 0 1
1 1 0 1 0
0 1 0 0 0
0 0 1 1 1
0 0 1 1 0
0 1 1 0 1
1 0 0 1 0
0 1 0 0 1
1 1 0 0 0
1 0 0 0 0
1 1 0 1 0
1 0 0 0 0
0 0 1 1 1
0 1 0 0 0
0 0 1 1 1
1 0 0 1 1
0 1 0 0 0
0 0 1 0 1
1 0 0 0 1
0 0 1 0 1
1 1 0 0 1

3.源码实现

import numpy as np
from collections import defaultdict
from operator import itemgetter

data_filename = "affinity_dataset.txt"

datas = np.loadtxt(data_filename)

#列的属性
features = ["面包", "牛奶", "黄油", "苹果", "香蕉"]

valid_rules = defaultdict(int)
invalid_rules = defaultdict(int)

#统计A和B之间的联系
def connect(indexA, indexB):
    buy_A_num = 0

    for sample in datas:
        if sample[indexA] == 0:
            continue

        buy_A_num += 1

        if(sample[indexB] == 1):
            valid_rules[(indexA, indexB)] += 1
        else:
            invalid_rules[(indexA, indexB)] += 1

    return buy_A_num

#计算置信度
def get_confidence():
    confidence = defaultdict(float)

    for premise, feature in valid_rules.keys():
        rule = (premise, feature)
        confidence[rule] = valid_rules[rule] / (valid_rules[rule] + invalid_rules[rule])
        print("同时购买{0}和{1}的置信度为: {2:0.3f}".format(features[rule[0]], features[rule[1]], confidence[rule]))
        print("同时购买{0}和{1}的支持度为: {2}".format(features[rule[0]], features[rule[1]], valid_rules[rule]))

    return confidence

#计算所有置信度
for i in range(len(features)):
    for j in range(len(features)):
        if(i == j):
            continue
        connect(i, j)

confidence = get_confidence()

print("---------------------------------------------------------")

#按置信度排序
sort_dict = sorted(confidence.items(), key=itemgetter(1), reverse=True)

for index in range(5):
    rule = sort_dict[index][0]

    print("同时购买{0}和{1}的置信度为: {2:0.3f}".format(features[rule[0]], features[rule[1]], confidence[rule]))

print("---------------------------------------------------------")

#按支持度排序
sort_dict = sorted(valid_rules.items(), key=itemgetter(1), reverse=True)

for index in range(5):
    rule = sort_dict[index][0]

    print("同时购买{0}和{1}的支持度为: {2:0.3f}".format(features[rule[0]], features[rule[1]], valid_rules[rule]))

4.运行及其结果

$ python3 example.py
同时购买面包和牛奶的置信度为: 0.535
同时购买面包和牛奶的支持度为: 23
同时购买面包和黄油的置信度为: 0.093
同时购买面包和黄油的支持度为: 4
同时购买面包和苹果的置信度为: 0.256
同时购买面包和苹果的支持度为: 11
同时购买面包和香蕉的置信度为: 0.488
同时购买面包和香蕉的支持度为: 21
同时购买牛奶和面包的置信度为: 0.500
同时购买牛奶和面包的支持度为: 23
同时购买牛奶和黄油的置信度为: 0.174
同时购买牛奶和黄油的支持度为: 8
同时购买牛奶和苹果的置信度为: 0.326
同时购买牛奶和苹果的支持度为: 15
同时购买牛奶和香蕉的置信度为: 0.435
同时购买牛奶和香蕉的支持度为: 20
同时购买黄油和面包的置信度为: 0.111
同时购买黄油和面包的支持度为: 4
同时购买黄油和牛奶的置信度为: 0.222
同时购买黄油和牛奶的支持度为: 8
同时购买黄油和苹果的置信度为: 0.528
同时购买黄油和苹果的支持度为: 19
同时购买黄油和香蕉的置信度为: 0.806
同时购买黄油和香蕉的支持度为: 29
同时购买苹果和面包的置信度为: 0.282
同时购买苹果和面包的支持度为: 11
同时购买苹果和牛奶的置信度为: 0.385
同时购买苹果和牛奶的支持度为: 15
同时购买苹果和黄油的置信度为: 0.487
同时购买苹果和黄油的支持度为: 19
同时购买苹果和香蕉的置信度为: 0.615
同时购买苹果和香蕉的支持度为: 24
同时购买香蕉和面包的置信度为: 0.344
同时购买香蕉和面包的支持度为: 21
同时购买香蕉和牛奶的置信度为: 0.328
同时购买香蕉和牛奶的支持度为: 20
同时购买香蕉和黄油的置信度为: 0.475
同时购买香蕉和黄油的支持度为: 29
同时购买香蕉和苹果的置信度为: 0.393
同时购买香蕉和苹果的支持度为: 24
---------------------------------------------------------
同时购买黄油和香蕉的置信度为: 0.806
同时购买苹果和香蕉的置信度为: 0.615
同时购买面包和牛奶的置信度为: 0.535
同时购买黄油和苹果的置信度为: 0.528
同时购买牛奶和面包的置信度为: 0.500
---------------------------------------------------------
同时购买黄油和香蕉的支持度为: 29.000
同时购买香蕉和黄油的支持度为: 29.000
同时购买苹果和香蕉的支持度为: 24.000
同时购买香蕉和苹果的支持度为: 24.000
同时购买面包和牛奶的支持度为: 23.000

相关文章

  • numpy亲和性分析

    1.基本原理    假设 商场考虑摆放 面包 牛奶 奶酪 苹果 香蕉的摆放位置。肯定要遵循一些规则,比如 顾客买完...

  • python数据挖掘——亲和性分析

    1. 亲和性分析定义 亲和性分析指的是根据样本个体之间的相似度来确定它们之间关系的亲疏 2. 亲和性分析的应用 向...

  • 采用亲和性分析方法推荐电影

    1.亲和性分析应用场景:欺诈检测、软件优化、产品推荐等 2.在本文中采用亲和性分析的代表算法Apriori算法实现...

  • k8s Affinity 亲和性专题源码分析 (二)

    前面文章一部分已有介绍Pod亲和性相关的调度策略算法分析,接下来我们继续Pod相关调度算法分析: 三 POD亲和性...

  • Kubernetes 亲和性调度

    原文链接: Kubernetes 亲和性调度 亲和性有分成节点亲和性(nodeAffinity)和 Pod 亲和性...

  • 亲和性分析

    数据挖掘有个常见的应用场景,即顾客在购买一件商品时,商家可以趁机了解他们还想买什么,以便把多数顾客意愿同时购买的商...

  • k8s Affinity 亲和性专题源码分析 (三)

    本文是续前面亲和性专题的最后一篇《服务亲和性》的算法分析篇,在default调度器代码内并未注册此预选策略,仅有代...

  • day77-数据分析之numpy

    numpy是数据分析中最基础的分析库,而numpy中最重要的部分是np.array 1numpy库 1.1利用数组...

  • K8S之节点亲和性调度

    节点亲和性规则: required(硬亲和性,不能商量,必须执行) 、preferred(软亲和性,可以商量,选择...

  • k8s 亲和性和反亲和性

    亲和性和反亲和性 node 亲和性 node亲和性策略表示pod部署到符合某些条件的node上. 上面的这个例子表...

网友评论

      本文标题:numpy亲和性分析

      本文链接:https://www.haomeiwen.com/subject/mwhkmltx.html