数据挖掘 | 亲和性分析(一)

首先解释一下什么是亲和性

举一个简单的例子:当顾客在购买一件商品时,往往还会购买另一件商品。比如我们买了面包就还会买牛奶,买了刀就还会买叉子等等。也就是说,顾客买了商品A,还会购买商品B,这就是亲和性的简单例子

那么,亲和性分析就是对这种规律进行分析,商家就可以将这些同时购买的物品放在一起以提升销售额啦。当然,实际上的应用远远不止这些。亲和性分析其实就是根据样本个体之间的相似度,确定它们关系的亲疏。像我们平时看到的电影推荐,广告推荐等等,就是亲和性分析的应用

下面开始分析一个简单的数据集,来实现商品推荐

数据集

给出一个txt文件,可以看到数据是这样的(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表示购买,0表示未购买

下面开始用Python对这个数据集进行分析

加载数据集

环境:Python3.6

使用模块:numpy

	#coding: utf-8#coding: utf-8
	import numpy as np
	# 定义数据集文件名
	dataset_filename = "affinity_dataset.txt"
	# 加载数据集
	X = np.loadtxt(dataset_filename)
	# 打印数据集,行为交易信息,列为商品,各列假设为面包、牛奶、奶酪、苹果和香蕉,1表示购买
	n_samples, n_features = X.shape
	print("数据集共有{0}个样本和{1}个分支".format(n_samples, n_features))
	print(X)

执行结果为:

简单的数据查询

现在来一个很简单的数据查询,那就是查询一下有多少位顾客购买了苹果

    # 查询多少顾客购买了苹果
	num_apple_purchases = 0  # 初始化
	for sample in X:
	    if sample[3] == 1:
	        num_apple_purchases += 1
	print("共有{0}人购买了苹果".format(num_apple_purchases))

思路很简单,若每一行第四列的值为1时,变量num_ apple_ purchases的值加一

那么最终的值即为购买苹果人数

执行结果为:共有39人购买了苹果

规则查找及优劣判断

现在,开始来寻找一个规则

如果顾客购买了苹果,那么他们还购买了香蕉

用代码实现很简单,其实就是统计数据集中第四列和第五列同为1的次数即可

这里还要补充一下规则的优劣的衡量,常用的是支持度和置信度

比较简单的支持度即数据集中规则应验的次数,也就是成立了几条,就是支持度

置信度就是规则成立的比例,也就是前提成立时这条规则应验次数占所有次数的比例

知道了这些,现在开始用代码来实现

# 查询多少人既买了苹果又买了香蕉,并记录下规则有效和规则无效的次数
	rule_valid = 0
	rule_invalid = 0
	for sample in X:
	    if sample[3] == 1:   # 购买苹果
	        if sample[4] == 1:  # 购买香蕉
	            rule_valid += 1  # 规则成立,次数加一
	        else:
	            rule_invalid += 1  # 否则规则不成立
	print("共有{0}人既买了苹果又买了香蕉".format(rule_valid))
	print("共有{0}人买了苹果但没买香蕉".format(rule_invalid))

    # 计算支持度和置信度
	support = rule_valid  # 支持度即规则有效次数
	confidence = rule_valid / num_apple_purchases  # 置信度即规则有效比例
	print("支持度为:{0},置信度为:{1:.3f}.".format(support, confidence))
	# 置信度表示为百分比形式
	print("置信度为:{0:.1f}%.".format(100 * confidence))

执行结果为:

共有24人既买了苹果又买了香蕉

共有15人买了苹果但没买香蕉

支持度为:24,置信度为:0.615

置信度为:61.5%.

通过分析,我们知道了“如果顾客购买了苹果,那么他们还购买了香蕉”这条规则支持度为24,置信度为0.615。但这只是所有规则中的一种规则,还有其他规则我们还没有分析。所以,下一次,将会讲如何统计所有规则

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值