【推荐系统】特征交叉
用户对item的点击行为。用户关联用户特征,item关联item特征。
用户特征*item特征,例如用户年纪*item类目,将其进行编码,构成交叉特征。
交叉特征:哪个年龄段的人更偏爱哪个商品类目。
代码如下
import pandas as pd
# 用户表
user_data = {
'UserID': [1, 2, 3],
'Age': [24, 30, 22],
'Gender': ['M', 'F', 'M']
}
# 商品表
item_data = {
'ItemID': [101, 102, 103],
'Category': ['Electronics', 'Clothing', 'Books'],
'Price': [299, 49, 15]
}
# 转换为DataFrame
user_df = pd.DataFrame(user_data)
item_df = pd.DataFrame(item_data)
# 定义年龄段
def age_group(age):
if 20 <= age <= 25:
return 'Young'
elif 26 <= age <= 35:
return 'Adult'
else:
return 'Other'
# 添加年龄段列
user_df['AgeGroup'] = user_df['Age'].apply(age_group)
user_df
# 生成交叉特征
def cross_feature(row):
return f"{row['AgeGroup']}_{row['Category']}"
# 假设有一个购买记录表
purchase_data = {
'UserID': [1, 1, 2, 3],
'ItemID': [101, 103, 102, 101]
}
purchase_df = pd.DataFrame(purchase_data)
purchase_df
purchase_df.merge(user_df, on='UserID')
# 合并数据
merged_df = purchase_df.merge(user_df, on='UserID').merge(item_df, on='ItemID')
merged_df
# 生成交叉特征
merged_df['AgeGroup_Category'] = merged_df.apply(cross_feature, axis=1)
merged_df
print(merged_df[['UserID', 'ItemID', 'AgeGroup_Category']])
# # 是将其进行编码?
# Young_Electronics : 0
# Young_Books :1
# Adult_Clothing : 2
原文地址:https://blog.csdn.net/weixin_31866177/article/details/145266986
免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!