利用Python对电商用户购买行为进行预测!这都能预测到?

本文介绍了一个电商用户购买行为预测模型的构建过程,通过分析用户历史交易数据,利用LightGBM实现商品推荐,帮助商家提高销售效率。

任务:依据电子商务平平台上真实的用户行为记录,利用机器学习相关技术,建立稳健的电商用户购买行为预测模型,预测用户下一个可能会购买的商品。

数据简介 数据整理自一家中等化妆品在线商店公布的网上公开数据集,为该化妆品商店真实的用户交易信息,数据集中每一行表示一个事件,所有的事件都与商品和用户相关,并且用户的点击行为之间是有时间顺序的。数据集中包含了商品和用户的多个属性,例如商品编号、商品类别、用户编号、事件时间等。

PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取

python免费学习资料以及群交流解答点击即可加入

数据说明

 

 

 

 

 

主要思路

  1. 对用户id进行分组

  2. 统计类别、品牌、收藏、加购物车、下单等特征,赋予合理的权重

  3. 构建时间特征

  4. 使用lgb的多分类模型进行训练

主要代码:

注意:此版本代码lgb版本是2.0.3

import gc

import pandas as pd
from sklearn.preprocessing import LabelEncoder

paths = r'E:\项目文件\CCF\电商用户购买行为预测'
data = pd.read_csv(f'{paths}/train.csv')
submit_example = pd.read_csv(f'{paths}/submit_example.csv')
test = pd.read_csv(f'{paths}/test.csv')

data['user_id'] = data['user_id'].astype('int32')
data['product_id'] = data['product_id'].astype('int32')
data['category_id'] = data['category_id'].astype('int32')
lbe = LabelEncoder()
data['brand'].fillna('0', inplace=True)
data['brand'] = lbe.fit_transform(data['brand'])
data['brand'] = data['brand'].astype('int32')
# data['event_time'] = pd.to_datetime(data['event_time'], format='%Y-%m-%d %H:%M:%S')
data.fillna(0, inplace=True)
gc.collect()

train_X = data
test_data = test

# 构建特征
groups = train_X.groupby('user_id')
temp = groups.size().reset_index().rename(columns={0: 'u1'})
matrix = temp
temp = groups['product_id'].agg([('u2', 'nunique')]).reset_index()
matrix = matrix.merge(temp, on='user_id', how='left')
temp = groups['category_id'].agg([('u3', 'nunique')]).reset_index()
matrix = matrix.merge(temp, on='user_id', how='left')
temp = groups['brand'].agg([('u5', 'nunique')]).reset_index()
# TODO 根据用户购买行为去构建特征
# temp = groups['event_type'].value_counts().unstack().reset_index().rename(
#     columns={0: 'u7', 1: 'u8', 2: 'u9', 3: 'u10'})
matrix = matrix.merge(temp, on='user_id', how='left')

label_list = []
for name, group in groups:
    product_id = int(group.iloc[-1, 2])
    label_list.append([name, product_id])

train_data = matrix.merge(pd.DataFrame(label_list, columns=['user_id', 'label'], dtype=int), on='user_id', how='left')

# 构建特征
groups = test_data.groupby('user_id')
temp = groups.size().reset_index().rename(columns={0: 'u1'})
test_matrix = temp
temp = groups['product_id'].agg([('u2', 'nunique')]).reset_index()
matrix = test_matrix.merge(temp, on='user_id', how='left')
temp = groups['category_id'].agg([('u3', 'nunique')]).reset_index()
matrix = matrix.merge(temp, on='user_id', how='left')
temp = groups['brand'].agg([('u5', 'nunique')]).reset_index()
# TODO 根据用户购买行为去构建特征
# temp = groups['event_type'].value_counts().unstack().reset_index().rename(
#     columns={0: 'u7', 1: 'u8', 2: 'u9', 3: 'u10'})
test_data = matrix.merge(temp, on='user_id', how='left')

test_data = test_data.drop(['user_id'], axis=1)

train_X, train_y = train_data.drop(['label', 'user_id'], axis=1), train_data['label']
# train_X.to_csv('train_deal.csv', index=False)
# train_y.to_csv('train_y_deal.csv', index=False)
# test_data.to_csv('test_data.csv', index=False)

# 导入分析库
import lightgbm as lgb

model = lgb.LGBMClassifier(
    max_depth=5,
    n_estimators=10,
)

model.fit(
    train_X,
    train_y,
    eval_metric='auc',
    eval_set=[(train_X, train_y)],
    verbose=False,
    early_stopping_rounds=5
)

prob = model.predict(test_data)

import numpy as np

np.savetxt(paths + '\\prob1.csv', prob)
submit_example['product_id'] = pd.Series(prob[:, 0])
submit_example.to_csv(paths + r'\\lgb1.csv', index=False)

耍花招凑提交的方法,直接默认买最后一条记录,小心被封号

import pandas as pd

paths = r'E:\项目文件\CCF\电商用户购买行为预测'
submit_example = pd.read_csv(f'{paths}/submit_example.csv')
test = pd.read_csv(f'{paths}/test.csv')

# 构建特征
groups = test.groupby('user_id')
label_list = []
for name, group in groups:
    product_id = int(group.iloc[-1, 2])
    label_list.append([name, product_id])

submit_example = pd.DataFrame(label_list, columns=['user_id', 'product_id'])
submit_example.to_csv(paths + r'\\label_list.csv', index=False)

参考文献,思路都差不多,主要看你怎么构造特征了,加油吧少年

原文地址:电商用户购买行为预测-排名48-0.23_一个有趣的人-优快云博客

 

### 使用支持向量机(SVM)预测电商用户购买行为 #### 数据准备 为了使用支持向量机(SVM)进行电商用户购买行为预测,首先需要收集并预处理数据。考虑到网络上缺乏现成适用的数据集[^3],可以通过网络爬虫技术自行采集数据。这包括但不限于商品信息、用户评论以及购买记录等多维度的信息。 #### 特征工程 在应用SVM之前,需对原始数据执行特征提取与转换工作。依据用户的历史活动轨迹,如浏览路径、停留时间、点击次数等构建特征向量;同时考虑加入一些统计学指标作为补充特征,比如平均访问频率、最近一次登录距今天数等等。这些操作有助于提高模型对于潜在模式的学习能力。 #### 模型训练 一旦完成了上述准备工作,则可着手建立SVM分类器来进行最终的目标——即预测某位特定顾客是否会实施购买动作。以下是具体实现过程的一个简化版本: ```python from sklearn import svm from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler import numpy as np # 假设X为已经过适当编码后的输入样本矩阵,y为目标标签列(0/1表示未购/已购状态) scaler = StandardScaler() X_scaled = scaler.fit_transform(X) # 划分训练集和测试集 X_train, X_test, y_train, y_test = train_test_split( X_scaled, y, test_size=0.25, random_state=42) clf = svm.SVC(kernel='rbf', C=1, gamma='scale') clf.fit(X_train, y_train) accuracy = clf.score(X_test, y_test) print(f'Test Accuracy: {accuracy:.4f}') ``` 此段代码展示了如何利用`sklearn.svm.SVC()`函数快速搭建起一个基于径向基核(RBF kernel)的支持向量机,并对其进行简单的参数配置(`C`, `gamma`)以适应当前的任务场景。值得注意的是,在实际项目开发过程中往往还需要进一步调优超参设置来获得更好的泛化性能。 #### 结果评估 最后一步是对所得到的结果进行全面而细致地检验。除了计算准确度之外,还应该关注其他几个重要指标,例如召回率(recall),F1得分(F1-score)等,以便全面衡量算法的有效性及其局限所在。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值