数据挖掘系列笔记(1)——亲和性分析

2023-10-31 19:50

本文主要是介绍数据挖掘系列笔记(1)——亲和性分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

亲和性分析是根据样本个体(物体)之间的相似度,确定它们关系的亲疏。在数据挖掘中有大量的应用场景,比如顾客更愿意同时购买哪些物品。

亲和性有多种测量方法。例如,统计两件商品一起出售的频率,或者统计顾客购买了商品1 后再买商品2的比率。最常用的用来进行亲和性分析的两个重要概念是:支持度(support)和置信度(confidence)。举个例子:我们说在全班同学的样本中间,地理90分以上的同学历史也考90以上,那么他的支持度就是所有两门90分的人在样本中的占比,而置信度就是在地理90分的样本中,历史90分的人的占比。

接下来是一个利用计算支持度和置信度实现规则判断的一个例子(来自书籍《Python数据挖掘入门与实践》):商品推荐,任务目标,发现超市顾客对于商品购买的连带情况,找出更愿意一起购买的货物,然后重新布置货架。为了简化代码,方便讲解,我们只考虑一次购买两种商品的情况。例如,人们去超市既买了 面包,又买了牛奶。作为数据挖据入门性质的例子,我们希望得到下面这样的规则:如果一个人买了商品X,那么他很有可能购买商品Y。

数据的矩阵话计算需要库:NumPy,NumPy是Python中处理二位数据最常用的依赖方法,后边还有更多的使用。可以吧NumPy理解为一个矩阵控制器的对象,导入之后就直接创建了这个manager的Object

import numpy as np 
dataset_filename = "affinity_dataset.txt" 
X = np.loadtxt(dataset_filename) 

这样就得到了相关性分析数据库的数组实体。(数组来自随书材料,是[N:5]的二维数组,数据为0或者1,每行表示每个顾客当次购物是否购买5类产品)。因此我们挖掘目标就是,找到支持度性和置信度最高的顾客愿意一起购买的物品的规则。

我们可以通过统计每个事件发生的频率作为计算的基础,比如:所有购买苹果的顾客的数量:

因此对于某个样本的支持度计算即为:

可以通过循环一次性计算所有的规则的发生次数和应验次数:

发生次数记为Occurance,应验记为Valid,为了方便统计,不应验记为invalid:

from collections import defaultdictvalid_rules  = defaultdict(int)
invalid_rules = defaultdict(int)
num_occurances = defaultdict(int) for sample in X:for premise in range(4):if sample[premise] == 0:continueelse:num_occurances[premise] += 1for conclusion in range(4):if premise == conclusion:continueelse:if sample[conclusion] == 1:valid_rules[(premise, conclusion)] += 1else: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]

这里的原理就是:遍历X中的每一个样本,然后针对每个样本再做2层遍历,把所有发生的可能性找一遍,记录每个场景发生的次数(支持度)以及应验的次数(即购买了A的样本中购买B的数量,置信度)

接下来构建打印函数从数据中获取结果:

from operator import itemgetter #类似迭代器的东西
features = ["bread", "milk", "cheese", "apples", "bananas"] #商品字典#规则排序
sorted_support = sorted(support.items(), key=itemgetter(1), reverse=True)
sorted_confidence = sorted(confidence.items(), key = itemgetter(1), reverse = True)#打印规则表的规则(通过依赖的商品id)
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("--CONCLUSION: {0:.3f}".format(confidence[(premise, conclusion)]))#打印前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)#打印前5条置信度
for index in range(5):print("Rule #{0}".format(index + 1))(premise, conclusion) = sorted_confidence[index][0]print_rule(premise, conclusion, support, confidence, features)

得到的结果如下:

这篇关于数据挖掘系列笔记(1)——亲和性分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/317730

相关文章

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

SWAP作物生长模型安装教程、数据制备、敏感性分析、气候变化影响、R模型敏感性分析与贝叶斯优化、Fortran源代码分析、气候数据降尺度与变化影响分析

查看原文>>>全流程SWAP农业模型数据制备、敏感性分析及气候变化影响实践技术应用 SWAP模型是由荷兰瓦赫宁根大学开发的先进农作物模型,它综合考虑了土壤-水分-大气以及植被间的相互作用;是一种描述作物生长过程的一种机理性作物生长模型。它不但运用Richard方程,使其能够精确的模拟土壤中水分的运动,而且耦合了WOFOST作物模型使作物的生长描述更为科学。 本文让更多的科研人员和农业工作者

MOLE 2.5 分析分子通道和孔隙

软件介绍 生物大分子通道和孔隙在生物学中发挥着重要作用,例如在分子识别和酶底物特异性方面。 我们介绍了一种名为 MOLE 2.5 的高级软件工具,该工具旨在分析分子通道和孔隙。 与其他可用软件工具的基准测试表明,MOLE 2.5 相比更快、更强大、功能更丰富。作为一项新功能,MOLE 2.5 可以估算已识别通道的物理化学性质。 软件下载 https://pan.quark.cn/s/57

衡石分析平台使用手册-单机安装及启动

单机安装及启动​ 本文讲述如何在单机环境下进行 HENGSHI SENSE 安装的操作过程。 在安装前请确认网络环境,如果是隔离环境,无法连接互联网时,请先按照 离线环境安装依赖的指导进行依赖包的安装,然后按照本文的指导继续操作。如果网络环境可以连接互联网,请直接按照本文的指导进行安装。 准备工作​ 请参考安装环境文档准备安装环境。 配置用户与安装目录。 在操作前请检查您是否有 sud

flume系列之:查看flume系统日志、查看统计flume日志类型、查看flume日志

遍历指定目录下多个文件查找指定内容 服务器系统日志会记录flume相关日志 cat /var/log/messages |grep -i oom 查找系统日志中关于flume的指定日志 import osdef search_string_in_files(directory, search_string):count = 0