天池新闻推荐入门赛之【数据分析】Task02

本文通过对天池新闻推荐大赛的数据进行分析,包括用户点击时间戳排序、用户点击环境变化、时间差及文章相似性分布等,探讨用户行为特点。分析发现,用户环境、设备和操作系统分布稳定,多数用户点击次数较少,用户前后点击文章具有较高相似性,且用户对文章的时效性和字数有不同偏好。这些发现有助于后续特征工程和模型构建。
摘要由CSDN通过智能技术生成

数据分析
数据分析的价值主要在于熟悉了解整个数据集的基本情况包括每个文件里有哪些数据,具体的文件中的每个字段表示什么实际含义,以及数据集中特征之间的相关性,在推荐场景下主要就是分析用户本身的基本属性,文章基本属性,以及用户和文章交互的一些分布,这些都有利于后面的召回策略的选择,以及特征工程。

建议:当特征工程和模型调参已经很难继续上分了,可以回来在重新从新的角度去分析这些数据,或许可以找到上分的灵感

导包

导入相关包

%matplotlib inline
import pandas as pd
import numpy as np

import matplotlib.pyplot as plt
import seaborn as sns
plt.rc(‘font’, family=‘SimHei’, size=13)

import os,gc,re,warnings,sys
warnings.filterwarnings(“ignore”)
读取数据
path = ‘./data_raw/’

#####train
trn_click = pd.read_csv(path+‘train_click_log.csv’)
item_df = pd.read_csv(path+‘articles.csv’)
item_df = item_df.rename(columns={‘article_id’: ‘click_article_id’}) #重命名,方便后续match
item_emb_df = pd.read_csv(path+‘articles_emb.csv’)

#####test
tst_click = pd.read_csv(path+‘testA_click_log.csv’)
数据预处理
计算用户点击rank和点击次数

对每个用户的点击时间戳进行排序

trn_click[‘rank’] = trn_click.groupby([‘user_id’])[‘click_timestamp’].rank(ascending=False).astype(int)
tst_click[‘rank’] = tst_click.groupby([‘user_id’])[‘click_timestamp’].rank(ascending=False).astype(int)
#计算用户点击文章的次数,并添加新的一列count
trn_click[‘click_cnts’] = trn_click.groupby([‘user_id’])[‘click_timestamp’].transform(‘count’)
tst_click[‘click_cnts’] = tst_click.groupby([‘user_id’])[‘click_timestamp’].transform(‘count’)
数据浏览
用户点击日志文件_训练集
trn_click = trn_click.merge(item_df, how=‘left’, on=[‘click_article_id’])
trn_click.head()
image-20201119112706647
image-20201119112706647
1230×204 8.75 KB
train_click_log.csv文件数据中每个字段的含义

user_id: 用户的唯一标识
click_article_id: 用户点击的文章唯一标识
click_timestamp: 用户点击文章时的时间戳
click_environment: 用户点击文章的环境
click_deviceGroup: 用户点击文章的设备组
click_os: 用户点击文章时的操作系统
click_country: 用户点击文章时的所在的国家
click_region: 用户点击文章时所在的区域
click_referrer_type: 用户点击文章时,文章的来源
#用户点击日志信息
trn_click.info()
image-20201119112622939

trn_click.describe()
image-20201119112649376
image-20201119112649376
1254×281 14.7 KB
#训练集中的用户数量为20w
trn_click.user_id.nunique()
200000
trn_click.groupby(‘user_id’)[‘click_article_id’].count().min() # 训练集里面每个用户至少点击了两篇文章
2
画直方图大体看一下基本的属性分布

plt.figure()
plt.figure(figsize=(15, 20))
i = 1
for col in [‘click_article_id’, ‘click_timestamp’, ‘click_environment’, ‘click_deviceGroup’, ‘click_os’, ‘click

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值