基于亲和性分析的商品推荐
import numpy as np
dataset _ filename=' affinity _ dataset.txt ' )
x=NP.loadtxt(dataset_filename ) )。
打印(x [ :5 ]
面包、牛奶、奶酪、苹果、香蕉
#计算数据集上有多少人买了苹果
num_apple_purchases=0
for sample in X:
if sample[3]==1:
num_apple_purchases=1
购买了print (人是苹果).format (num _ apple _ purchases ) )
#计算数据集上有多少人买了香蕉
num_banana_purchases=0
for sample in X:
if sample[4]==1:
num_banana_purchases=1
print (人购买了香蕉(.format ) num_Banana_purchases ) )。
#统计数据集中的所有规则数据。 首先,为规则的应验和规则的无效两种情况编写词典
“客人买苹果的话,也买香蕉”用(3,4 )表示
fromcollectionsimportdefaultdict #使用默认词典,如果搜索键不存在,则返回默认值
valid_Rules=defaultdict(int ) #
invalid _ rules=默认dict (int ) #规则无效
num _ occurances=默认dict (int ) #条件相同的规则数
#计算过程中,需要按循环结构依次处理各个体的特征量。 第一个特点是作为规则前提条件的顾客购买了某个商品
for sample in X:
forpremiseinrange(4) :
if sample[premise]==0:#个体不符合条件,就不买当前商品继续
连续
num_occurances[premise]=1
forconclusioninrange(premise,5 ) :
if premise==conclusion:
连续
if sample[conclusion]==1:
valid_Rules[(premise,conclusion ) ]=1
else:
Invalid_Rules[(premise,conclusion ) ]=1
#支持度的计算
support=valid_rules
#计算可靠度,遍历各规则的计算
确认=默认值dict (浮动)
for premise,conclusion in valid_rules.keys () :
rule=(premise,conclusion )
confidence [ rule ]=valid _ rules [ rule ]/num _ occurances [ premise ] #是符合每个规则的数量总数/元组中年第一批商品的数量
features=[ '面包'、'牛奶'、'奶酪'、'苹果'、'香蕉' ]
#我现在得到了支持度词典和可靠度词典。 当前,定义函数以输出每个规则、支持度和置信度
defshow(premise,conclusion,support,confidence,features ) :
premise_name=features[premise]
conclusion _ name=features [ conclusion ]
如果您是print('rule:一个人购买{0},他也会购买{1}'.format(premise_name,conclusion_name ) )。
print ()支持数量为() ).format ) support () premise,conclusion ) )
print ((可靠性为) 0:3f ).format ) confidence((premise,conclusion ) ) )
(打印((n (n ) ) ) ) ) ) ) ) ) ) ) ) ) ) )
#打印(确认,类型)确认) )
#打印(支持,类型) (支持) )
# if __name__=='__main__':
# prem=1
# con=3
#show(prem,con,support,confidence,features )。
#获得所有规则的支持度和信任度后,为了找到最佳规则,需要根据支持度和信任度对规则进行排名。
#要找到支持度最高的规则,请先对支持度词典进行排序。 词典的items (函数返回包含词典所有元素的列表,itemgetter )作为关键字对嵌套列表进行排序。
#itemgetter(1)表示根据词典的各要素的值(这里是支持度)进行排序,reverse=true表示按照降序排列
from operator导入项目获取器
#按支持度排序
sortd _ support=sorted (support.items (、key=itemgetter(1)、reverse=True ) )
#根据可靠度排序
sortd _ confidence=sorted (confidence.items (、key=itemgetter(1)、reverse=True ) )。
打印(sortd _ support )是
#排序完成,输出支持度前五的规则
forIinrange(5) :
打印(角色规则#{0} ) .格式(I1 ) ) ) ) ) ) ) ) ) )。
(premise,conclusion )=sortd_support[i][0]#获取元组值
show (优先级、conclusion、support、confidence、features ) )。
#输出可靠度前5的规则
#forIinrange(5) :
#print('role规则#{0}'.format ) I1 ) )
#(premise,conclusion )=sortd_confidence[i][0]#获取元组值
# show (优先级、conclusion、support、confidence、features ) )。