天池新聞推薦入門賽之【資料分析】Task02

聽風啊發表於2020-11-27

特徵含義

user_id 使用者id
click_article_id 點選文章id
click_timestamp 點選時間戳
click_environment 點選環境
click_deviceGroup 點選裝置組
click_os 點選作業系統
click_country 點選城市
click_region 點選地區
click_referrer_type 點選來源型別
article_id 文章id,與click_article_id相對應
category_id 文章型別id
created_at_ts 文章建立時間戳
words_count 文章字數
emb_1,emb_2,…,emb_249 文章embedding向量表示

提交結果

user_id,article_1,article_2,article_3,article_4,article_5。
其中user_id為使用者id, article_1,article_2,article_3,article_4,article_5為預測使用者點選新聞文章Top5的article_id依概率從高到低排序。

資料分析原始碼

%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 = 'C:/ml_data/news/'

#####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')

# 對每個使用者的點選時間戳進行排序
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.user_id.nunique()

trn_click.groupby('user_id')['click_article_id'].count().min()



相關文章