做电商运营的你是不是总在愁:怎么给用户精准推送商品?为啥促销活动效果时好时坏?其实啊,核心问题是没把用户分清楚,给爱买低价商品的用户推高端货,自然没人理。很多朋友问我,零基础能不能用 sklearn 给用户分类?当然能!今天兔子哥就带大家用 sklearn 做电商用户分类,从数据准备到模型落地全流程实操,代码都是现成的,新手跟着敲就行,做完就能用在实际运营里,之前有学员用这个方法做活动,转化率直接提升了 30% 呢。
先给大家看个表格,电商用户一般分这几类,咱们今天的目标就是用模型自动把用户归到对应的类别里:
| 用户类型 | 特点 | 运营策略 |
|---|---|---|
| 高价值用户 | 消费频率高、客单价高 | 专属福利、会员服务 |
| 潜力用户 | 消费次数少但客单价高 | 复购券、新品推荐 |
| 低频大众用户 | 消费频率低、客单价中等 | 节日促销、满减活动 |
| 流失风险用户 | 长期未消费、曾高频购买 | 召回券、专属优惠 |
第一步:准备电商用户数据,这些字段不能少
做用户分类,数据得选对。咱们用的是某电商平台的脱敏数据,包含这几个关键字段,新手照着收集自己的数据就行:
- 用户 ID:区分不同用户
- 近 30 天消费次数:判断消费频率
- 平均客单价:每次消费的金额均值
- 近 90 天最大消费金额:看用户购买力上限
- 最后一次消费距今天数:判断是否流失
数据长啥样?用 pandas 读进来看看:
python
import pandas as pddata = pd.read_csv('user_data.csv')print(data.head()) # 打印前5行数据这里要注意,电商数据经常有缺失值,比如有些用户没填性别,但咱们今天用的字段都是交易数据,一般不会缺,要是有缺失就用均值填充,代码是
data['消费次数'] = data['消费次数'].fillna(data['消费次数'].mean())。第二步:特征工程,给数据 “加料” 效果更好
光用原始数据不够,得造点对分类有用的特征。电商用户分类必做这三个特征,都是老运营总结的经验:
1. 消费频率特征:近 30 天消费次数除以 30,算日均消费次数
python
data['日均消费次数'] = data['近30天消费次数'] / 302. 消费能力特征:平均客单价乘以消费频率,反映用户总贡献
python
data['消费贡献度'] = data['平均客单价'] * data['近30天消费次数']3. 活跃度特征:用最后一次消费距今天数的倒数,数值越大越活跃
python
data['活跃度'] = 1 / (data['最后一次消费距今天数'] + 1) # 加1避免除以0有朋友问:“特征是不是越多越好?” 不是的,之前有学员加了 20 多个特征,结果模型反而不准,因为很多特征没用还干扰模型。就用这几个核心特征足够了,简单才稳定。
第三步:选对模型,聚类算法最适合用户分类
用户分类属于 “无监督学习”,咱们用 sklearn 的 K-means 聚类算法,它能自动把相似用户分到一组。
先确定分几类,电商用户一般分 4 类最合适,代码这么写:
python
from sklearn.cluster import KMeansfrom sklearn.preprocessing import StandardScaler# 提取特征数据X = data[['日均消费次数', '消费贡献度', '活跃度']]# 数据归一化,避免某特征数值大影响结果scaler = StandardScaler()X_scaled = scaler.fit_transform(X)# 训练K-means模型,分4类kmeans = KMeans(n_clusters=4, random_state=42)data['用户类型'] = kmeans.fit_predict(X_scaled)这里的 random_state=42 是固定随机数,保证每次运行结果一样,新手别漏掉这个参数,不然每次分的类别都不一样,没法分析。
第四步:给用户贴标签,看看分类结果准不准
模型分完类后,每个用户都有个数字标签(0-3),但不知道对应哪种用户类型,得人工分析贴标签。
先看各类用户的特征均值:
python
print(data.groupby('用户类型')[['日均消费次数', '消费贡献度', '活跃度']].mean())根据结果分析:
- 类型 0:日均消费次数高、贡献度高、活跃度高 → 高价值用户
- 类型 1:日均消费次数低、贡献度高、活跃度中 → 潜力用户
- 类型 2:日均消费次数中、贡献度中、活跃度中 → 低频大众用户
- 类型 3:日均消费次数低、贡献度低、活跃度低 → 流失风险用户
然后给用户贴标签:
python
label_map = {0: '高价值用户', 1: '潜力用户', 2: '低频大众用户', 3: '流失风险用户'}data['用户类型名称'] = data['用户类型'].map(label_map)有学员分享,他用这个方法分类后,给高价值用户发了高端新品券,核销率比之前高了一倍,这就是精准分类的效果。
常见问题解答:新手常踩的坑在这里
Q:“分出来的类别总是不准,有时候高价值用户被分到流失类,咋回事?”
A:多半是没做数据归一化!消费贡献度数值可能很大,没归一化的话,模型会主要按这个特征分,忽略其他特征。一定要用 StandardScaler 处理数据,这步不能省。
Q:“想试试分 5 类行不行?怎么确定最佳分类数?”
A:可以用肘部法,计算不同聚类数的误差,找误差下降变缓的点。代码里把 n_clusters 改成 5 试试,但电商用户一般 4 类最实用,分太多反而不好运营。
Q:“怎么把分类结果用到实际工作中?”
A:导出 CSV 给运营团队,或者直接在代码里筛选用户 ID,比如提取高价值用户 ID:
python
high_value_users = data[data['用户类型名称'] == '高价值用户']['用户ID']high_value_users.to_csv('高价值用户ID.csv', index=False)运营拿着这个列表做精准营销,效果肯定比群发好。
兔子哥觉得,电商用户分类不是一次性的事,最好每周跑一次模型,因为用户行为会变。之前有学员每月更新一次分类,发现有批潜力用户变成了高价值用户,及时调整了运营策略,留住了这些用户。
其实用 sklearn 做用户分类不难,关键是选对特征、做好数据预处理。别觉得机器学习离自己很远,像这种聚类任务,几行代码就能搞定,还能实实在在帮到工作。新手刚开始别追求复杂模型,把 K-means 用好就够用了,等熟练了再学更高级的算法。
赶紧找自己公司的用户数据试试,做完记得对比下分类前后的运营效果,你会发现精准分类能省不少推广费用,还能提高用户满意度,这就是数据驱动的魅力!
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
还木有评论哦,快来抢沙发吧~