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

上传人:痛*** 文档编号:100853916 上传时间:2022-06-03 格式:DOC 页数:29 大小:250KB
收藏 版权申诉 举报 下载
Python程序设计与实践大作业实验报告材料陆阳孙勇裘升明_第1页
第1页 / 共29页
Python程序设计与实践大作业实验报告材料陆阳孙勇裘升明_第2页
第2页 / 共29页
Python程序设计与实践大作业实验报告材料陆阳孙勇裘升明_第3页
第3页 / 共29页
资源描述:

《Python程序设计与实践大作业实验报告材料陆阳孙勇裘升明》由会员分享,可在线阅读,更多相关《Python程序设计与实践大作业实验报告材料陆阳孙勇裘升明(29页珍藏版)》请在装配图网上搜索。

1、word某某工商大学计算机与信息工程学院Python程序设计与实践大作业报告专 业: 计科 班 级: 1404 学 号:1412190416、1412190415、1412190413 姓 名: 陆阳,孙勇,裘昇明 指导教师: 蒲飞 2015 年 6 月 28 日题目介绍:在真实的业务场景下,我们往往需要对所有商品的一个子集构建个性化推荐模型。在完成这件任务的过程中,我们不仅需要利用用户在这个商品子集上的行为数据,往往还需要利用更丰富的用户行为数据。定义如下的符号:U用户集合I商品全集P商品子集,PID用户对商品全集的行为数据集合那么我们的目标是利用D来构造U中用户对P中商品的推荐模型。数据说

2、明:竞赛数据包含两个局部。第一局部是用户在商品全集上的移动端行为数据D,表名为tianchi_mobile_remend_train_user,包含如下字段:字段字段说明提取说明user_id用户标识抽样&字段脱敏item_id商品标识字段脱敏behavior_type用户对商品的行为类型包括浏览、收藏、加购物车、购置,对应取值分别是1、2、3、4。user_geohash用户位置的空间标识,可以为空由经纬度通过某某的算法生成item_category商品分类标识字段脱敏time行为时间准确到小时级别第二个局部是商品子集P,表名为tianchi_mobile_remend_train_item

3、,包含如下字段:字段字段说明提取说明item_id商品标识抽样&字段脱敏item_ geohash商品位置的空间标识,可以为空由经纬度通过某某的算法生成item_category商品分类标识字段脱敏训练数据包含了抽样出来的一定量用户在一个月时间11.1812.18之内的移动端行为数据D,评分数据是这些用户在这个一个月之后的一天12.19对商品子集P的购置数据。参赛者要使用训练数据建立推荐模型,并输出用户在接下来一天对商品子集购置行为的预测结果。大作业报告内容包括以下几个局部1、数据分组统计:可统计有多少用户、商品、商品类别等信息,甚至每天各种行为的统计数。如图:还有,在给出的用户行为数据中,有

4、些用户在整个11-18日至12-18日对商品有浏览行为记录,但是从未产生过购置行为,这些用户会否在12月19号购置商品实难预测,因此,我们去除这些无购置行为的用户信息,认为这些用户在12月19号还是不会购置任何商品。贴关键代码import timeimport pandas as pdstart=time.time()df_items=pd.read_csv(tianchi_mobile_remend_train_item.csv)df_items2=pd.read_csv(tianchi_mobile_remend_train_user.csv)df_items3=pd.DataFrame(

5、)df_items4=pd.DataFrame()df_items5=pd.DataFrame()df_items3=df_itemsitem_id.drop_duplicates()df_items4=df_itemsitem_category.drop_duplicates()df_items5=df_itemsdf_items.item_geohash.notnull()df_items5=df_items5item_id.drop_duplicates()df_items6=df_items2user_id.drop_duplicates()df_items7=df_items2ite

6、m_id.drop_duplicates()df_items8=df_items2item_category.drop_duplicates()total_behavior_num=len(df_items2)df_items9=df_items2df_items2.behavior_type=4df_items10=df_items2df_items2.behavior_type!=4positive_num=len(df_items9)negative_num=len(df_items10)item_num=len(df_items3)item_categories_num=len(df_

7、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_numprint 商品子集中商品类型数为:,item_categories_numprint 商品子集中带geohash信息的商品个数为:,item_geohash_numprint 用户数一共有:,user_numprint 商品全集中商品个数为:,item_ful

8、l_numprint 商品全集中商品种类数数为:,item_categories_full_numprint 商品全集中共有%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月

9、18日的time为0、11月19日的time为1,以此类推。贴关键代码import pandas as pdfrom datetime import *import timet0=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.

10、read_csv(tianchi_mobile_remend_train_user.csv)print =nprint 时间转换进展中 .ndf_train_user.time=df_train_user.time.map(lambda x:trans_time(x)df_train_user.to_csv(train_trans_time.csv,index=False)t1=time.time()print 时间转换完毕!nprint 转换时间共耗时%f秒 %(t1-t0) 划分训练集和测试集在分类问题中,模型需要经过训练集的学习,才能用于测试集,而训练集和测试集在形式上的区别在于前者有类

11、别标签,后者如此需要模型输出相应的类别标签。这里的问题是依据31天的用户操作记录预测第32天的购置情况,所以通常来说,训练集的构建需要利用31天的数据,而其相应的类别标签如何标注在训练集中?这个与你如何划分训练集和测试集有关;而测试集的构建如此可用到31天的完整数据。下面举个例子,用于解释训练集和测试集的具体表现形式。训练集样本示例测试集样本示例训练集样本示例中的user_id, brand_iditem_id用于表示唯一的样本id,而特征feature_1, feature_2如此用31天的数据构建而来。本次比赛中,我们划分训练集和测试集所用的分割日期是每10天。第0-9天为一个训练集,用第

12、10天的数据给第0-9天数据添加类别标签。第1-10天为一个训练集,用第11天的数据给第1-10天数据添加类别标签,依次类推,,最后是第20-29天为一个训练集,用第30天的数据给第20-29天数据添加类别标签。测试集为第21-30天的数据。贴关键代码import pandas as pdfrom datetime import *import timenum=22start=time.time()df_train_user=pd.read_csv(train_trans_time_process.csv)df_items=pd.read_csv(tianchi_mobile_remend_t

13、rain_item.csv)df_items=df_items.item_id.drop_duplicates()a=pd.DataFrame()df_items=afor i in range(num): print 划分训练集:+str(i) j=i+10 if j!=31: df_set=df_train_user(df_train_user.time=i) & (df_train_user.time=i)&(df_train_user.time 14: a = range(0,ln) slice = random.sample(a,lp*14) # lp*15 df_feature_n

14、 = df_feature_n.ilocslice df_feature = pd.concat(df_feature_p,df_feature_n,ignore_index=True) df_feature2=pd.concat(df_feature,df_feature2)df_feature2.to_csv(features/train_feature.csv,index=False)end=time.time()print 对训练集抽样耗时%f秒 %(end-start)3、特征提取特征提取在数据挖掘中很重要,那么为什么它们那么重要呢?之前提到过,要想输出测试集的类别标签,需要模型在训

15、练集经过学习,那么模型在训练集上学习的是什么?我们知道,在给模型输入数据的时候,实际上模型用到的都是特征与其对应的类别标签,而特征就是用于描述为什么该样本的类别标签就是如此,在本赛题中即用于描述某用户为什么购置/不购置某商品。比如,用户购置某商品的原因,是因为以前经常买,信得过,那么这里可以用“用户购置该商品的天数/用户访问该商品的天数来刻画用户对该品牌的忠诚度。当然,并不是单一的特征就能描述所有情况,通常来说,需要针对所有可能的情形进展考虑,从而深刻而全面地刻画用户购置/不购置商品的原因。这样,模型才能真正学到其中的规律,从而在测试集表现优异。而这一过程,就称之为特征工程。显然,要做好特征工

16、程,需要我们自身对“用户会否购置商品这一业务具有较深刻的理解,即领域知识,并将其用模型可理解的方式表现出来,如何抽取特征?1、统计用户在31天中的购置量、点击量、收藏量、加购物车次数、有操作记录的天数、发生购置的天数、点击转购置率等等,并以点击转购置率做升序/降序排序进展观察,可以发现点击量越高的,点击转购置率也往往越低,尤其点击量极高的用户,往往购置量为0。由此可以考虑将用户购置量、点击转购置率等一系列特征用于描述用户是否会在未来一天发生购置。2、统计用户从初次访问商品到最终购置商品的时间,可以发现绝大多数购置都是当天接触当天完成,越往后用户购置的可能性越低。由此可以推测用户对商品的购置意愿

17、是随着距离上次访问的时间拉长而衰减的,进而可以使用衰减函数来模拟该购置意愿。一方面,利用领域知识对数据进展分析、实验验证。另一方面,从分析的结果、实验的反应来更新领域知识。这是一个不断迭代的过程,需要成体系、且不断地完善。以下仅供参考:1、根本统计类特征A. 销量分割日期前1、2、3、4、5、10天订单数以同一天同一个用户为一个订单C.购置人数特征分别再针对点击、收藏、加购物车等进展统计2、转化率类特征订单数/点击订单数C.购置人数/点击人数特征分别在针对收藏、购物车等操作进展统计3、比值类特征A.返客率某周期内屡次购置的用户数/总购置用户数B.老客户率3天【或其他周期7、15、30】前曾购置

18、过且在前3天内再次购置的用户数/3天内总购置用户数C人均点击数、人均购置量、人均收藏量、人均加购物车量等我们的做法:1. 用户所有行为总量提取用户所有行为总量作为第一个特征,它是指每个用户对每个商品所有行为的总量,其中的所有行为包括点击行为、收藏行为、购物车行为、购置行为。用户所有行为总量定义为前10天的用户行为数据中用户对商品全集的所有行为总量,包括点击量、收藏量、购物车量、购置量。从用户所有行为总量中,可以得到用户对某商品产生的行为次数,从而推测出该用户对阿里巴巴移动电商平台的操作频率和忠诚度,以此做出合理的个性化推荐。之所以选择前10天作为时间节点,是由于划分之后的每个训练集和测试集都以

19、10天为单位。2. 点击量定义数据集的每个用户对商品全集中的商品的点击行为的总和为点击量。从点击量中,可以知道用户浏览了几次某商品,从而推测该用户对该商品的兴趣程度,为之后的模型训练以与最后的个性化推荐奠定一个良好根底。其中,对点击量按10天、5天、3天、1天的时间来划分。也就是关于点击量,按时间的不同提取的特征U_click_sum10-U_click_sum1有4个,分别是前10天的用户点击量、前5天的用户点击量、前3天的用户点击量、前1天的用户点击量。之所以这样提取特征是由于之前划分的训练集是以10天为单位划分的,这样可以更清楚地分析用户在10天中点击量的分布情况,对后面的模型训练有很重

20、要的作用。3. 收藏量定义数据集的每个用户对商品全集中的商品的收藏行为的总和为收藏量。这里可以从收藏行为推测用户对某商品的感兴趣程度,虽然收藏量不会大于点击量,但是收藏行为必定大于点击行为反映的用户感兴趣程度。4. 购物车量定义数据集的每个用户对商品全集中的商品参加购物车行为的总数为购物车量。这里可以从参加购物车行为直接推断用户对某商品感兴趣,虽然购物车量必定大幅度小于点击量和收藏量,但是参加购物车行为反映用户对某个商品感兴趣程度必定大于点击和收藏行为反映的感兴趣程度。5. 购置量定义数据集的每个用户对商品全集中商品的购置行为的总数为购置量,或者说用户购置商品子集的商品数量为购置量。这里可以从

21、用户的购置行为直接推断为用户对某商品感兴趣,对个性化推荐有重要的意义。点击为了更清楚地看到购置量与点击量、收藏量、加购物车量的关系,对用户前10天的行为数据用散点图表示,以用户前10天的购置量为横坐标,其他三类行为是纵坐标,如图,可以看出用户点击量与其他的行为量相比明显大很多,而点击量越多的用户购置量就越少。用户前10天的行为数据比照6. 点击/购置 率点击/购置率的计算公式就是点击量除以购置量,即发生多少次点击行为会有一次购置行为,也就是电子商务平台常说的转化率的倒数。这个特征可以挖掘点击量和购置量之间的关系,可以预测出用户在点击后,何时会发生购置行为,更准确地为用户提供一个合理的个性化推荐

22、。这里还是按时间的不同提取4个特征U_click/buy10-U_click/buy1,分别是前10天的点击/购置率、前5天的点击/购置率、前3天的点击/购置率、前1天的点击/购置率。7. 收藏/购置 率收藏/购置率的计算公式就是收藏量除以购置量,即发生多少次收藏行为会有一次购置行为。这个特征可以挖掘收藏量和购置量之间的关系,可以预测出用户在收藏后,何时会发生购置行为,更准确地为用户提供一个合理的个性化推荐。这里还是按时间的不同提取4个特征U_collection/buy10-U_collection/buy1,分别是前10天的收藏/购置率、前5天的收藏/购置率、前3天的收藏/购置率、前1天的

23、收藏/购置率。与点击/购置率不同,该特征的取值X围可能在0,1之间,因为购置行为不一定要先收藏该商品,所以取值X围应该是大于等于0。8. 购物车/购置 率购物车/购置率的计算公式就是购物车量除以购置量,即发生多少次参加购物车行为会有一次购置行为。这个特征可以挖掘购物车量和购置量之间的关系,可以预测出用户在参加购物车后,何时会发生购置行为,更准确地为用户提供一个合理的个性化推荐。还是按时间的不同提取4个特征U_car/buy10- U_car/buy1,分别是前10天的购物车/购置率、前5天的购物车/购置率、前3天的购物车/购置率、前1天的购物车/购置率。该特征的取值X围与收藏/购置率一样,购置

24、行为不一定要先参加购物车,所以它也应该是大于等于0。9. 商品销量商品销量是指每个商品的销售量,与用户的购置行为有关,由购置了该商品的所有用户总量决定。该特征直观地反映了某个商品基于销量上受喜爱程度,为训练模型以与个性化推荐提供了很好的参考。还是按时间的不同提取4个特征Item_sale10-Item_sale1,分别是前10天的商品销量、前5天的商品销量、前3天的商品销量、前1天的商品销量。该特征的取值X围一定大于等于零。10. 成交订单量成交订单量是指包含该商品的总成交订单的数量,与商品销量类似,不同的是同一笔订单中可能购置了多件该商品,那么此时商品销量大于1,而成交订单量却等于1。该特征

25、反映了用户对某个商品的购置次数,排除同一笔订单购置多件而使商品销量看起来较高的情况。比如,用户购置牙刷时,一笔订单并不会只购置一个,通常会一起购置多个,那么牙刷的销量相比一般只购置一件的商品销量高很多。通过成交订单量可以反映商品基于订单量受喜爱程度,提高了训练模型以与个性化推荐的准确性。还是按时间的不同提取4个特征I_order10-I_order1,分别是前10天的成交订单量、前5天的成交订单量、前3天的成交订单量、前1天的成交订单量。该特征的取值X围一定大于等于零。11. 购置人数购置人数是指购置该商品的用户总人数,与商品销量与成交订单相类似,不同的是同一个用户可能对该商品屡次下单,也可能

26、购置了多件该商品,那么此时成交订单量大于1,商品销量大于1,而购置人数却等于1。该特征反映了某个商品的购置人数,排除同一个用户购置屡次该商品的情况。比如,用户购置生活用品就会出现屡次下单和购置多件的情况。通过购置人数可以真正反映商品基于用户受喜爱程度,很大程度地提高了训练模型以与个性化推荐的准确性。还是按时间的不同提取4个特征I_buyer10-I_buyer1,分别是前10天的购置人数、前5天的购置人数、前3天的购置人数、前1天的购置人数。该特征的取值X围一定大于等于零。12. 是否加购物车参加购物车的行为已经在前面做了一个详细地介绍和分析,其实在用户行为数据中,是否参加购物车也可以作为一个

27、特征提取出来。将是否加购物车的特征,定义为数据集的每个用户对商品全集中的商品是否发生参加购物车的行为。这里还是按时间的不同提取5个特征car5-car1,分别是倒数第5天是否加购物车、倒数第4天是否加购物车、倒数第3天是否加购物车、倒数第2天是否加购物车、倒数第1天是否加购物车。之所以这样提取特征,是因为从用户在10天的倒数5天内是否会将某商品参加购物车,可以预测该用户在测试集中倒数5天内是否会发生参加购物车的行为。该特征的取值X围一定为1或者0,其中1代表加购物车,0代表不加购物车。13. 是否购置用户购置行为已经和加购物车行为一样在前面做了详细地介绍和分析,其实在用户行为数据中,是否购置也

28、可以作为特征提取出来。在本文中,将是否购置的特征,定义为数据集的每个用户对商品全集中的商品是否会发生购置行为。这里还是按时间的不同提取5个特征buy5-buy1,分别是倒数第5天是否购置、倒数第4天是否购置、倒数第3天是否购置、倒数第2天是否购置、倒数第1天是否购置。之所以这样提取特征,是因为从用户在10天的倒数5天内是否会购置某商品,可以预测该用户在测试集中倒数5天内是否会发生购置行为。该特征的取值X围一定为1或者0,其中1代表购置,0代表不购置。14. 累计的用户行为累计的用户行为,也属于用户行为数据的一种表现形式,用户行为数据在前面已经做了详细地介绍和分析,它可以直观地反映出用户的各种关

29、键信息。累计的用户行为定义为前10天的用户行为数据中用户累计对商品子集的各行为总量,包括点击量、收藏量、购物车量、购置量。与用户所有行为总量特征不同之处在于,累计的用户行为是基于商品子集的,而且是按照用户行为提取特征。提取4个特征behav1- behav4,分别是前10天的用户点击量、前10天的用户收藏量、前10天的用户加购物车量、前10天的用户购置量。该特征的取值X围一定为大于等于0。15. 访问时间差访问时间差是指用户在两次访问时间的间隔,它可以反映用户对的访问频率等信息。本文中,提取特征访问时间差,将其定义为用户最后一次访问商品子集中的某个商品到第10天的天数间隔。这与倒数5天的加购物

30、车量、购置量相关联,可以得到用户访问时间与购置之间的关系。该特征的取值X围为0,10之间的整数。贴关键代码import pandas as pdimport randomfrom get_features import *import timet1=time.time()j=10df_items=pd.read_csv(tianchi_mobile_remend_train_item.csv)df_items=df_items.item_id.drop_duplicates()a = pd.DataFrame()df_items = afor k in range(21): i=j+k pri

31、nt add features to trains +str(i) df_tag=pd.read_csv(data/+result+str(i)+.csv) df_tagtag=1 df_feature=pd.read_csv(data/+str(i)+.csv) df_feature_item=pd.merge(left=df_feature,right=df_items,how=inner) df_ui = df_featureuser_id,item_id.drop_duplicates() df_ui = pd.merge(left=df_ui,right=df_items,how=i

32、nner) df_ui_tag = pd.merge(left=df_ui,right=df_tag,how=left) df_ui_tag.fillna(0,inplace=True) U1 = buy_sum10(df_feature,i) df_train = pd.merge(left=df_ui_tag,right=U1,how=left) U2 = click_sum10(df_feature,i) df_train = pd.merge(left=df_train,right=U2,how=left) U3 = collection_sum10(df_feature,i) df_

33、train = pd.merge(left=df_train,right=U3,how=left) U4 = car_sum10(df_feature,i) df_train = pd.merge(left=df_train,right=U4,how=left) df_trainU_click/buy10=df_trainU_click/buy10.map(lambda x: fillinfinity(x) df_trainU_click/buy5=df_trainU_click/buy5.map(lambda x: fillinfinity(x) df_trainU_click/buy3=d

34、f_trainU_click/buy3.map(lambda x: fillinfinity(x) df_trainU_click/buy1=df_trainU_click/buy1.map(lambda x: fillinfinity(x) df_trainU_collection/buy10=df_trainU_collection/buy10.map(lambda x: fillinfinity(x) df_trainU_collection/buy5=df_trainU_collection/buy5.map(lambda x: fillinfinity(x) df_trainU_co

35、llection/buy3=df_trainU_collection/buy3.map(lambda x: fillinfinity(x) df_trainU_collection/buy1=df_trainU_collection/buy1.map(lambda x: fillinfinity(x) df_trainU_car/buy10=df_trainU_car/buy10.map(lambda x: fillinfinity(x) df_trainU_car/buy5=df_trainU_car/buy5.map(lambda x: fillinfinity(x) df_trainU_

36、car/buy3=df_trainU_car/buy3.map(lambda x: fillinfinity(x) df_trainU_car/buy1=df_trainU_car/buy1.map(lambda x: fillinfinity(x) df_behavior_sum10 = behavior_sum10(df_feature) df_train = pd.merge(left=df_train,right=df_behavior_sum10,how=left) df_I_buyers = I_buyers(df_feature_item,i) df_train = pd.mer

37、ge(left=df_train,right=df_I_buyers,how=left) df_item1 = Item_sale(df_feature,i) df_train = pd.merge(left=df_train,right=df_item1,how=left) df_car = car(df_feature,i) df_train = pd.merge(left=df_train,right=df_car,how=left) df_buy = buy(df_feature,i) df_train = pd.merge(left=df_train,right=df_buy,how

38、=left) df_orders = I_Orders(df_feature_item,i) df_train = pd.merge(left=df_train,right=df_orders,how=left) df_ui_sum = UI_Sum(df_feature_item,i) df_train = pd.merge(left=df_train,right=df_ui_sum,how=left) df_ui_last_time = last_time(df_feature_item,i) df_train = pd.merge(left=df_train,right=df_ui_la

39、st_time,how=left) df_train.fillna(0,inplace=True) df_train.to_csv(data_features/train+str(i)+.csv,index=False)t2=time.time()print 给训练集打上标签耗时%f秒 %(t2-t1)4、选择分类模型 可以用决策树模型、随机森林模型、Logistic回归、GBRT模型等,具体可以上:查看各个模型的使用方法。决策树模型:首先从包含了特征的训练集中选择所需特征,调用DecisionTreeClassifier函数对该训练集训练模型,再使用predict函数预测测试集的分类,再将分

40、类结果是购置tag=1的商品作为推荐结果,将其与测试集的真实分类结果比对,最后评估该模型对本实证研究数据的准确率,以F1值为准。决策树分类模型的DecisionTreeClassifier函数,包含了很多参数设置,着重研究criterion参数,criterion表示衡量一个分类的质量,支持的标准可选择gini和entropy这两个值,其中gini是基尼指标,entropy是信息增益。由于用十折交叉验证的方法,所以每次改变一个变量都需要对该模型重新抽样,对其运行10次,得出第1次到第10次的验证结果,对十次准确率F1值求平均作为该模型最终的F1值。贴关键代码df_predict = pd.re

41、ad_csv(model/predict_DecisionTree.csv)inner = pd.merge(left=df_result,right=df_predict,how=inner)predict_num = len(df_predict)print DecisionTree predict_num is: ,predict_numhit_num = len(inner)print DecisionTree hit_num is: ,hit_numresult_num = len(df_result)print DecisionTree total result num is: ,

42、result_numif predict_num!=0: precision = float(hit_num)/predict_numif result_num!=0: callrate = float(hit_num)/result_numprint DecisionTree Precision is:,precisionprint DecisionTree Call rate is: ,callrateif precision+callrate != 0: print 决策树F1值为: ,2*precision*callrate/(precision+callrate),nelse: pr

43、int 决策树F1值为: 0基于随机森林的分类模型随机森林是在决策树的根底上提出的分类模型,它属于集成学习模型。他的核心思想就是通过训练和组合多个不同的决策树,使其形成森林,然后由多棵树进展投票来决定其分类结果。首先从包含了特征的训练集中选择所需特征,调用RandomForestClassifier函数对该训练集训练模型,再使用predict函数预测测试集的分类,再将分类结果是购置tag=1的商品作为推荐结果,将其与测试集的真实分类结果比对,最后评估该模型对本实证研究数据的准确率,以F1值为准。随机森林分类模型的RandomForestClassifier函数,包含了很多参数设置,其中着重研究

44、n_estimators和criterion参数。n_estimators表示森林里树的个数,整数形式;criterion表示衡量一个分类的质量,支持的标准可选择gini和entropy这两个值,其中gini是基尼指标,entropy是信息增益。贴关键代码df_predict = pd.read_csv(model/predict_RandomForest.csv)inner = pd.merge(left=df_result,right=df_predict,how=inner)predict_num = len(df_predict)print RandomForest predict_n

45、um is: ,predict_numhit_num = len(inner)print RandomForest hit_num is: ,hit_numresult_num = len(df_result)print RandomForest total result num is: ,result_numif predict_num!=0: precision = float(hit_num)/predict_numif result_num!=0: callrate = float(hit_num)/result_numprint RandomForest Precision is:,

46、precisionprint RandomForest Call rate is: ,callrateif precision+callrate != 0: print 随机森林 F1值为: ,2*precision*callrate/(precision+callrate),nelse:print 随机森林 F1值为: 0基于回归树的分类模型回归树GBDT是一种迭代决策树算法,由多个决策树组成,在本节中要具体使用的分类模型是GBRT,即梯度迭代回归树,或者梯度提升回归树,它侧重于梯度迭代GB和回归树RT。首先从包含了特征的训练集中选择所需特征,再调用GradientBoostingClass

47、ifier函数对该训练集训练模型,再使用predict函数预测测试集的分类,再将分类结果是购置tag=1的商品作为推荐结果,将其与测试集的真实分类结果比对,最后评估该模型对本实证研究数据的准确率,以F1值为准。回归树分类模型的GradientBoostingClassifier函数,包含了很多参数设置,其中着重研究参数learning_rate。learning_rate就是学习率,是指每棵树都对学习率的缩小有贡献。它的默认值是0.1,可以例进展分析。贴关键代码df_predict = pd.read_csv(model/ensemble_predict_result_GBRT_LR.csv)

48、inner = pd.merge(left=df_result,right=df_predict,how=inner)predict_num = len(df_predict)print ensemble_GBRT_LR predict_num is: ,predict_numhit_num = len(inner)print ensemble_GBRT_LR hit_num is: ,hit_numresult_num = len(df_result)print ensemble_GBRT_LR total result num is: ,result_numif predict_num!=

49、0: precision = float(hit_num)/predict_numif result_num!=0: callrate = float(hit_num)/result_numprint ensemble_GBRT_LR Precision is:,precisionprint ensemble_GBRT_LR Call rate is: ,callrateif precision+callrate != 0: print ensemble_GBRT_LR F1值为: ,2*precision*callrate/(precision+callrate),nelse: print

50、ensemble_GBRT_LR F1值为: 0基于Logistic回归的分类模型Logistic回归,是指通过连续型或者属性型的自变量,预测属性型因变量的分析方法, 主要研究因变量各种可能发生的概率与自变量之间的关系。本文中,主要研究Logistic回归的二分类非线性模型,用来解决分类问题,比如该用户是否会购置该商品。首先从包含了特征的训练集中选择所需特征,再调用LogisticRegression函数对该训练集训练模型,再使用predict函数预测测试集的分类,再将分类结果是购置tag=1的商品作为推荐结果,将其与测试集的真实分类结果比对,最后评估该模型对本实证研究数据的准确率,以F1值为

51、准。Logistic回归分类模型的LogisticRegression函数,包含了很多参数设置,其中着重研究参数C。C就是正规化强度倒数,它必须是一个正浮点型,数值越小说明容忍误差的强度越强。它的默认值是以例进展分析。贴关键代码df_predict = pd.read_csv(model/predict_LogisticRegression.csv)inner = pd.merge(left=df_result,right=df_predict,how=inner)predict_num = len(df_predict)print LogisticRegression predict_num

52、 is: ,predict_numhit_num = len(inner)print LogisticRegression hit_num is: ,hit_numresult_num = len(df_result)print LogisticRegression total result num is: ,result_numif predict_num!=0: precision = float(hit_num)/predict_numif result_num!=0: callrate = float(hit_num)/result_numprint LogisticRegressio

53、n Precision is:,precisionprint LogisticRegression Call rate is: ,callrateif precision+callrate != 0: print Logistic回归 F1值为: ,2*precision*callrate/(precision+callrate),nelse: print Logistic回归 F1值为: 05、模型比拟根据上述基于决策树、随机森林、回归树、Logistic回归等分类模型,分析几种分类模型的预测数据和推荐结果,比照其F1值,衡量它们的优劣。其中,各分类模型以其最优的某个参数设置为代表模型。贴关

54、键代码df_predict = pd.read_csv(model/predict_Bayes.csv)inner = pd.merge(left=df_result,right=df_predict,how=inner)predict_num = len(df_predict)print Bayes predict_num is: ,predict_numhit_num = len(inner)print Bayes hit_num is: ,hit_numresult_num = len(df_result)print Bayes total result num is: ,result_

55、numif predict_num!=0: precision = float(hit_num)/predict_numif result_num!=0: callrate = float(hit_num)/result_numprint Bayes Precision is:,precisionprint Bayes Call rate is: ,callrateif precision+callrate != 0: print Bayes F1值为: ,2*precision*callrate/(precision+callrate),nelse: print Bayes F1值为: 06、基于位置的推荐选作随着O2O模式的深入开展,基于位置的数据挖掘对于移动电商来说具有很大的意义。此类基于位置的个性化推荐在生活中被广泛应用,当某用户的移动端被定位到某位置之后,他就会收到附近商家的推送信息,该用户就很有可能会选择购置其中的某商品。这里,利用好数据集给出的用户和商品的位置信息(geohash)来进展推荐,可以极大提高推荐的准确率。29 / 29

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!