基于聚类的精准营销项目

总体思路

基于聚类的精准推荐总体

  • 先基于聚类:
    • 把用户分群,对每一个客户都标记上标签值。
  • 生成推荐规则:
    • 在用户没买过的商品中,同类客户总购买次数(平均购买次数)最多的商品,就是这类客户最喜欢的商品

数据清洗

  • 优先删除:
    • 缺失率90%以上
    • 整个字段只有1个值
    • 整个字段有效信息几乎没有
  • 需要转码:
    • 哑变量编码

数据整合

  • 目的是生成一张用户所有购买行为的信息表
    • 三表进行连接合并
# 导入数据包
import numpy as np
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.preprocessing import MinMaxScaler
from sklearn.cluster import KMeans
plt.style.use('seaborn')
plt.rcParams['font.sans-serif']=['Simhei']  #显示中文,解决图中无法显示中文的问题
plt.rcParams['axes.unicode_minus']=False    #设置显示中文后,负号显示受影响。解决坐标轴上乱码问题 

数据清洗

订单表清洗

数据初步探索

order = pd.read_csv(r"...\order.csv",index_col=0)
order.head(1)
订单编号 买家会员名 买家应付货款 买家应付邮费 买家支付积分 总金额 返点积分 买家实际支付金额 买家实际支付积分 订单状态 ... 是否代付 定金排名 修改后的sku 修改后的收货地址 异常信息 天猫卡券抵扣 集分宝抵扣 是否是O2O交易 退款金额 预约门店
0 21407300627014900 1425 58.51 0.0 0 58.51 0 58.51 0 交易成功 ... NaN NaN NaN NaN NaN NaN NaN 0.0 NaN

1 rows × 45 columns

order.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 3989 entries, 0 to 3988
Data columns (total 45 columns):
 #   Column    Non-Null Count  Dtype  
---  ------    --------------  -----  
 0   订单编号      3989 non-null   int64  
 1   买家会员名     3989 non-null   int64  
 2   买家应付货款    3989 non-null   float64
 3   买家应付邮费    3989 non-null   float64
 4   买家支付积分    3989 non-null   int64  
 5   总金额       3989 non-null   float64
 6   返点积分      3989 non-null   int64  
 7   买家实际支付金额  3989 non-null   float64
 8   买家实际支付积分  3989 non-null   int64  
 9   订单状态      3989 non-null   object 
 10  买家留言      384 non-null    object 
 11  收货人姓名     3989 non-null   int64  
 12  收货地址      3989 non-null   object 
 13  运送方式      3989 non-null   object 
 14  联系电话      142 non-null    object 
 15  联系手机      3986 non-null   object 
 16  订单创建时间    3989 non-null   object 
 17  订单付款时间    3989 non-null   object 
 18  宝贝标题      3989 non-null   object 
 19  宝贝种类      3989 non-null   int64  
 20  物流单号      3988 non-null   object 
 21  物流公司      3988 non-null   object 
 22  订单备注      460 non-null    object 
 23  宝贝总数量     3989 non-null   int64  
 24  店铺Id      3989 non-null   int64  
 25  店铺名称      3989 non-null   int64  
 26  订单关闭原因    3989 non-null   object 
 27  卖家服务费     3989 non-null   int64  
 28  买家服务费     3989 non-null   object 
 29  发票抬头      0 non-null      float64
 30  是否手机订单    3728 non-null   object 
 31  分阶段订单信息   0 non-null      float64
 32  特权订金订单id  0 non-null      float64
 33  是否上传合同照片  3989 non-null   object 
 34  是否上传小票    3989 non-null   object 
 35  是否代付      3989 non-null   object 
 36  定金排名      0 non-null      float64
 37  修改后的sku   0 non-null      float64
 38  修改后的收货地址  61 non-null     object 
 39  异常信息      0 non-null      float64
 40  天猫卡券抵扣    0 non-null      float64
 41  集分宝抵扣     12 non-null     float64
 42  是否是O2O交易  0 non-null      float64
 43  退款金额      3989 non-null   float64
 44  预约门店      0 non-null      float64
dtypes: float64(15), int64(11), object(19)
memory usage: 1.6+ MB

删除无用信息

# 删除空值项大于20%字段:
order=order.dropna(axis=1,thresh=order.shape[0]*0.2)

#删除整个字段只有一个信息的值:
for  i in order.columns:
    if order[i].nunique()==1:
        del order[i]  
        
# 手动选择与用户购买信息有关字段
order=order[["订单编号","买家会员名","买家实际支付金额","收货地址","宝贝标题 ","宝贝种类","宝贝总数量","退款金额"]]

数据编码

#退款金额0-1独热编码
order.退款金额=np.where(order.退款金额>0,1,0)

#收货地址独热编码
address=order.收货地址.str[:3].str.strip()
address=pd.get_dummies(address,prefix="地址")


#宝贝种类独热编码
kinds=pd.get_dummies(order.宝贝种类,prefix="宝贝种类")

#删除原表中已经编码完成的字段,将编码完成后字段加入订单表
order=order.drop(["收货地址","宝贝种类"],axis=1)
order=pd.concat([order,address,kinds],axis=1)
order.head(1)
订单编号 买家会员名 买家实际支付金额 宝贝标题 宝贝总数量 退款金额 地址_上海 地址_云南省 地址_内蒙古 地址_北京 ... 宝贝种类_39 宝贝种类_40 宝贝种类_41 宝贝种类_43 宝贝种类_45<
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WiFi下的365

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值