0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

什么是FM模型对用户分类

汽车电子技术 来源:Python数据分析之旅 作者:cauwfq 2023-02-24 16:11 次阅读

poYBAGP4cGyAV1bzAAD_Mqtq6-8569.png

一.项目背景

    新零售时代背景下,商家要提升顾客的价值,让20%的顾客贡献80%的业绩(二八定律),这就是超级用户思维。超级用户,是指对品
    牌认可、购买频次多、购买金额大且能给商家反馈意见、并能把产品推荐别人购买,对商家具有较高忠诚度、与商家建立起强关系的用户。
该项目寻找的是准超级用户(FM模型,也即购买频次多和购买金额大的客户),为将来转化为超级用户打好基础。

二.理论基础

1.购买频次筛选标准
    通过分组法,按买家账号进行分组,确定每个买家的购买频次。然后按购买频次进行等距分组,统计每个频次区间内买家数量,找出人数差最大的两个相邻频次区间并把这两个相邻区间的中间值作为购买频次的筛选标准。
比如这两个相邻频次区间是[3, 7), [7, 10), 选择7作为购买频次筛选标准。>=7的购买频次被认定为高购买频次。该方法的思想是寻找第一个异常点,特别适合随着频次区间数值上的增加,人数递减的情况,比如这样的人数分布:
{[1, 3):1000, [3, 5):550, [5, 7):230, [7, 9):96, [9, 11):22, [11, 13):6}
2.购买金额筛选标准
    通过箱线图法,将购买金额排序,然后进行四分位,得到三个分位数:Q1,Q2,Q3。接着按下面公式计算购买金额筛选标准:
V(购买金额筛选标准)=Q3+IQR_coefficient*IQR,其中IQR=Q3-Q1,IQR_coefficient的值可以自定义,一般选为1.5或3。
>=V的购买金额为高购买金额

三.实现步骤

1.获取数据

import pandas as pd
import numpy as np

#获取数据
def get_data(file_path):
    #读取数据
    df=pd.read_excel(file_path,index=0)
    #筛选数据
    data=df[['买家账号','已付金额']]
    #返回数据
    return data
 
#获取数据
data=get_data('./data.xlsx')
#查看数据
data.head()

poYBAGP4cKOAYnaZAABukTOsBGw896.png
2.处理数据

#处理数据
def process_data(df):
    #判断是否有重复值
    if df.duplicated().sum()==0:
        print('没有重复值')
    else:
        #计算重复数据数量
        len_dup=len(df[df.duplicated()==True])
        print(f'重复数据有{len_dup}条')
        #删除重复值
        df.drop_duplicates(inplace=True)
    #判断是否有缺失值
    if df.isnull().any().sum()==0:
        print('没有缺失值')
    else:
        #计算缺失数据数量
        len_null=len(df[df.isnull().T.any()])
        print(f'缺失数据有{len_null}条')
        #删除数据
        df.dropna(inplace=True)
    #返回数据
    return df
#处理数据
data=process_data(data)
#查看数据
data.head()

poYBAGP4cNGAWXmSAACdGcqvEDU671.png
3.按照分组标准对用户分类

#获取准超级用户
def before_superCustomer(data,coeff,bin_num):
    #统计客户购买次数
    df1=data['买家账号'].value_counts().reset_index().rename(columns={'index':'买家账号','买家账号':'购买频次'})
    #统计客户购买金额
    df2=data.groupby(['买家账号'])['已付金额'].sum()
    #通过买家账号连接数据,
    df=pd.merge(df1,df2,on='买家账号')
    #筛选所需数据
    df_res=df[['买家账号','购买频次','已付金额']]
    #对购买频词进行切分
    cut = pd.cut(df['购买频次'], bins=bin_num)
    #统计购买频词
    top = pd.value_counts(cut)
    #获取高度差值最大的两个分组区间,前一个分组区间的右区间值用于高购买频次客户的评判标准
    top_index = top.diff().abs().values.argmax()
    #获取四分之三分位数
    Q3 = df_res.describe()['已付金额'][6]
    #获取四分之一分位数
    Q1 = df_res.describe()['已付金额'][4]
    #计算IQR
    IQR = Q3-Q1
    #获取准超级用户购买金额最小值
    min_value = Q3 + 1.5* IQR
    # 根据高购买金额和高购买频次用户标准过滤用户
    df_res=df_res[(df_res['购买频次'] >top.index[top_index].right) & (df_res['已付金额'] >min_value)]
    #按照已付金额进行降序排序
    df_res.sort_values('已付金额',ascending=False,inplace=True)
    #返回数据
    return df_res

#对用户进行分类
df_res=before_superCustomer(data,3,16)
#查看数据
df_res.head()

pYYBAGP4cOiAIWsNAAB8HMTDjrI422.png
4.对Top10用户进行可视化

import pyecharts.options as opts
from pyecharts.charts import Bar

#设置颜色
colors = ["#5793f3", "#d14a61"]
#x轴数据买家账号
x_data = df_res.iloc[:10]['买家账号'].tolist()
#设置图例
legend_list = ["已付金额", "购买频次"]
#y轴已付金额
customer_buy =df_res.iloc[:10]["已付金额"].round(2).tolist()
#y轴购买频次
customer_count=df_res.iloc[:10]["购买频次"].tolist()

#初始化
bar = (
    Bar(init_opts=opts.InitOpts(width="1000px", height="600px"))
    .add_xaxis(xaxis_data=x_data)
    .add_yaxis(
        series_name="已付金额",
        yaxis_data=customer_buy,
        yaxis_index=0,
        color=colors[1],
    )
    
    .add_yaxis(
        series_name="购买频次",
        yaxis_data=customer_count, 
        yaxis_index=1, 
        color=colors[0]
    )
    
   .extend_axis(
        yaxis=opts.AxisOpts(
            name="购买频次",
            type_="value",
            position="right",
            axisline_opts=opts.AxisLineOpts(
                linestyle_opts=opts.LineStyleOpts(color=colors[0])
            ),
            axislabel_opts=opts.LabelOpts(formatter="{value} 次"),
        )
    )
    .extend_axis(
        yaxis=opts.AxisOpts(
            name="已付金额",
            type_="value",
            position="left",
            axisline_opts=opts.AxisLineOpts(
                linestyle_opts=opts.LineStyleOpts(color=colors[1])
            ),
            axislabel_opts=opts.LabelOpts(),
        )
    )
    .set_global_opts(
        xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-15)),
    )
    
)

#加载显示图形
bar.render_notebook()

结论:应加强和这些客户沟通,尽可能提供个性化服务,让它们发展为我们超级用户

pYYBAGP4cQaAeLfIAABPtl5EVPY850.png
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FM
    FM
    +关注

    关注

    1

    文章

    177

    浏览量

    58752
  • 模型
    +关注

    关注

    1

    文章

    2707

    浏览量

    47710
收藏 人收藏

    评论

    相关推荐

    基于隐马尔可夫模型的音频自动分类

    音频的自动分类,尤其是语音和音乐的分类,是提取音频结构和内容语义的重要手段之一,它在基于内容的音频检索、视频的检索和摘要以及语音文档检索等领域都有重大的应用价值.由于隐马尔可夫模型能够很好地刻画音频
    发表于 03-06 23:50

    系统模型及其分类

    系统模型及其分类[hide][/hide]
    发表于 10-03 22:59

    系统模型及其分类.zip

    系统模型及其分类.zip
    发表于 10-04 11:23

    怎么设计FM天线?

    的天线,例如有线耳机,从而限制了许多没带有线耳机的用户。另外,随着无线使用模型在便携式设备中的不断普及,更多用户可以从使用其他类型FM天线的无线FM
    发表于 08-13 06:02

    Edge Impulse的分类模型浅析

    Edge Impulse是一个应用于嵌入式领域的在线的机器学习网站,不仅为用户提供了一些现成的神经网络模型以供训练,还能直接将训练好的模型转换成能在单片机MCU上运行的代码,使用方便,容易上手。本文
    发表于 12-20 06:51

    FM8302 API用户手册

    用户手册包含了 FM8302 API 的文件列表,简单描述了 FM8302 DEMO 的使用流程。目的是为了开发人员能够快速掌握 FM8302 API 的使用方法。
    发表于 09-14 08:47

    系统模型及其分类

    系统模型及其分类系统:具有特定功能的总体,可以看作信号的变换 器、处理器。系统模型:系统物理特性的数学抽象,一般也称为数学模型。 电路的微分方程为:该微
    发表于 09-08 21:00 10次下载

    DNA序列的分类模型

    DNA序列的分类模型本文提出了DNA序列分类的三种模型,基一,基于A,G,T,C四种碱基出现的频率,其二利用了同一碱基在序列中的间隔,这一信息是单纯考虑频率所不能包含的.
    发表于 09-16 11:52 17次下载

    基于PLSA主题模型的多标记文本分类_蒋铭初

    基于PLSA主题模型的多标记文本分类_蒋铭初
    发表于 01-08 10:40 0次下载

    超像素词包模型与SVM分类的图像标注_於敏

    超像素词包模型与SVM分类的图像标注_於敏
    发表于 03-19 19:03 1次下载

    系统模型及其分类

    系统模型及其分类
    发表于 12-06 14:52 0次下载

    基于非参数方法的分类模型检验

    本文主要研究了基于非参数方法的分类模型交叉验证结果比较,主要是对实例通过非参数的方法进行模型比较的假设检验,检验两分类模型是否存在显著差异。
    发表于 12-08 15:28 1次下载

    Hadoop云平台用户动态访问控制模型

    轮廓。然后利用前向轮廓建立全局K模型,对后续行为序列进行分类并对分类结果进行评估。随后将评估结果与改进Hadoop访问控制机制结合,使云平台用户的访问权限随自身行为动
    发表于 01-10 16:37 0次下载
    Hadoop云平台<b class='flag-5'>用户</b>动态访问控制<b class='flag-5'>模型</b>

    依据待分类实例显著局部特征的懒惰式分类模型

    shapelets集合,一般所获得的shapelets只在平均意义上具有某种鉴别性;与此同时,普通模型往往忽略了待分类实例所具有的局部特征。为此,我们提出了一种依据待分类实例显著局部特征的懒惰式
    发表于 03-31 10:50 6次下载
    依据待<b class='flag-5'>分类</b>实例显著局部特征的懒惰式<b class='flag-5'>分类</b><b class='flag-5'>模型</b>

    基于LSTM的表示学习-文本分类模型

    的关键。为了获得妤的文本表示,提高文本分类性能,构建了基于LSTM的表示学习-文本分类模型,其中表示学习模型利用语言模型为文本
    发表于 06-15 16:17 18次下载