Python程序设计与实践 大作业实验报告 陆阳 孙勇 裘升明

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

浙江工商大学计算机与信息工程学院

《Python程序设计与实践》大作业报告

专业:计科

班级: 1404

学号:、、

姓名:陆阳,孙勇,裘昇明

指导教师:蒲飞

2015 年 6 月 28 日

题目介绍:

在真实的业务场景下,我们往往需要对所有商品的一个子集构建个性化推荐模型。在完成这件任务的过程中,我们不仅需要利用用户在这个商品子集上的行为数据,往往还需要利用更丰富的用户行为数据。定义如下的符号:

U——用户集合

I——商品全集

P——商品子集,P ⊆ I

D——用户对商品全集的行为数据集合

那么我们的目标是利用D来构造U中用户对P中商品的推荐模型。

数据说明:

竞赛数据包含两个部分。第一部分是用户在商品全集上的移动端行为数据(D),表名为tianchi_mobile_recommend_train_user,包含如下字段:

第二个部分是商品子集(P),表名为tianchi_mobile_recommend_train_item,包含如下字段:

训练数据包含了抽样出来的一定量用户在一个月时间(11.18~12.18)之内的移动端行为数据(D),评分数据是这些用户在这个一个月之后的一天(12.19)对商品子集(P)的购买数据。参赛者要使用训练数据建立推荐模型,并输出用户在接下来一天对商品子集购买行为的预测结果。

大作业报告内容包括以下几个部分

1、数据分组统计:

可统计有多少用户、商品、商品类别等信息,甚至每天各种行为的统计数。如图:还有,在给出的用户行为数据中,有些用户在整个11-18日至12-18日对商品有浏览行为记录,但是从未产生过购买行为,这些用户会否在12月19号购买商品实难预测,

因此,我们去除这些无购买行为的用户信息,认为这些用户在12月19号还是不会购买任何商品。

贴关键代码

import time

import pandas as pd

start=time.time()

df_items=pd.read_csv("tianchi_mobile_recommend_train_item.csv")

df_items2=pd.read_csv("tianchi_mobile_recommend_train_user.csv")

df_items3=pd.DataFrame()

df_items4=pd.DataFrame()

df_items5=pd.DataFrame()

df_items3=df_items["item_id"].drop_duplicates()

df_items4=df_items["item_category"].drop_duplicates()

df_items5=df_items[df_items.item_geohash.notnull()]

df_items5=df_items5["item_id"].drop_duplicates()

df_items6=df_items2["user_id"].drop_duplicates()

df_items7=df_items2["item_id"].drop_duplicates()

df_items8=df_items2["item_category"].drop_duplicates()

total_behavior_num=len(df_items2)

df_items9=df_items2[df_items2.behavior_type==4]

df_items10=df_items2[df_items2.behavior_type!=4]

positive_num=len(df_items9)

negative_num=len(df_items10)

item_num=len(df_items3)

item_categories_num=len(df_items4)

item_geohash_num=len(df_items5)

user_num=len(df_items6)

item_full_num=len(df_items7)

item_categories_full_num=len(df_items8)

end=time.time()

print '商品子集中商品个数为:',item_num

print '商品子集中商品类型数为:',item_categories_num

print '商品子集中带geohash信息的商品个数为:',item_geohash_num

print '用户数一共有:',user_num

print '商品全集中商品个数为:',item_full_num

print '商品全集中商品种类数数为:',item_categories_full_num

print '商品全集中共有%d条行为记录' %(total_behavior_num)

print '消费行为记录中负正样本比为%d:1' %(negative_num/positive_num)

print '一共耗时%f秒' %(end-start)

2、数据预处理

⑴重新整理时间

重新整理数据的时间,也就是Time字段,在数据统计分组中也提到过,因为原始数据的用户行为时间记录是从11月18日0时到12月18日23时,精确到小时级,为了方便数据集的划分,需要将用户行为时间数据整理为0-30天,以天为单位,即11月18日的time为0、11月19日的time为1,以此类推。

贴关键代码

import pandas as pd

from datetime import *

import time

t0=time.time()

begin_time=datetime(2014,11,18,0,0)

def trans_time(str_time):

entry_time=datetime.strptime(str_time,"%Y-%m-%d %H")

datatime_delta=(entry_time-begin_time).days

return int(datatime_delta)

df_train_user=pd.read_csv("tianchi_mobile_recommend_train_user.csv")

print "========================================\n"

print "时间转换进行中 ...\n"

df_train_user.to_csv("train_trans_time.csv",index=False)

相关文档
最新文档