医学数据分析实训 项目三 关联规则分析预备项目---购物车分析

devtools/2024/9/24 1:33:21/

文章目录

  • 1 预备项目
    • 关联规则分析实践———购物车分析
      • 1 产生频繁集
      • 2 产生关联规则

1 预备项目

关联规则分析实践———购物车分析

import warnings
import numpy as np
import pandas as pd
from mlxtend.frequent_patterns import apriori
from mlxtend.frequent_patterns import association_rules
warnings.filterwarnings("ignore", category=DeprecationWarning)
# 读入数据
df_Retails = pd.read_excel('input/Online Retail.xlsx')
df_Retails.head()
# 数据理解
print(df_Retails.shape)df_Retails.columnsdf_Retails.describe()

在这里插入图片描述
在这里插入图片描述

#查看国家一列的取值
df_Retails.Country.unique()
#各国家的购物数量
df_Retails["Country"].value_counts()
#查看InvoiceNo一列中是否有重复的值
df_Retails.duplicated(subset=["InvoiceNo"]).any()
#是否有缺失值
df_Retails.isna().sum()
df_Retails['InvoiceNo'].isnull().sum(axis = 0)

#空格处理
df_Retails['Description'] = df_Retails['Description'].str.strip()
# Description: Product (item) name. Nominal.
#查看是否有缺失值
df_Retails['Description'].isna().sum()
#缺失值处理
df_Retails.dropna(axis=0, subset=['Description'], inplace=True)
print(df_Retails.shape)
#查看是否有缺失值
print(df_Retails['Description'].isna().sum())
#删除含有C字母的已取消订单
df_Retails['InvoiceNo'] = df_Retails['InvoiceNo'].astype('str')df_Retails = df_Retails[~df_Retails['InvoiceNo'].str.contains('C')]
df_Retails.shape
#将数据改为每一行一条购物记录
#考虑到内存限制只计算Germany,全部计算则计算量太大
df_ShoppingCarts = (df_Retails[df_Retails['Country'] =="Germany"].groupby(['InvoiceNo', 'Description'])['Quantity'].sum().unstack().reset_index().fillna(0).set_index('InvoiceNo'))print(df_ShoppingCarts.shape)df_ShoppingCarts.head()
#查看InvoiceNo一列中是否有重复的值
df_Retails.duplicated(subset=["InvoiceNo"]).any()def encode_units(x):if x <= 0:return 0if x >= 1:return 1df_ShoppingCarts_sets = df_ShoppingCarts.map(encode_units)df_ShoppingCarts_sets.head()

1 产生频繁集

# 产生频繁集 最小支持度为0.07, 在输出中使用原始列名
df_Frequent_Itemsets = apriori(df_ShoppingCarts_sets, min_support=0.07, use_colnames=True)
df_Frequent_Itemsets

在这里插入图片描述

2 产生关联规则


# 生成关联规则,使用提升度(lift)作为度量 置提升度的最小阈值为 1,表示无正相关关系的规则也会被计算
df_AssociationRules = association_rules(df_Frequent_Itemsets, metric="lift", min_threshold=1)
#输出结果的解读:https://rasbt.github.io/mlxtend/user_guide/frequent_patterns/association_rules/
df_AssociationRules.head()

在这里插入图片描述

# 筛选关联规则 筛选提升度不小于 2 置信度不小于 0.8 的关联规则
df_A= df_AssociationRules[(df_AssociationRules['lift'] >= 2) &(df_AssociationRules['confidence'] >= 0.8) ]
df_A

在这里插入图片描述

# 可视化结果
import seaborn as sns
import matplotlib.pyplot as pltsns.scatterplot(x = "support", y = "confidence", size = "lift", data = df_AssociationRules)
plt.show()

在这里插入图片描述


http://www.ppmy.cn/devtools/116256.html

相关文章

【Git】初识Git

本篇文章的环境是在 Ubuntu/Linux 环境下编写的 文章目录 版本控制器Git 基本操作安装 Git创建 Git 本地仓库配置 Git认识工作区、暂存区、版本库添加文件修改文件版本回退撤销修改删除文件 版本控制器 在日常工作和学习中&#xff0c;老板/老师要求我们修改文档&#xff0c;…

SpringBoot 消息队列RabbitMQ 消息确认机制确保消息发送成功和失败 生产者确认

介绍 有Publisher Confirm(成功)和Publisher Return(失败)两种确认机制。开启确机制认后&#xff0c;在MQ成功收到消息后会返回消息给生产者。 消息投递到了MQ &#xff0c;但是路由失败。此时会通过PublisherReturn返回路由异常原因&#xff0c;然后返回ACK&#xff0c;告知…

[杂谈-黑神话:悟空] 中国3A游戏的崛起之路:挑战与机遇并存

[杂谈-黑神话:悟空] 中国3A游戏的崛起之路&#xff1a;挑战与机遇并存 《黑神话&#xff1a;悟空》的出现&#xff0c;让我们看到了中国3A游戏的希望和未来。对于中国游戏产业的从业者和爱好者来说&#xff0c;这是一个值得关注和期待的领域。 在游戏产业蓬勃发展的今天&#…

【d44】【Java】【力扣】160.相交链表

思路 先把a链表都放进 一个hashSet集合 再遍历B链表&#xff0c;逐个放进hashSet集合 如果无法放进&#xff0c;说明这个节点就是相交节点 代码 import java.util.HashSet;public class Main {public static void main(String[] args) {}public class ListNode {int val;Li…

linux-安全管理-防火墙与网络安全

Linux 安全管理&#xff1a;防火墙与网络安全 一、概述 在 Linux 系统中&#xff0c;防火墙与网络安全是保护系统免受未经授权访问、网络攻击和数据泄露的重要措施。防火墙通过控制进出网络的流量&#xff0c;阻止不必要的连接&#xff0c;而网络安全策略则通过配置访问权限、…

快速搭建Kubernetes集群

快速搭建Kubernetes集群 1 MacOS 1.1 下载 从 docker 下载 docker-desktop (opens new window)&#xff0c;并完成安装 1.2 启用 k8s 集群 启动 docker-desktop&#xff0c;打开preference 面板 切换到 Kubernetes 标签页&#xff0c;并勾选启动 Enable Kubernetes&#xff0c;…

操作系统笔记三

进程 把一个静态程序通过OS在内存中让cpu执行起来的动态执行过程叫进程 写代码都是用户态&#xff0c;而进程在执行过程中需要完成特定的功能&#xff0c;这些功能呢只有操作系统能提供&#xff0c;比如说读写文件&#xff0c;读写文件的过程是与硬盘打交道&#xff0c;这个过程…

SpringBoot - 基于 Java的超市进销存系统

专业团队&#xff0c;咨询就送开题报告&#xff0c;欢迎大家私信&#xff0c;留言&#xff0c;联系方式在文章底部 摘 要 随着信息化时代的到来&#xff0c;管理系统都趋向于智能化、系统化&#xff0c;超市进销存系统也不例外&#xff0c;但目前国内仍都使用人工管理&#xf…