推荐系统实战中LR模型训练(二)

背景:
上一篇推荐系统实战中LR模型训练(一) 中完成了LR模型训练的代码部分。本文中将详细讲解数据准备部分,即将文本数据数值化为稀疏矩阵的形式。

  • 文本数据:
    在这里插入图片描述
  • 稀疏矩阵:
    在这里插入图片描述

实现过程:
文本数据格式如下:
用户ID / 物品ID / 收听时长 / 收听的时间点 / 性别 / 年龄段 / 收入 / 籍贯 / 物品名称 / 物品总时长 / 物品标签
在这里插入图片描述
LR模型在此处的目的是用户对某个物品(音乐)的点击率,本文中将通过用户对物品(音乐)的收听时长占比来表示用户对物品的喜好程度。本文中抽取的特征分为两类:

  • 用户特征(user_feature):性别、年龄段、收入
  • 物品特征(item_feature):物品名称

1.从原始数据中抽取相应的特征部分,得到dataset.tmp
代码如下:(1_fromMetaDataTofeatureData.py)

#coding=utf-8
import sys

meta_data = sys.argv[1]

with open(meta_data, 'r') as fd:
        for line in fd:
                ss = line.strip().split('^A')
                if len(ss) != 11:
                        continue

                user_id = ss[0].strip()
                item_id = ss[1].strip()
                watch_time = ss[2].strip()
                total_time = ss[9].strip()

                #用户特征
                gender = ss[4].strip()
                age = ss[5].strip()
                income = ss[6].strip()

                #物品特征
                item_name = ss[8].strip()

                user_feature = '^A'.join([user_id, gender, age, income])
                item_feature = '^A'.join([item_id, item_name])

                label = round((float(watch_time) / float(total_time)), 1)
                final_label = '0'
                if label >= 1.0:
                        final_label = '1'

                print '^B'.join([final_label, user_feature, item_feature])

得到的dataset.tmp部分数据如下图所示:
在这里插入图片描述

2.对dataset.tmp进行操作,数值化用户(user)特征,得到user_feature.data
代码如下:(gen_user_feature.py)


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值