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

文章目录

1 预备项目

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

python 复制代码
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()
python 复制代码
# 数据理解
print(df_Retails.shape)

df_Retails.columns

df_Retails.describe()


python 复制代码
#查看国家一列的取值
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)
python 复制代码
python 复制代码
#空格处理
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
python 复制代码
#将数据改为每一行一条购物记录
#考虑到内存限制只计算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()
python 复制代码
#查看InvoiceNo一列中是否有重复的值
df_Retails.duplicated(subset=["InvoiceNo"]).any()

def encode_units(x):
    if x <= 0:
        return 0
    if x >= 1:
        return 1

df_ShoppingCarts_sets = df_ShoppingCarts.map(encode_units)

df_ShoppingCarts_sets.head()

1 产生频繁集

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

2 产生关联规则

python 复制代码
# 生成关联规则,使用提升度(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()
python 复制代码
# 筛选关联规则 筛选提升度不小于 2 置信度不小于 0.8 的关联规则
df_A= df_AssociationRules[(df_AssociationRules['lift'] >= 2) &
                          (df_AssociationRules['confidence'] >= 0.8) ]
df_A
python 复制代码
# 可视化结果
import seaborn as sns
import matplotlib.pyplot as plt

sns.scatterplot(x = "support"
                , y = "confidence"
                , size = "lift"
                , data = df_AssociationRules)
plt.show()
相关推荐
Triv202529 分钟前
ECU开发工具链1.10版:更强大的测量、校准与数据分析体验.
microsoft·数据分析·汽车电子开发·校准流程自动化·高速信号采集·测试台架集成·实时数据监控
好开心啊没烦恼36 分钟前
Python 数据分析:numpy,抽提,整数数组索引与基本索引扩展(元组传参)。听故事学知识点怎么这么容易?
开发语言·人工智能·python·数据挖掘·数据分析·numpy·pandas
会的全对٩(ˊᗜˋ*)و3 小时前
【数据挖掘】数据挖掘综合案例—银行精准营销
人工智能·经验分享·python·数据挖掘
kngines3 小时前
【字节跳动】数据挖掘面试题0007:Kmeans原理,何时停止迭代
人工智能·数据挖掘·kmeans
陈敬雷-充电了么-CEO兼CTO5 小时前
推荐算法系统系列>推荐数据仓库集市的ETL数据处理
大数据·数据库·数据仓库·数据挖掘·数据分析·etl·推荐算法
麻雀无能为力6 小时前
CAU数据挖掘 支持向量机
人工智能·支持向量机·数据挖掘·中国农业大学计算机
马特说7 小时前
React金融数据分析应用性能优化实战:借助AI辅助解决18万数据量栈溢出Bug
react.js·金融·数据分析
isNotNullX10 小时前
什么是数据分析?常见方法全解析
大数据·数据库·数据仓库·人工智能·数据分析
DataGear1 天前
如何在DataGear 5.4.1 中快速制作SQL服务端分页的数据表格看板
javascript·数据库·sql·信息可视化·数据分析·echarts·数据可视化
王小王-1231 天前
基于Hadoop的京东厨具商品数据分析及商品价格预测系统的设计与实现
hadoop·数据分析·京东厨具·厨具分析·商品分析