电子商务数据挖掘实验 电子商务实验4文档格式.docx
- 文档编号:13098439
- 上传时间:2022-10-04
- 格式:DOCX
- 页数:37
- 大小:51.90KB
电子商务数据挖掘实验 电子商务实验4文档格式.docx
《电子商务数据挖掘实验 电子商务实验4文档格式.docx》由会员分享,可在线阅读,更多相关《电子商务数据挖掘实验 电子商务实验4文档格式.docx(37页珍藏版)》请在冰豆网上搜索。
基础性2:
综合性3:
设计性4:
研究性)
实验要求:
1(1:
必修2:
选修3:
其它)
实验类别:
3(1:
基础2:
专业基础3:
专业4:
一、实验目的
1.加深对数据挖掘概念和主要任务的理解。
2.研究并学习几种常用的关联分析算法、分类算法、聚类算法和异常检测方法,了解它们的实现原理以及在电子商务中的应用。
3.研究并学习几种常用的个性化商品或信息推荐方法,并结合选题设计一个简单的商品或信息推荐模型。
二、实验内容
1.研究并学习两种常用的关联分析算法的实现原理并编程实现其中一种,编程语言不限。
2.研究并学习两种常用的分类算法的实现原理并编程实现其中一种,编程语言不限。
3.研究并学习两种常用的聚类算法的实现原理并编程实现其中一种,编程语言不限。
4.研究并学习两种常用的异常检测方法的实现原理。
5.研究并学习两种常用的个性化商品或信息推荐方法,了解其实现原理和特点。
6.结合选题,设计一个简单的商品或信息推荐模型。
【注意:
模型不一定要很复杂,关键是要能够说明其合理性,鼓励大家创新。
以下两种商品推荐模型(信息推荐模型思路相似)基本思想供参考,也可在此基础上进行改进:
①分析用户的购买记录,找出他经常购买的商品的类型,然后在该类型中找出购买量或者访问量最大但是该买家之前并未购买的商品,并将这些商品推荐给该用户。
②找出与该用户具有相似购物习惯的其他用户,例如他们曾经购买过一些相同的商品,然后将其他用户购买过但是该用户未曾购买的商品推荐给他。
】
三、实验要求
1.研究两种常用的关联分析算法,填写相应的表格,表格必须填写完整,任选一种编程语言实现其中的一种算法,要求提供详细源代码;
2.研究两种常用的分类算法,填写相应的表格,表格必须填写完整,任选一种编程语言实现其中的一种算法,要求提供详细源代码;
3.研究两种常用的聚类算法,填写相应的表格,表格必须填写完整,任选一种编程语言实现其中的一种算法,要求提供详细源代码;
4.研究两种常用的异常检测方法,填写相应的表格,表格必须填写完整;
5.研究两种常用的个性化商品或信息推荐方法,填写相应的表格,表格必须填写完整;
6.结合选题,设计一个简单的商品或信息推荐模型,要求详细说明其实现过程,包括公式、流程等,但无需编程实现。
四、实验步骤
1.通过使用搜索引擎并查阅相关资料,研究并整理两种常用的关联分析算法,填写相应的表格并选择一种编程实现;
2.通过使用搜索引擎并查阅相关资料,研究并整理两种常用的分类算法,填写相应的表格并选择一种编程实现;
3.通过使用搜索引擎并查阅相关资料,研究并整理两种常用的聚类算法,填写相应的表格并选择一种编程实现;
4.通过使用搜索引擎并查阅相关资料,研究并整理两种常用的异常检测方法,填写相应的表格;
5.通过使用搜索引擎并查阅相关资料,研究并整理两种常用的电子商务个性化商品或信息推荐方法,填写相应的表格;
五、实验结果
1.研究并整理两种常用的关联分析算法,编程实现其中一种,填写如下表格:
关联分析算法名称
实现原理
关联分析算法名称:
XXX算法
//核心实现代码
解:
Apriori算法
1.第一个关联规则挖掘算法
2.频繁项集的子集也一定是频繁的,如果{A,B}是频繁项集,则{A}和{B}也一定是频繁项集
3.从1到k(k项集)递归查找频繁项集
4.用得到的频繁项集生成关联规则
5.Apriori算法的两个输入参数分别是最小支持度和数据集。
该算法首先会生成所有单个元素的项集列表。
接着扫描数据集来查看哪些项集满足最小支持度要求,那些不满足最小支持度的集合会被去掉。
然后,对剩下来的集合进行组合以生成包含两个元素的项集。
接下来,再重新扫描交易记录,去掉不满足最小支持度的项集。
该过程重复进行直到所有项集都被去掉。
蛮力法
1.d个项,将产生2d个候选项集
2.总项集个数为2d
3.关联规则的总个数为
R=k=1d-1dk×
j=1d-kd-kj
=3d-2d+1+1
4.当d=6时,关联规则R的个数为602
5.目标找出所有的频繁项集
#-*-encoding:
UTF-8-*-
#---------------------------------import------------------------------------
#------------------------------python代码实现--------------------------
#---------------------------------------------------------------------------
classApriori(object):
def__init__(self,filename,min_support,item_start,item_end):
self.filename=filename
self.min_support=min_support#最小支持度
self.min_confidence=50
self.line_num=0#item的行数
self.item_start=item_start#取哪行的item
self.item_end=item_end
self.location=[[i]foriinrange(self.item_end-self.item_start+1)]
self.support=self.sut(self.location)
self.num=list(sorted(set([jforiinself.locationforjini])))#记录item
self.pre_support=[]#保存前一个support,location,num
self.pre_location=[]
self.pre_num=[]
self.item_name=[]#项目名
self.find_item_name()
self.loop()
self.confidence_sup()
defdeal_line(self,line):
"
提取出需要的项"
return[i.strip()foriinline.split('
'
)ifi][self.item_start-1:
self.item_end]
deffind_item_name(self):
根据第一行抽取item_name"
withopen(self.filename,'
r'
)asF:
forindex,lineinenumerate(F.readlines()):
ifindex==0:
self.item_name=self.deal_line(line)
break
defsut(self,location):
"
输入[[1,2,3],[2,3,4],[1,3,5]...]
输出每个位置集的support[123,435,234...]
support=[0]*len(location)
continue
#提取每信息
item_line=self.deal_line(line)
forindex_num,iinenumerate(location):
flag=0
forjini:
ifitem_line[j]!
='
T'
:
flag=1
break
ifnotflag:
support[index_num]+=1
self.line_num=index#一共多少行,出去第一行的item_name
returnsupport
defselect(self,c):
返回位置"
stack=[]
foriinself.location:
forjinself.num:
ifjini:
iflen(i)==c:
stack.append(i)
else:
stack.append([j]+i)
#多重列表去重
importitertools
s=sorted([sorted(i)foriinstack])
location=list(sfors,_initertools.groupby(s))
returnlocation
defdel_location(self,support,location):
清除不满足条件的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子商务数据挖掘实验 电子商务实验4 电子商务 数据 挖掘 实验