推荐系统入门二:数据分析

数据分析数据分析的价值主要在于熟悉了解整个数据集的基本情况包括每个文件里有哪些数据,具体的文件中的每个字段表示什么实际含义,以及数据集中特征之间的相关性,在推荐场景下主要就是分析用户本身的基本属性,文章基本属性,以及用户和文章交互的一些分布,这些都有利于后面的召回策略的选择,以及特征工程。建议:当特征工程和模型调参已经很难继续上分了,可以回来在重新从新的角度去分析这些数据,或许可以找到上分的灵感导包1%matplotlib inline2import pandas as pd3import
摘要由CSDN通过智能技术生成

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

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

导包
1
%matplotlib inline
2
import pandas as pd
3
import numpy as np
4

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

9
import os,gc,re,warnings,sys
10
warnings.filterwarnings(“ignore”)
读取数据
1

path = ‘./data/’ # 自定义的路径

2
path = ‘/home/admin/jupyter/data/’ # 天池平台路径
3

4
#####train
5
trn_click = pd.read_csv(path+‘train_click_log.csv’)
6
#trn_click = pd.read_csv(path+‘train_click_log.csv’, names=[‘user_id’,‘item_id’,‘click_time’,‘click_environment’,‘click_deviceGroup’,‘click_os’,‘click_country’,‘click_region’,‘click_referrer_type’])
7
item_df = pd.read_csv(path+‘articles.csv’)
8
item_df = item_df.rename(columns={‘article_id’: ‘click_article_id’}) #重命名,方便后续match
9
item_emb_df = pd.read_csv(path+‘articles_emb.csv’)
10

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

1

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

2
trn_click[‘rank’] = trn_click.groupby([‘user_id’])[‘click_timestamp’].rank(ascending=False).astype(int)
3
tst_click[‘rank’] = tst_click.groupby([‘user_id’])[‘click_timestamp’].rank(ascending=False).astype(int)
1
#计算用户点击文章的次数,并添加新的一列count
2
trn_click[‘click_cnts’] = trn_click.groupby([‘user_id’])[‘click_timestamp’].transform(‘count’)
3
tst_click[‘click_cnts’] = tst_click.groupby([‘user_id’])[‘click_timestamp’].transform(‘count’)
数据浏览
用户点击日志文件_训练集
1
trn_click = trn_click.merge(item_df, how=‘left’, on=[‘click_article_id’])
2
trn_click.head()
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,
user_id click_article_id click_timestamp click_environment click_deviceGroup click_os click_country click_region click_referrer_type rank click_cnts category_id created_at_ts words_count
0 199999 160417 1507029570190 4 1 17 1 13 1 11 11 281 1506942089000 173
1 199999 5408 1507029571478 4 1 17 1 13 1 10 11 4 1506994257000 118
2 199999 50823 1507029601478 4 1 17 1 13 1 9 11 99 1507013614000 213
3 199998 157770 1507029532200 4 1 17 1 25 5 40 40 281 1506983935000 201
4 199998 96613 1507029671831 4 1 17 1 25 5 39 40 209 1506938444000 185
,
train_click_log.csv文件数据中每个字段的含义
user_id: 用户的唯一标识
click_article_id: 用户点击的文章唯一标识
click_timestamp: 用户点击文章时的时间戳
click_environment: 用户点击文章的环境
click_deviceGroup: 用户点击文章的设备组
click_os: 用户点击文章时的操作系统
click_country: 用户点击文章时的所在的国家
click_region: 用户点击文章时所在的区域
click_referrer_type: 用户点击文章时,文章的来源
1
#用户点击日志信息
2
trn_click.info()
<class ‘pandas.core.frame.DataFrame’>

Int64Index: 1112623 entries, 0 to 1112622

Data columns (total 14 columns):

user_id 1112623 non-null int64

click_article_id 1112623 non-null int64

click_timestamp 1112623 non-null int64

click_environment 1112623 non-null int64

click_deviceGroup 1112623 non-null int64

click_os 1112623 non-null int64

click_country 1112623 non-null int64

click_region 1112623 non-null int64

click_referrer_type 1112623 non-null int64

rank 1112623 non-null int64

click_cnts 1112623 non-null int64

category_id 1112623 non-null int64

created_at_ts 1112623 non-null int64

words_count 1112623 non-null int64

dtypes: int64(14)

memory usage: 127.3 MB
1
trn_click.describe()
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,
user_id click_article_id click_timestamp click_environment click_deviceGroup click_os click_country click_region click_referrer_type rank click_cnts category_id created_at_ts words_count
count 1.112623e+06 1.112623e+06 1.112623e+06 1.112623e+06 1.112623e+06 1.112623e+06 1.112623e+06 1.112623e+06 1.112623e+06 1.112623e+06 1.112623e+06 1.112623e+06 1.112623e+06 1.112623e+06
mean 1.221198e+05 1.951541e+05 1.507588e+12 3.947786e+00 1.815981e+00 1.301976e+01 1.310776e+00 1.813587e+01 1.910063e+00 7.118518e+00 1.323704e+01 3.056176e+02 1.506598e+12 2.011981e+02
std 5.540349e+04 9.292286e+04 3.363466e+08 3.276715e-01 1.035170e+00 6.967844e+00 1.618264e+00 7.105832e+00 1.220012e+00 1.016095e+01 1.631503e+01 1.155791e+02 8.343066e+09 5.223881e+01
min 0.000000e+00 3.000000e+00 1.507030e+12 1.000000e+00 1.000

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值