亲和性分析根据样本个体之间的相似度,确定它们关系的亲疏。应用场景:

1.向网站用户提供多样化的服务或投放定向广告。

2.为了向用户推荐电影或商品

3.根据基因寻找有亲缘关系的人

比如:统计顾客购买了商品1,然后再购买商品2的比率,算相似度。

importnumpy as np

dataset_filename= "affinity_dataset.txt"x=np.loadtxt(dataset_filename)#print x[:5]#上述代码的结果代表前5次交易中顾客购买了什么。用“1”表示购买,“0”表示没有购买。#这五种商品分别是:面包,牛奶,奶酪,苹果和香蕉。#现在我们要找出“如果顾客购买了商品x,那么他们可能愿意购买商品y”的规则(一条规则有前提条件和结论两部分组成)。衡量一个规则的优劣通常有:支持度(指数据集中规则应验的次数)和置信度(指规则准确率如何,计算方法是:规则应验次数除以满足前提条件的所有次数)。

#举个例子计算有多少人购买了苹果。

num_apples_purchases =0for sample inx:if sample[3] == 1:

num_apples_purchases+= 1

#print "{0} people bought Apples".format(num_apples_purchases)#接着我们计算有多少人购买了苹果,后又购买了香蕉。同时计算支持度和置信度。

num_apples_bananas_purchases =0for sample inx:if sample[3] == 1 and sample[4] == 1:

num_apples_bananas_purchases+= 1valid_rules=num_apples_bananas_purchases

num_occurances=num_apples_purchases

support=valid_rules

confidence= valid_rules/float(num_occurances)print "{0} people bought Apples, but {1} people also bought bananas".format(num_apples_purchases, num_apples_bananas_purchases)print "------"

#支持度

printsupport#置信度

print "{0:.3f}".format(confidence)#我们接着将所有规则下的可能性都统计出来,找出亲和性最高的几个。首先,分为两种:一种是规则应验,一种是规则无效。分别创建字典。字典的键是由条件和结论组成的元组,元组元素为特征在特征列表中的索引值,比如“如果顾客买了苹果,他们也会买香蕉”就用(3,4)表示。这里使用defaultdict,好处是如果查找的键不存在,返回一个默认值。

from collections importdefaultdict

features= ["bread", "milk", "cheese", "apple", "banana"]

valib_rules=defaultdict(int)

invalib_rules=defaultdict(int)

num_occurances=defaultdict(int)#依次对样本的每个个体及个体的每个特征值进行处理。第一个特征为规则的前提条件。

for sample inx:for premise in xrange(4):if sample[premise] ==0:continuenum_occurances[premise]+= 1

#比如“顾客买了苹果,他们也买了苹果”,这样的规则是没有意义的。

for conclusion inxrange(len(features)):if premise ==conclusion:continue

if sample[conclusion] == 1:

valib_rules[(premise, conclusion)]+= 1

else:

invalib_rules[(premise, conclusion)]+= 1support=valib_rules

confidence=defaultdict(float)'''for premise, conclusion in valib_rules.keys():

rule = (premise, conclusion)

confidence[rule] = valib_rules[rule] / num_occurances[premise]'''

#这样我们就得到了支持度字典和置信度字典。我们再来创建一个函数,以便更加方便查看结果。

defprint_rule(premise, conclusion, support, confidence, features):

premise_name=features[premise]

conclusion_name=features[conclusion]

confidence[(premise, conclusion)]= valib_rules[(premise, conclusion)] /float(num_occurances[premise])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)])if __name__ == "__main__":

premise= 1conclusion= 3

#print print_rule(premise, conclusion, support, confidence, features)

#排序找出最佳的规则。对字典排序:首先字典的items()函数返回包含字典所有元素的列表,再使用itemgetter()类作为键,这样就可以对嵌套列表进行排序了。

from operator importitemgetter

sorted_support= sorted(support.items(), key=itemgetter(1), reverse=True)#提取支持度最高的5条

for index in range(5):print "Rule #{0}".format(index + 1)

premise, conclusion=sorted_support[index][0]

print_rule(premise, conclusion, support, confidence, features)#总结亲和性分析,可以清楚的看出哪两种商品一起购买的几率要大些,经理就可以根据这些规则来调整商品摆放的位置,从而为商家带来更大的经济效益。

affinity_dataset.txt

0 1 0 0 0

1 1 0 0 0

0 0 1 0 1

1 1 0 0 0

0 0 1 1 1

0 1 0 0 0

0 0 1 1 1

0 0 1 1 0

0 1 0 1 0

0 1 0 0 1

0 0 0 1 0

1 0 1 0 0

1 0 0 0 1

0 1 1 0 0

0 0 1 0 1

0 1 0 1 0

1 1 0 1 1

0 0 0 1 1

0 1 0 0 1

1 1 0 1 0

0 1 1 0 0

0 1 0 0 1

0 0 1 0 0

1 0 0 0 1

0 1 0 1 0

1 0 0 1 1

0 1 1 0 0

0 1 0 0 1

0 0 0 0 1

1 0 0 0 1

0 1 0 1 1

1 0 0 0 0

0 1 0 0 0

1 0 0 0 0

0 0 1 1 1

0 0 1 1 1

0 0 1 1 1

1 0 0 1 0

0 1 0 0 1

1 1 0 0 0

0 0 0 0 1

0 1 0 1 1

0 1 0 1 0

0 1 0 0 1

1 1 1 1 0

1 0 0 0 1

0 0 0 1 1

1 1 0 0 1

0 1 0 0 0

0 1 1 0 0

0 1 0 1 1

0 1 0 0 1

0 0 1 1 1

0 0 0 1 1

0 0 1 0 0

0 0 1 1 1

1 0 0 0 0

1 1 1 0 1

0 0 1 1 1

0 1 0 0 0

0 0 1 1 0

0 1 0 0 1

0 0 1 0 0

0 1 0 0 0

1 0 0 0 1

0 1 0 0 0

0 1 1 0 1

0 0 1 0 0

0 0 1 0 0

0 0 0 1 1

0 0 1 0 0

0 0 1 1 0

0 1 0 0 0

0 1 1 1 1

1 1 0 0 1

0 0 1 1 0

0 0 1 1 0

0 0 1 1 1

0 0 1 1 1

0 1 0 0 0

0 1 0 1 0

1 1 0 0 1

0 1 0 0 1

0 0 1 1 1

0 1 0 0 1

0 1 0 1 1

0 1 0 0 1

1 0 0 0 0

1 0 0 1 1

0 1 1 1 1

1 0 0 0 1

0 0 1 0 1

0 1 1 1 0

1 1 0 1 1

1 0 1 0 1

0 0 1 1 1

1 1 1 1 0

0 1 0 0 1

0 1 0 0 1

1 1 0 1 1

python亲和度_数据挖掘——亲和性分析相关推荐

  1. python亲和性分析法推荐电影论文_用亲和性分析方法推荐电影

    本文是<python数据挖掘与入门实践>第四章"用亲和性分析方法推荐电影"的笔记 目的 学习Apriori算法,实现更精准的电影推荐服务,向潜在的客户推荐他们可能喜欢的 ...

  2. python 银行数据分析_银行业务概述_Python数据分析行业案例课程--信用评分方法_数据挖掘与分析视频-51CTO学院...

    注意: 1. 本行业案例课程为Python 3 数据分析系列课程的行业案例部分,学员请务必先观看课程介绍免费视频,确认已学习本课程所需Python分析技能. 2. 本课程的核心目的是协助学员学习具体业 ...

  3. python标题行_添加标题行_Python数据分析实战应用_数据挖掘与分析视频-51CTO学院...

    为什么学Python: 重要:数据分析是职业技能必备,Python是大数据分析** 趋势:Python是目前非常火的编程语言,使用人多 好学:学习简单,容易上手,使用灵活,可扩展强 **:会Pytho ...

  4. python描述性统计命令_描述性统计_Python数据分析实战应用_数据挖掘与分析视频-51CTO学院...

    为什么学Python: 重要:数据分析是职业技能必备,Python是大数据分析** 趋势:Python是目前非常火的编程语言,使用人多 好学:学习简单,容易上手,使用灵活,可扩展强 **:会Pytho ...

  5. python与cad交互_与命令行进行交互_Python数据分析实战应用_数据挖掘与分析视频-51CTO学院...

    为什么学Python: 重要:数据分析是职业技能必备,Python是大数据分析** 趋势:Python是目前非常火的编程语言,使用人多 好学:学习简单,容易上手,使用灵活,可扩展强 **:会Pytho ...

  6. python分析数据的相关性质_理解数据的性质_Python数据分析实战应用_数据挖掘与分析视频-51CTO学院...

    为什么学Python: 重要:数据分析是职业技能必备,Python是大数据分析** 趋势:Python是目前非常火的编程语言,使用人多 好学:学习简单,容易上手,使用灵活,可扩展强 **:会Pytho ...

  7. python分组统计标准化_分组计算和汇总_Python数据分析实战应用_数据挖掘与分析视频-51CTO学院...

    为什么学Python: 重要:数据分析是职业技能必备,Python是大数据分析** 趋势:Python是目前非常火的编程语言,使用人多 好学:学习简单,容易上手,使用灵活,可扩展强 **:会Pytho ...

  8. 关联规则挖掘算法_数据挖掘 | 关联规则分析

    1 Introduction 1.1 Problem 频繁模式是频繁出现在数据集中的模式,对于数据分类.聚类.和其他数据挖掘任务有极大的帮助,频繁模式的挖掘成为了一项重要的数据挖掘任务和数据挖掘关注的 ...

  9. 贝叶斯分类python代码调试_数据挖掘实验2python编写贝叶斯分类器 – FindSpace

    1. Introduction 本文基于前文说的朴素贝叶斯原理,参考圣地亚哥州立大学的实验编写了一个简单的朴素贝叶斯分类器,并利用测试数据进行了测试. 项目地址: 2. 分类器编写 2.1数据说明 采 ...

最新文章

  1. 删除trigger 禁用触发器 启用触发器 查看触发器
  2. UA MATH566 统计理论4 贝叶斯统计基础1
  3. Spring boot错误处理机制
  4. oracle 10g rac 修改sga_target不生效,关于请教rac的sga 设置及修改问题
  5. 复工后,看看他们都是怎么上班的!
  6. ArcUser 2006第2期拾零
  7. 我的世界服务器修改数据,我的世界常用指令大全,轻松调整服务器数值状态
  8. 关于mysql保存数据的时候报问题分析
  9. 一些图像处理函数用法
  10. 《python编程》第五章——并行系统工具(上)
  11. 最简单的Officescan快速卸载
  12. 计算机机房辐射大吗6,我的办公室离机房只有一墙之隔,请问对孕妇辐射大吗?我们单位10多个电脑的交换机。...
  13. 各行业的英语术语(绝对精华 1)
  14. uv-pv-vv的区别
  15. IP地址配置错误网络无法连接怎么解决Win10?
  16. 新手入门matlab之线性系统频域分析
  17. 有哪些值得推荐的计算机专业的竞赛?
  18. English学习网址
  19. phpunit学习第一章
  20. local_policy.jar和US_export_policy.jar资源免费下载

热门文章

  1. 百度地图api的密钥申请地址
  2. linux脚本计算器加减乘除,用shell写一个简易计算器,可以实现加、减、乘、除运算,假如脚本名字为1.sh,执行示例:./1....
  3. wordpress漏洞_用软件工具扫描WordPress / Shopify主题恶意代码以及漏洞分析相关工具...
  4. 用友服务器系统版本低,客户端版本低于服务器端,请升级后再登录
  5. java怎么看dao文件_java通过实体类生成dao文件
  6. css不支持data image,CSS_CSS中使用image data URI来处理图片的方法,即将图片资源转换为 base64 字 - phpStudy...
  7. android生成png图片,Android 中将 base64图片 解码为.png图片
  8. Maven常用命令和代码实操
  9. generator mysql插件_mybatis Generator最佳实践(数据库:mysql)
  10. python float 精度_numpy.float128的内部精度是多少?