premi

更新时间:2022-11-25 04:57:02 阅读: 评论:0


2022年11月25日发(作者:广州职称英语成绩查询)

python实现商品推荐_python数据挖掘商品推荐算法

利⽤亲和性分析进⾏商品推荐

importnumpyasnp

datat_filename=("affinity_")

X=t(datat_filename)

print(X[:5])

#⾯包、⽜奶、奶酪、苹果和⾹蕉

#计算数据集中有多少个⼈买了苹果

num_apple_purchas=0

forsampleinX:

ifsample[3]==1:

num_apple_purchas+=1

print("{0}⼈购买了苹果".format(num_apple_purchas))

#计算数据集中有多少个⼈买了⾹蕉

num_banana_purchas=0

forsampleinX:

ifsample[4]==1:

num_banana_purchas+=1

print("{0}⼈购买了⾹蕉".format(num_banana_purchas))

#统计数据集中所有有规则的数据,。⾸先分别为规则应验和规则⽆效这两种情况创建字典

#“如果顾客购买了苹果,他们也会买⾹蕉”就⽤(3,4)表⽰

fromcollectionsimportdefaultdict#使⽤默认字典,如果查找键不存在,会返回⼀个默认值

valid_rules=defaultdict(int)#有规则应验

invalid_rules=defaultdict(int)#规则⽆效

num_occurances=defaultdict(int)#条件相同的规则数量

#计算过程需要⽤循环结构依次对每个个体特征值进⾏处理,第⼀个特征为规则的前提条件--顾客购买了某⼀种商品

forsampleinX:

forpremiinrange(4):

ifsample[premi]==0:#如果个体不满⾜条件,即没有买当前商品,继续

continue

num_occurances[premi]+=1

forconclusioninrange(premi,5):

ifpremi==conclusion:

continue

ifsample[conclusion]==1:

valid_rules[(premi,conclusion)]+=1

el:

invalid_rules[(premi,conclusion)]+=1

#计算⽀持度

support=valid_rules

#计算置信度,遍历每条规则计算

confidence=defaultdict(float)

forpremi,conclusioninvalid_():

rule=(premi,conclusion)

confidence[rule]=valid_rules[rule]/num_occurances[premi]#⽤符合每⼀条规则的数量总数/元组中年第⼀条商品的数量

features=['⾯包','⽜奶','奶酪','苹果','⾹蕉']

#现在我们已经得到了⽀持度字典和置信度字典,现在定义函数输出每条规则以及⽀持度和置信度

defshow(premi,conclusion,support,confidence,features):

premi_name=features[premi]

conclusion_name=features[conclusion]

print('Rule:如果⼀个⼈购买了{0}他将也会买{1}'.format(premi_name,conclusion_name))

print('⽀持数是{0}'.format(support[(premi,conclusion)]))

print('置信度是{0:.3f}'.format(confidence[(premi,conclusion)]))

print('nn')

#print(confidence,type(confidence))

#print(support,type(support))

#if__name__=='__main__':

#prem=1

#con=3

#show(prem,con,support,confidence,features)

#得到所有规则的⽀持度和置信度之后,为了找出最佳规则,还需要根据⽀持度和置信度对规则进⾏排序。

#要找出⽀持度最⾼的规则,⾸先对⽀持度字典进⾏排序,字典的items()函数返回包含字典所有元素的列表,并且使⽤itemgetter()作为

键,对嵌套列表进⾏排序,

#itemgetter(1)表⽰以字典各元素的值(这⾥指⽀持度)为依据进⾏排序,rever=true表⽰降序排列

fromoperatorimportitemgetter

#根据⽀持度进⾏排序

sortd_support=sorted((),key=itemgetter(1),rever=True)

#根据置信度进⾏排序

sortd_confidence=sorted((),key=itemgetter(1),rever=True)

print(sortd_support)

#排序完成,输出⽀持度前五的规则

foriinrange(5):

print('Role规则#{0}'.format(i+1))

(premi,conclusion)=sortd_support[i][0]#获取元组值

show(premi,conclusion,support,confidence,features)

#输出置信度前五的规则

#foriinrange(5):

#print('Role规则#{0}'.format(i+1))

#(premi,conclusion)=sortd_confidence[i][0]#获取元组值

#show(premi,conclusion,support,confidence,features)

本文发布于:2022-11-25 04:57:02,感谢您对本站的认可!

本文链接:http://www.wtabcd.cn/fanwen/fan/90/16398.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

上一篇:who is it
下一篇:boner
标签:premise
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图