python亲和度_数据挖掘——亲和性分析

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/244332.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux 命令 考试,linux常用命令总结-第一次考试

1.1 mkdir创建目录语法:cat [选项] [文件名]选项:-p 多层目录创建-v 每次创建新目录都显示信息范例:1.创建多层嵌套目录[rootns2 tmp]# mkdir -pv /tmp/test/file/newmkdir: 已创建目录 "/tmp/test"mkdir: 已创建目录 "/t…

onvif python 音视频_python3控制基于onvif的安防摄像头

参考链接:一、python3控制基于onvif的安防摄像头使用的是tp-link安防摄像头安装在Python3中,是安装pip install onvif-zeep实现控制二、实现已经保证了摄像头具有的以下的能力,所以不再对设备是否具有能力进行判断。实现获取设备、控制设备、…

python fact函数_第5天:Python 函数

函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段,所以我经常说函数是程序员规模化使用的基础。函数能提高应用的模块性,和代码的重复利用率。在程序设计中,常将一些常用的功能模块编写成函…

linux编写日志接口so,linux下动态链接问题(.so文件的编写与调用) .

.o 就相当于windows里的obj文件.a 是好多个.o合在一起,用于静态连接.so 是shared object,用于动态连接的,和dll差不多sotest.c#includeint test(int a){printf("#########:%d\n",a);return a;}//test.c#include int test(int a);int main(int argc,char argv[]){int …

python获取包下的所有对象_Python访问COM对象的comtypes包简介

Python访问COM对象的comtypes包简介虽然pywin32包中包含的派遣高级客户端支持基于COM接口,它是无法访问COM 对象,除非他们在C 封装代码自定义COM接口。在Python中是无法直接访问COM对象接口,需要借助专门访问的COM包:comtypes&am…

linux tmux 详细教程,Linux下的神器介绍之Tmux分屏器

前言我们为什么需要分屏器呢?对于这个问题,我想大家肯定都有自己的看法。主流的观点是这样的,对于生活在Linux下的人(开发人员、运维人员、普通爱好者)都不可避免的使用终端模拟器(比如,gnome-terminal)去执行一些命令或者脚本。但…

laravel created_at 时间戳_使用 HTTP 测试测试 Laravel 中间件

文章转发自专业的Laravel开发者社区,原始链接:https://learnku.com/laravel/t/34002在本文中,我将展示一个使用 HTTP 测试中间件的实例。HTTP 级测试更能适应变化,可读性更强。在最近与 Adam Wathan 和 Taylor Otwell 合拍的《全栈…

linux 内核主线,为AM335x移植Linux内核主线代码(41)Ethernet结论篇

一口老血喷到屏幕上!请自动略过之前的第36~40小节_!!!https://www.tuicool.com/articles/UvmuEv我的电路板存在的问题是:由于布线(杜邦线)导致的干扰,只能通信在10Mbps,而不能通信在…

动物识别专家系统python_Python有哪些作用?

Python是什么呢?Python是一种全栈的开发语言,如果能学好Python,前端、后端、测试、大数据分析、爬虫等这些工作你都能胜任。那Python有哪些作用呢?Python主要有以下四大主要应用:网络爬虫网站开发人工智能自动化运维接…

linux 命令下删除字符,【Linux基础】tr命令替换和删除字符

cat t.txtabcdacat t.txt |tr abc xyzxyzdxcat t.txtabcda备注:凡是在t.txt文件中出现的"a"字母,都替换成"x"字母,"b"字母替换为"y"字母,"c"字母替换为"z"字母。而不…

python ssh登陆模块_使用python的Paramiko模块登陆SSH

paramiko是用Python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接。python的paramiko模块可以方便的实现ssh登录,并执行命令。1. paramiko模块安装1.1安装pycrypto库pycrypto库安装方法python setu…

linux mint图标大小,Cinnamon:LinuxMint 15桌面设置小技巧

touchwiz自身也在做不断的革新,例如7屏分页,桌面切换3d效果,增强型的下拉菜单设置等。win10多桌面最多可以支持7个桌面开启,而且win10切换多桌面是有快捷键的,可以帮助用户迅速切换或创建以及关闭多桌面。切换方法一&a…

操作系统源代码_国产操作系统“之光”?Windows XP绝密源代码泄露,BT种子已在网上疯传...

微软的Windows操作系统是目前使用人数最多、覆盖最广的桌面操作系统,从安全角度来看,其系统源代码对于公众而言可以说是绝密。不过......现在......,黑客在4Chan平台上以BT种子文件的形式在线泄漏了多个旧Windows版本的源代码,包括…

linux设置多语言环境,怎么为Linux系统配置多语言环境?

这篇文章主要讲述了怎么为Linux系统配置多语言环境的基本方法,其中还包括编码的修改方法,我们就拿用户使用最多的Ubuntu和CentOS这两个为例子吧。需要的朋友可以参考下。修改 /etc/sysconfig/i18n 文件,如LANG“en_US.UTF-8”,xwi…

轴承新旧型号对照表_精密机床主轴轴承,高端轴承进口清关报关流程

精密机床的主轴对轴承精度的要求非常高,我国目前在这一技术上仍然处于一片空白,那么高精度的轴承要怎么进口呢?高精度轴承进口这块其他国家管控得比较严格,高精度轴承的进口又会遇到哪些问题呢?在我们的生活中轴承几乎…

linux禁止切换到root,linux禁止普通用户切换至root用户的实例讲解

在上正文之前,我想先将一些基础的linux用户以及用户组的相关命令:1、添加用户useradd [-g group] [-d user_home_directory] [-p “your password”] Username-g 表示设置新增用户所属用户组-d 表示设置新增用户的主目录-p 表示设置新增用户的登录密码还…

python中new方法详解及_Python中new方法的详解

new_ 方法是什么?__new__方法其实就是创建对象的方法new()方法是在类准备将自身实例化时调用。一个类可以有多个位置参数和多个命名参数,而在实例化开始之后,在调用 init()方法之前,Python首先调用new()方法:def new(c…

linux 子域dns,linux下搭建DNS子域及相关授权详解

linux下搭建DNS子域及相关授权详解forward功能是本地无法解析的域名,转发给指定DNS服务器forward only; 所有无法解析的域名,都转发给指定DNS服务器,必须有解析结果forward first;无法解析的域名,转发给指定DNS服务器,…

python堆排序求topn_Java堆排序,取得前TopN个数

import java.util.Random;/*** Created with IntelliJ IDEA.* User: pengfei.hpf* Date: 14-4-29* Time: 上午11:45* To change this template use File | Settings | File Templates.*/public class HeapSortUtil {/*** 用堆排序方法 找出前N个最大的数* originalArray 原始数…

开机自启动程序关闭方法_电脑非常卡,总有软件偷偷自启动?学会这1招,永久关闭它们!...

小编有一个朋友,前段子发微信问我,说他的电脑非常卡,重装电脑后,会好转许多,非常流畅,但是过了几天又卡了。我问了他的电脑配置,首先电脑的配置是绝对ok。当前一流水平,后来我远程操…