基于用户行为数据的用户购买意向预测用户与商品的特征工程代码
时间: 2024-05-10 16:16:56 浏览: 159
以下是一个基于用户行为数据的用户购买意向预测的特征工程示例代码,包括对用户和商品的特征提取。
```python
import pandas as pd
import numpy as np
from sklearn.preprocessing import LabelEncoder
# 读取用户行为数据
user_behavior = pd.read_csv('user_behavior.csv')
# 用户行为数据包括以下字段:
# user_id: 用户ID
# item_id: 商品ID
# category_id: 商品类别ID
# behavior_type: 用户行为类型(1-浏览,2-加购物车,3-购买,4-收藏)
# time: 行为时间
# 用户特征提取
user_data = pd.DataFrame()
# 统计用户历史行为次数
user_data['behavior_count'] = user_behavior.groupby('user_id')['behavior_type'].count()
# 统计用户历史购买次数
user_data['buy_count'] = user_behavior[user_behavior['behavior_type'] == 3].groupby('user_id')['behavior_type'].count()
# 统计用户购买率
user_data['buy_rate'] = user_data['buy_count'] / user_data['behavior_count']
# 统计用户最近一次购买时间
user_data['last_buy_time'] = user_behavior[user_behavior['behavior_type'] == 3].groupby('user_id')['time'].max()
# 商品特征提取
item_data = pd.DataFrame()
# 统计商品历史被浏览次数
item_data['view_count'] = user_behavior[user_behavior['behavior_type'] == 1].groupby('item_id')['behavior_type'].count()
# 统计商品历史被加购物车次数
item_data['cart_count'] = user_behavior[user_behavior['behavior_type'] == 2].groupby('item_id')['behavior_type'].count()
# 统计商品历史被购买次数
item_data['buy_count'] = user_behavior[user_behavior['behavior_type'] == 3].groupby('item_id')['behavior_type'].count()
# 统计商品历史被收藏次数
item_data['fav_count'] = user_behavior[user_behavior['behavior_type'] == 4].groupby('item_id')['behavior_type'].count()
# 统计商品被不同用户浏览、加购物车、购买、收藏的次数
item_data['unique_view_count'] = user_behavior[user_behavior['behavior_type'] == 1].groupby('item_id')['user_id'].nunique()
item_data['unique_cart_count'] = user_behavior[user_behavior['behavior_type'] == 2].groupby('item_id')['user_id'].nunique()
item_data['unique_buy_count'] = user_behavior[user_behavior['behavior_type'] == 3].groupby('item_id')['user_id'].nunique()
item_data['unique_fav_count'] = user_behavior[user_behavior['behavior_type'] == 4].groupby('item_id')['user_id'].nunique()
# 统计商品历史被购买的用户数
item_data['unique_buy_users'] = user_behavior[user_behavior['behavior_type'] == 3].groupby('item_id')['user_id'].nunique()
# 将商品类别ID进行编码
label_encoder = LabelEncoder()
item_data['category_id'] = label_encoder.fit_transform(user_behavior['category_id'])
# 合并用户和商品特征
data = pd.merge(user_data, item_data, left_index=True, right_index=True)
# 保存特征数据
data.to_csv('feature_data.csv', index=False)
```
阅读全文