# 数据挖掘 | 利用Python进行商品的亲和性分析

### 亲和性分析案例

```（1）defaultdict(int)：初始化为 0
（2）defaultdict(float)：初始化为 0.0
（3）defaultdict(str)：初始化为 ''

```

### 代码实现

```import  numpy as np
from collections import defaultdict
dataset_filename = "affinity_dataset.txt"
features = ["bread","milk","cheese","apple","banana"]  #猜一下这个是干嘛用的
X = np.loadtxt(dataset_filename)
print(X[:5])   #打印前五行的购物信息```

```num_apple_purchases = 0 # 初始化一个购买苹果人数的变量
for sample in X:
if sample[3] == 1:
num_apple_purchases+=1
print("{0} people bought Apples ".format(num_apple_purchases))
num_banana_purchases = 0
for sample in X:
if sample[4] == 1:
num_banana_purchases += 1
print("{0} people bought banana".format(num_banana_purchases))
```

```valid_rules = defaultdict(int)
invalid_rules = defaultdict(int)
num_occurances = defaultdict(int)
for sample in X:
for premise in range(4):
if sample[premise] ==0 :
continue
num_occurances[premise] +=1  #当顾客有购买物品时key对应的时value变为1
for conclusion in range(4):
if premise == conclusion:  #访问同一个key 的时候是没有意义的直接跳过
continue
if sample[conclusion] == 1:
valid_rules[(premise,conclusion)] +=1
else:
invalid_rules[(premise,conclusion)] +=1```

```support = valid_rules
#置信度的计算方法类似，遍历每条规则进行计算
confidence = defaultdict(float)
for premise,conclusion in valid_rules.keys():
rule = (premise,conclusion)
confidence[rule] = valid_rules[rule]/num_occurances[premise]
```

```def print_rule(premise, conclusion,support , confidence,features):
premise_name = features[premise]
conclusion_name = features[conclusion]
print("Rule:if a person buys {0} they will also buy {1} ".format(premise_name,conclusion_name))
print(" - Support : {0}".format(support[(premise,conclusion)]))
print(" - Confidence : {0:.3f}".format(confidence[(premise,conclusion)]))
premise = 1
conclusion = 3
features = ["bread","milk","cheese","apple","banana"]
print_rule(premise,conclusion,support,confidence,features)

from  operator import itemgetter
sorted_support = sorted(support.items(),key=itemgetter(1),reverse=True)

```

```for index in range(5):
print("Rule #{0}".format(index+1))
premise,conclusion = sorted_support[index][0]
print_rule(premise,conclusion,support,confidence,features)
```

0 条评论

• ### Day3.数据挖掘初探：亲和性分析-商品推荐

学了一段时间的数据可视化和NumPy库的使用，是不是很想伸手施展一下，但是用Python进行数据分析和挖掘还是要有一定的基础储备才可以的，其中涉及到算法、统计学...

• ### 学习数据分析，有哪些好书值得读？都在这里了

导读：这个年代里，“用数据说话”已经像是一种过气的口号。各行各业不同角色和身份的人们都已懂得“用数据说话”的重要性，甚至日常生活中也需要用数据看清事实，科学吃瓜...

• ### 论买奶粉的正确姿势，文本数据挖掘有话要说

面对市场上玲琅满目的奶粉，消费者时常不知如何选择。作为一个擅长用数据解决消费问题的网红，DT君一向推崇用户评论文本数据的挖掘。来自KPMG大数据挖掘团队的数据侠...

• ### 【干货】1000位产品经理推荐的数据分析书籍

世界如此喧嚣，知识何其稀少。这是一个信息爆炸的时代，被资讯洪流裹挟的我们，都养成了非常不好的思维习惯：把信息当作知识，把收藏当作学习，把阅读当作思考，把储存当作...

• ### 干货 | 从定义到应用，数据挖掘的一次权威定义之旅

什么是数据挖掘 前两天看到群里有人问，什么是数据挖掘，现在就数据挖掘的概念做一下分析，并且尽量用大白话说一下数据挖掘到底是个啥东西，为啥大数据来了数据挖掘也火了...

• ### 干货 | 19款最好用的免费数据挖掘工具大汇总

数据在当今世界意味着金钱。随着向基于app的世界的过渡，数据呈指数增长。然而，大多数数据是非结构化的，因此需要一个过程和方法从数据中提取有用的信息，并将其转换为...

• ### 「首席架构师推荐」文本挖掘软件列表

文本挖掘，也称为文本数据挖掘，大致相当于文本分析，是指从文本中获取高质量信息的过程。高质量的信息通常是通过设计模式和趋势通过统计模式学习等手段获得的。

• ### 深入浅出：怎么从0开始学习大数据挖掘分析，才能成为合格的数据挖掘分析师及数据科学家

最近有很多人咨询，想学习大数据，但不知道怎么入手，从哪里开始学习，需要学习哪些东西？对于一个初学者，学习大数据挖掘分析的思路逻辑是什么？本文就梳理了如何从0开始...

CDA数据分析师新媒体运营