




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实用文档浙江工商大学计算机与信息工程学院Python 程序设计与实践大作业报告专 业: 计科班 级: 1404学 号:1412190416、1412190415、1412190413姓 名: 陆阳,孙勇,裘昇明指导教师: 蒲飞2015 年 6 月 28 日实用文档题目介绍:在真实的业务场景下,我们往往需要对所有商品的一个子集构建个性化推荐 模型。在完成这件任务的过程中, 我们不仅需要利用用户在这个商品子集上的行 为数据,往往还需要利用更丰富的用户行为数据。定义如下的符号: U用户集合I 商品全集P商品子集, P ? ID用户对商品全集的行为数据集合那么我们的目标是利用 D来构造 U中用户对 P
2、 中商品的推荐模型。数据说明:竞赛数据包含两个部分。 第一部分是用户在商品全集上的移动端行为数据 (D) 表名为 tianchi_mobile_recommend_train_user ,包含如下字段:字段字段说明提取说明user_id用户标识抽样 &字段脱敏item_id商品标识字段脱敏behavior_type用户对商品的行为类型包括浏览、 收藏、 加购物车、 购买, 对应取值分别是 1、 2、3、4。user_geohash用户位置的空间标识,可以为空由经纬度通过保密的算法生成item_category商品分类标识字段脱敏time行为时间精确到小时级别第二个部分是商品子集( P), 表名
3、为 tianchi_mobile_recommend_train_item 包含如下字段:字段字段说明提取说明item id商品标识抽样&字段脱敏实用文档item_ geohash商品位置的空间标识,可以为空 由经纬度通过保密的算法生成item_category 商品分类标识 字段脱敏训练数据包含了抽样出来的一定量用户在一个月时间 (11.1812.18 )之内的 移动端行为数据( D),评分数据是这些用户在这个一个月之后的一天 (12.19 ) 对商品子集( P)的购买数据。参赛者要使用训练数据建立推荐模型,并输出用 户在接下来一天对商品子集购买行为的预测结果。大作业报告内容包括以下几个部分
4、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_
5、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_itemsitem_id.drop_duplicates() df_items4=df_itemsitem_category.drop_duplicates() df_items5=df_itemsdf_items.item_geohash.notnull() df_items5
6、=df_items5item_id.drop_duplicates() df_items6=df_items2user_id.drop_duplicates() df_items7=df_items2item_id.drop_duplicates() df_items8=df_items2item_category.drop_duplicates() total_behavior_num=len(df_items2) df_items9=df_items2df_items2.behavior_type=4 df_items10=df_items2df_items2.behavior_type!
7、=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 商品子集中商
8、品类型数为: ,item_categories_numprint 商品子集中带 geohash 信息的商品个数为: ,item_geohash_numprint 用户数一共有: ,user_numprint 商品全集中商品个数为: ,item_full_numprint 商品全集中商品种类数数为: ,item_categories_full_numprint 商品全集中共有 %d条行为记录 %(total_behavior_num)print 消费行为记录中负正样本比为 %d:1 %(negative_num/positive_num)print 一共耗时 %f秒 %(end-start)2、
9、数据预处理 重新整理时间重新整理数据的时间,也就是 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 timet0=time.time() begin_time=datetime(2014,11,18,0,0)
10、 def trans_time(str_time):实用文档entry_time=datetime.strptime(str_time,%Y-%m-%d %H)datatime_delta=(entry_time-begin_time).daysreturn int(datatime_delta)df_train_user=pd.read_csv(tianchi_mobile_recommend_train_user.csv) print =nprint 时间转换进行中 .n df_train_user.time=df_train_user.time.map(lambda x:trans_ti
11、me(x)df_train_user.to_csv(train_trans_time.csv,index=False)t1=time.time()print 时间转换结束 !nprint 转换时间共耗时 %f秒 %(t1-t0) 划分训练集和测试集在分类问题中, 模型需要经过训练集的学习, 才能用于测试集, 而训练集和 测试集在形式上的区别在于前者有类别标签, 后者则需要模型输出相应的类别标 签。这里的问题是依据 31 天的用户操作记录预测第 32天的购买情况, 所以通常 来说,训练集的构建需要利用 31 天的数据,而其相应的类别标签如何标注在训 练集中?这个与你如何划分训练集和测试集有关;而
12、测试集的构建则可用到 31 天的完整数据。下面举个例子,用于解释训练集和测试集的具体表现形式。训练集样本示例实用文档测试集样本示例训练集样本示例中的 user_id, brand_id (item_id )用于表示唯一的样本 id ,而特征 feature_1, feature_2 则用 31 天的数据构建而来。本次比赛中,我 们划分训练集和测试集所用的分割日期是每 10 天。第 0-9 天为一个训练集,用 第 10 天的数据给第 0-9 天数据添加类别标签。第 1-10 天为一个训练集,用第 11天的数据给第 1-10 天数据添加类别标签,依次类推, ,最后是第 20-29 天 为一个训练集
13、,用第 30天的数据给第 20-29 天数据添加类别标签。测试集为第 21-30 天的数据。贴关键代码 import pandas as pd from 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_recommend_train_item.csv) df_items=df_items.item_id.drop_duplicates()a=pd.Data
14、Frame() aitem_id=df_items.values df_items=a实用文档for i in range(num):print 划分训练集 :+str(i)j=i+10if 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 = df_feature_n.ilocslice df_featurepd.co
15、ncat(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、特征提取特征提取在数据挖掘中很重要,那么为什么它们那么重要呢?之前提到过, 要想输出测试集的类别标签, 需要模型在训练集经过学习, 那么模型在训练集上 学习的是什么?我们知道,在给模型输入数据的时候
16、,实际上模型用到的都是特征(及其 对应的类别标签),而特征就是用于描述为什么该样本的类别标签就是如此,在 本赛题中即用于描述某用户为什么购买 / 不购买某商品。比如,用户购买某商品 的原因,是因为以前经常买,信得过,那么这里可以用 “用户购买该商品的天数 / 用户访问该商品的天数” 来刻画用户对该品牌的忠诚度。当然,并不是单一的 特征就能描述所有情况, 通常来说, 需要针对所有可能的情形进行考虑, 从而深 刻而全面地刻画用户购买 / 不购买商品的原因。这样,模型才能真正学到其中的 规律,从而在测试集表现优异。而这一过程,就称之为 特征工程 。显然,要做好 特征工程,需要我们自身对 “用户会否购
17、买商品” 这一业务具有较深刻的理解, 即领域知识,并将其用模型可理解的方式表现出来,如何抽取特征?1、统计用户在 31 天中的购买量、点击量、收藏量、加购物车次数、有操作记录 的天数、发生购买的天数、点击转购买率等等,并以点击转购买率做升序 / 降序实用文档排序进行观察, 可以发现点击量越高的, 点击转购买率也往往越低, 尤其点击量 极高的用户,往往购买量为 0。由此可以考虑将用户购买量、点击转购买率等一 系列特征用于描述用户是否会在未来一天发生购买。2、统计用户从初次访问商品到最终购买商品的时间,可以发现绝大多数购买都 是当天接触当天完成, 越往后用户购买的可能性越低。 由此可以推测用户对商
18、品 的购买意愿是随着距离上次访问的时间拉长而衰减的, 进而可以使用衰减函数来 模拟该购买意愿。一方面,利用领域知识对数据进行分析、实验验证。另一方面,从分析的结 果、实验的反馈来更新领域知识。这是一个不断迭代的过程,需要成体系、且不 断地完善。以下仅供参考:(1)、基本统计类特征A. 销量(分割日期前 1、2、3、4、5、10 天)B. 成交订单数(以同一天同一个用户为一个订单)C. 购买人数D. 以上 3 类特征分别再针对点击、收藏、加购物车等进行统计(2)、转化率类特征A. 销量/ 点击数B. 成交订单数 /点击订单数C. 购买人数 / 点击人数D. 上述 3 个特征分别在针对收藏、购物车
19、等操作进行统计(3)、比值类特征A.返客率(某周期内多次购买的用户数 / 总购买用户数)B.老客户率( 3天【或其他周期 7、15、30】前曾购买过且在前 3天内再次购买 的用户数 /3 天内总购买用户数)C人均点击数、人均购买量、人均收藏量、人均加购物车量等实用文档我们的做法:1. 用户所有行为总量提取用户所有行为总量作为第一个特征, 它是指每个用户对每个商品所有行 为的总量,其中的所有行为包括点击行为、收藏行为、购物车行为、购买行为。用户所有行为总量定义为前 10 天的用户行为数据中用户对商品全集的所有 行为总量,包括点击量、收藏量、购物车量、购买量。从用户所有行为总量中, 可以得到用户对
20、某商品产生的行为次数, 从而推测出该用户对阿里巴巴移动电商 平台的操作频率和忠诚度,以此做出合理的个性化推荐。之所以选择前 10 天作 为时间节点,是由于划分之后的每个训练集和测试集都以 10 天为单位。2. 点击量定义数据集的每个用户对商品全集中的商品的点击行为的总和为点击量。从 点击量中, 可以知道用户浏览了几次某商品, 从而推测该用户对该商品的兴趣程 度,为之后的模型训练以及最后的个性化推荐奠定一个良好基础。 其中,对点击 量按 10 天、5天、 3天、 1天的时间来划分。也就是关于点击量,按时间的不同 提取的特征( U_click_sum10- U_click_sum1 )有 4 个,
21、分别是前 10 天的用户点 击量、前 5 天的用户点击量、前 3 天的用户点击量、前 1 天的用户点击量。之所 以这样提取特征是由于之前划分的训练集是以 10 天为单位划分的,这样可以更 清楚地分析用户在 10 天中点击量的分布情况,对后面的模型训练有很重要的作 用。3. 收藏量定义数据集的每个用户对商品全集中的商品的收藏行为的总和为收藏量。 这 里可以从收藏行为推测用户对某商品的感兴趣程度,虽然收藏量不会大于点击量,但是收藏行为必定大于点击行为反映的用户感兴趣程度。4. 购物车量 定义数据集的每个用户对商品全集中的商品加入购物车行为的总数为购物 车量。这里可以从加入购物车行为直接推断用户对某
22、商品感兴趣, 虽然购物车量实用文档必定大幅度小于点击量和收藏量, 但是加入购物车行为反映用户对某个商品感兴 趣程度必定大于点击和收藏行为反映的感兴趣程度。5. 购买量 定义数据集的每个用户对商品全集中商品的购买行为的总数为购买量, 或者 说用户购买商品子集的商品数量为购买量。 这里可以从用户的购买行为直接推断 为用户对某商品感兴趣,对个性化推荐有重要的意义。为了更清楚地看到购买量与点击量、收藏量、加购物车量的关系,对用户前 10天的行为数据用散点图表示,以用户前 10 天的购买量为横坐标,其他三类行 为是纵坐标,如图,可以看出用户点击量与其他的行为量相比明显大很多,而 点击点击量越多的用户购买
23、量就越少。用户前 10 天的行为数据对比6. 点击/ 购买 率点击 / 购买率的计算公式就是点击量除以购买量,即发生多少次点击行为会 有一次购买行为, 也就是电子商务平台常说的转化率的倒数。 这个特征可以挖掘 点击量和购买量之间的关系,可以预测出用户在点击后,何时会发生购买行为, 更准确地为用户提供一个合理的个性化推荐。这里还是按时间的不同提取 4 个特征( U_click/buy10-U_click/buy1 ),分 别是前 10 天的点击 / 购买率、前 5 天的点击 / 购买率、前 3 天的点击 / 购买率、前 1 天的点击 / 购买率。实用文档7. 收藏/ 购买 率收藏 / 购买率的计
24、算公式就是收藏量除以购买量,即发生多少次收藏行为会 有一次购买行为。 这个特征可以挖掘收藏量和购买量之间的关系, 可以预测出用 户在收藏后,何时会发生购买行为, 更准确地为用户提供一个合理的个性化推荐。这 里 还 是 按 时 间 的 不 同 提 取 4 个 特 征 ( U_collection/buy10-U_collection/buy1),分别是前 10 天的收藏 / 购买率、前 5天的收藏/购买率、前 3天的收藏 /购买率、前 1天的收藏/购买率。与点击/ 购买率不同,该特征的取值范围可能在 0,1 之间,因为购买行为不一定要先收 藏该商品,所以取值范围应该是大于等于 0。8. 购物车/
25、 购买 率购物车 /购买率的计算公式就是购物车量除以购买量,即发生多少次加入购 物车行为会有一次购买行为。这个特征可以挖掘购物车量和购买量之间的关系, 可以预测出用户在加入购物车后, 何时会发生购买行为, 更准确地为用户提供一 个合理的个性化推荐。还是按时间的不同提取 4 个特征( U_car/buy10- U_car/buy1 ),分别是前 10 天的购物车 / 购买率、前 5 天的购物车 / 购买率、前 3 天的购物车 / 购买率、前 1 天的购物车 / 购买率。该特征的取值范围与收藏 / 购买率相同, 购买行为不一定要 先加入购物车,所以它也应该是大于等于 0。9. 商品销量商品销量是指
26、每个商品的销售量, 与用户的购买行为有关, 由购买了该商品 的所有用户总量决定。 该特征直观地反映了某个商品基于销量上受喜爱程度, 为 训练模型以及个性化推荐提供了很好的参考。还是按时间的不同提取 4 个特征 (Item_sale10-Item_sale1 ),分别是前 10天的商品销量、前 5 天的商品销量、 前 3 天的商品销量、前 1 天的商品销量。该特征的取值范围一定大于等于零。10. 成交订单量成交订单量是指包含该商品的总成交订单的数量, 与商品销量类似, 不同的 是同一笔订单中可能购买了多件该商品,那么此时商品销量大于1,而成交订单量却等于 1。该特征反映了用户对某个商品的购买次数
27、,排除同一笔订单购买多 件而使商品销量看起来较高的情况。 比如,用户购买牙刷时, 一笔订单并不会只 购买一个, 通常会一起购买多个, 那么牙刷的销量相比一般只购买一件的商品销提高了训练模实用文档量高很多。通过成交订单量可以反映商品基于订单量受喜爱程度, 型以及个性化推荐的准确性。还是按时间的不同提取 4 个特征(I_order10-I_order1 ),分别是前 10 天的 成交订单量、前5天的成交订单量、前3天的成交订单量、前 1天的成交订单量。该特征的取值范围一定大于等于零11. 购买人数购买人数是指购买该商品的用户总人数, 与商品销量与成交订单相类似, 不 同的是同一个用户可能对该商品多
28、次下单, 也可能购买了多件该商品, 那么此时 成交订单量大于 1,商品销量大于 1,而购买人数却等于 1。该特征反映了某个 商品的购买人数, 排除同一个用户购买多次该商品的情况。 比如,用户购买生活 用品就会出现多次下单和购买多件的情况。 通过购买人数可以真正反映商品基于 用户受喜爱程度,很大程度地提高了训练模型以及个性化推荐的准确性。还是按时间的不同提取 4 个特征(I_buyer10-I_buyer1 ),分别是前 10 天的 购买人数、前 5 天的购买人数、前 3 天的购买人数、前 1天的购买人数。该特征 的取值范围一定大于等于零。12. 是否加购物车加入购物车的行为已经在前面做了一个详
29、细地介绍和分析, 其实在用户行为 数据中,是否加入购物车也可以作为一个特征提取出来。将是否加购物车的特征, 定义为数据集的每个用户对商品全集中的商品是否 发生加入购物车的行为。 这里还是按时间的不同提取 5 个特征(car5-car1 ),分 别是倒数第 5天是否加购物车、倒数第 4天是否加购物车、倒数第 3天是否加购 物车、倒数第 2天是否加购物车、 倒数第1天是否加购物车。 之所以这样提取特 征,是因为从用户在 10 天的倒数 5天内是否会将某商品加入购物车,可以预测 该用户在测试集中倒数 5 天内是否会发生加入购物车的行为。 该特征的取值范围 一定为 1 或者 0, 其中 1 代表加购物
30、车, 0 代表不加购物车。13. 是否购买用户购买行为已经和加购物车行为一样在前面做了详细地介绍和分析, 其实 在用户行为数据中,是否购买也可以作为特征提取出来。在本文中,将是否购买的特征,定义为数据集的每个用户对商品全集中的商 品是否会发生购买行为。 这里还是按时间的不同提取 5 个特征( buy5-buy1 ),分 别是倒数第 5天是否购买、倒数第 4天是否购买、倒数第 3天是否购买、倒数第实用文档2天是否购买、倒数第 1天是否购买。之所以这样提取特征, 是因为从用户在 10 天的倒数 5天内是否会购买某商品, 可以预测该用户在测试集中倒数 5天内是否 会发生购买行为。 该特征的取值范围一
31、定为 1或者 0,其中 1代表购买, 0代表不 购买。14. 累计的用户行为 累计的用户行为,也属于用户行为数据的一种表现形式,用户行为数据在前 面已经做了详细地介绍和分析,它可以直观地反映出用户的各种关键信息。累计的用户行为定义为前 10 天的用户行为数据中用户累计对商品子集的各 行为总量,包括点击量、收藏量、购物车量、购买量。与用户所有行为总量特征 不同之处在于, 累计的用户行为是基于商品子集的, 而且是按照用户行为提取特 征。提取 4 个特征( behav1- behav4 ),分别是前 10 天的用户点击量、前 10 天的用户收藏量、 前 10天的用户加购物车量、 前 10 天的用户购
32、买量。 该特征的 取值范围一定为大于等于 0。15. 访问时间差 访问时间差是指用户在两次访问时间的间隔,它可以反映用户对网站的访问 频率等信息。 本文中,提取特征访问时间差, 将其定义为用户最后一次访问商品 子集中的某个商品到第 10天的天数间隔。这与倒数 5 天的加购物车量、购买量 相关联,可以得到用户访问时间与购买之间的关系。 该特征的取值范围为 0,10 之间的整数。贴关键代码 import pandas as pd import random from get_features import import time实用文档t1=time.time()j=10 df_items=pd.
33、read_csv(tianchi_mobile_recommend_train_item.csv)df_items=df_items.item_id.drop_duplicates()a = pd.DataFrame()aitem_id = df_items.valuesdf_items = afor k in range(21):i=j+kprint add features to trains +str(i)df_tag=pd.read_csv(data/+result+str(i)+.csv)df_tagtag=1df_feature=pd.read_csv(data/+str(i)+.
34、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=inner)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 = p
35、d.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_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_tra
36、inU_click/buy10df_train.U_click_sum10/df_train.U_buy_sum10df_trainU_click/buy5df_train.U_click_sum5/df_train.U_buy_sum5df_trainU_click/buy3df_train.U_click_sum3/df_train.U_buy_sum3df_trainU_click/buy1df_train.U_click_sum1/df_train.U_buy_sum1df_trainU_click/buy10=df_trainU_click/buy10.map(lambdax: fi
37、llinfinity(x)df_trainU_click/buy5=df_trainU_click/buy5.map(lambda x: fillinfinity(x)df_trainU_click/buy3=df_trainU_click/buy3.map(lambdax:fillinfinity(x)df_trainU_click/buy1=df_trainU_click/buy1.map(lambdax:fillinfinity(x)df_trainU_collection/buy10df_train.U_collection_sum10/df_train.U_buy_sum10df_t
38、rainU_collection/buy5实用文档df_train.U_collection_sum5/df_train.U_buy_sum5df_trainU_collection/buy3df_train.U_collection_sum3/df_train.U_buy_sum3df_trainU_collection/buy1df_train.U_collection_sum1/df_train.U_buy_sum1 df_trainU_collection/buy10=df_trainU_collection/buy10.map(lam bda x: fillinfinity(x)df
39、_trainU_collection/buy5=df_trainU_collection/buy5.map(lambd a x: fillinfinity(x)df_trainU_collection/buy3=df_trainU_collection/buy3.map(lambd a x: fillinfinity(x)df_trainU_collection/buy1=df_trainU_collection/buy1.map(lambd a x: fillinfinity(x)df_trainU_car/buy10 df_train.U_car_sum10/df_train.U_buy_
40、sum10df_trainU_car/buy5 = df_train.U_car_sum5/df_train.U_buy_sum5df_trainU_car/buy3 = df_train.U_car_sum3/df_train.U_buy_sum3df_trainU_car/buy1 = df_train.U_car_sum1/df_train.U_buy_sum1df_trainU_car/buy10=df_trainU_car/buy10.map(lambdax:fillinfinity(x)df_trainU_car/buy5=df_trainU_car/buy5.map(lambda
41、x:fillinfinity(x)实用文档df_trainU_car/buy3=df_trainU_car/buy3.map(lambdax:fillinfinity(x)df_trainU_car/buy1=df_trainU_car/buy1.map(lambdax:fillinfinity(x)df_behavior_sum10 = behavior_sum10(df_feature)df_trainpd.merge(left=df_train,right=df_behavior_sum10,how=left)df_I_buyers = I_buyers(df_feature_item,
42、i)df_train = pd.merge(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,rig
43、ht=df_buy,how=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=
44、df_ui_last_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模型等,具体可以 上网站: /stable/ 查看各个模型的使用方法。决策树模型:首先从包含了特征的训练集中选择所需特征,调用 DecisionTreeCl
45、assifier 函数对该训练集训练模型,再使用 predict 函数预测 测试集的分类,再将分类结果是购买( tag=1 )的商品作为推荐结果,将其与测 试集的真实分类结果比对,最后评估该模型对本实证研究数据的准确率,以 F1 值为准。决策树分类模型的 DecisionTreeClassifier 函数,包含了很多参数设置, 着重研究 criterion 参数, criterion 表示衡量一个分类的质量,支持的标准可 选择 gini 和 entropy 这两个值,其中 gini 是基尼指标, entropy 是信息增益。由于用十折交叉验证的方法, 所以每次改变一个变量都需要对该模型重新抽
46、样,对其运行 10 次,得出第 1次到第 10 次的验证结果,对十次准确率 F1值求 平均作为该模型最终的 F1 值。实用文档贴关键代码df_predict = pd.read_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_num hit_num = len(inner)print DecisionTree
47、 hit_num is: ,hit_num result_num = len(df_result)print DecisionTree total result num is: ,result_num if 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 pr
48、ecision+callrate != 0:值为print 决 策 树 F1 ,2*precision*callrate/(precision+callrate),n else:print 决策树 F1值为: 0基于随机森林的分类模型实用文档随机森林是在决策树的基础上提出的分类模型, 它属于集成学习模型。 他的 核心思想就是通过训练和组合多个不同的决策树, 使其形成森林, 然后由多棵树 进行投票来决定其分类结果。首先从包含了特征的训练集中选择所需特征, 调用 RandomForestClassifier 函数对该训练集训练模型, 再使用 predict 函数预测测试集的分类, 再将分类结 果是
49、购买( tag=1 )的商品作为推荐结果,将其与测试集的真实分类结果比对, 最后评估该模型对本实证研究数据的准确率,以 F1 值为准。随机森林分类模型的 RandomForestClassifier 函数,包含了很多参数设置, 其中着重研究 n_estimators 和 criterion 参数。n_estimators 表示森林里树的 个数,整数形式; criterion 表示衡量一个分类的质量, 支持的标准可选择 gini 和 entropy 这两个值,其中 gini 是基尼指标, entropy 是信息增益。贴关键代码df_predict = pd.read_csv(model/pred
50、ict_RandomForest.csv)inner = pd.merge(left=df_result,right=df_predict,how=inner) predict_num = len(df_predict)print RandomForest predict_num is: ,predict_num hit_num = len(inner)print RandomForest hit_num is: ,hit_num result_num = len(df_result)print RandomForest total result num is: ,result_num if
51、predict_num!=0:precision = float(hit_num)/predict_numif result_num!=0:callrate = float(hit_num)/result_num实用文档print RandomForest Precision is: ,precision print RandomForest Call rate is: ,callrate if precision+callrate != 0:F1 值 为print 随 机 森 林 ,2*precision*callrate/(precision+callrate),n else:print
52、随机森林 F1 值为: 0基于回归树的分类模型回归树 GBDT是一种迭代决策树算法,由多个决策树组成,在本节中要具体 使用的分类模型是 GBRT,即梯度迭代回归树,或者梯度提升回归树,它侧重于 梯度迭代 GB和回归树 RT。首先从包含了特征的训练集中选择所需特征,再调用 GradientBoostingClassifier 函数对该训练集训练模型,再使用 predict 函数 预测测试集的分类,再将分类结果是购买( tag=1 )的商品作为推荐结果,将其 与测试集的真实分类结果比对, 最后评估该模型对本实证研究数据的准确率, 以 F1值为准。回归树分类模型的 GradientBoostingClassifier 函数,包含了很多参数设 置,其中着重研究参数 learning_rate 。 learning_rate 就是学习率,是指每棵 树都对学习率的缩小有贡献。它
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- (二模)2025年4月潍坊市高三高考模拟考试语文试卷(含答案)
- 政府形象与公共关系
- 模具设计实例分析及试题与答案
- 2024年重庆市省公务员考试行测历年真题试题试卷答案解析
- 分析种子繁育员的职业道德试题及答案
- 农作物种子繁育员资格考试真题分析试题及答案
- 电价培训课件
- 中药饮片基地项目可行性研究报告
- 模具设计的项目管理试题及答案
- 区域性物流枢纽项目可行性研究报告
- 常见导管固定SOP-课件
- imo中的问题定理与方法
- 新能源汽车运用与维修专业人才培养方案
- 浙江公路技师学院教师招聘考试真题2022
- 氨吹脱塔单元设计示例
- 中国移动-安全-L3
- 骨龄评测方法课件
- GB/T 42314-2023电化学储能电站危险源辨识技术导则
- 人教小学数学五年级下册综合与实践《怎样通知最快》示范公开课教学课件
- 海陆热力性质差异的说课课件
- 科学院大学博士入学复试汇报个人介绍PPT模板
评论
0/150
提交评论