【头歌】亲和性分析——商品推荐

第1关:使用 Numpy 加载文件中的数据

input_file = input()   #接收要导入的文件  
#********* Begin *********#  
import numpy as np   
data_file = input_file  
X = np.loadtxt(data_file,delimiter=",")  
print(X)  
#********* End *********#

第2关:处理 Numpy 加载到的数据

input_file = input()   #接收要导入的文件  
#********* Begin *********#  
import numpy as np 
data_file = input_file
X = np.loadtxt(data_file,delimiter=",")
num_milk_purchases = 0
num_bread_purchases = 0
num_milkbread_purchases = 0
for sample in X:
    if sample[0] == 1:
        num_milk_purchases += 1 
        if sample[1] == 1:
            num_milkbread_purchases += 1
    if sample[1] == 1:
        num_bread_purchases += 1
print("{0} people bought milk".format(num_milk_purchases))
print("{0} people bought bread".format(num_bread_purchases))
print("{0} people bought both milk and bread".format(num_milkbread_purchases))
#********* End *********#

第3关:商品推荐——计算支持度和置信度

input_file = input()   #接收要导入的文件  
import numpy as np   
data_file = input_file  
Data = np.loadtxt(data_file,delimiter=" ")
from collections import defaultdict  
features = ["milk","bread","apple","banana","ham"]  #存放商品名称  
valid_rules = defaultdict(int)      #存放所有的规则应验的情况  
invaild_rules = defaultdict(int)    #存放规则无效  
num_occurances = defaultdict(int)   #存放条件相同的规则数量
#********* Begin *********#  
#-----在此补充算法计算每条规则的置信度和支持度-----#  
for sample in Data:             
    for premise in range(4):  
        if sample[premise] == 0:continue   
        num_occurances[premise] += 1        
        for conclusion in range(len(features)):  
            if premise == conclusion:continue  
            if sample[conclusion] == 1:  
                valid_rules[(premise,conclusion)] += 1  
            else:  
                invaild_rules[(premise,conclusion)] += 1            
support = valid_rules
confidence = defaultdict(float)  
for premise,conclusion in valid_rules.keys():  
    rule = (premise,conclusion)  
    confidence[rule] = valid_rules[rule] / num_occurances[premise]  
def print_rule(premise,conclusion,support,confidence,features):  
    premise_name = features[premise]  
    conclusion_name = features[conclusion]
    print("Rule: If a person buys {0} they will also buy {1}".format(premise_name,conclusion_name))  
    print("- Confidence: {0:.3f}".format(confidence[(premise,conclusion)]))    
    print("- Support: {0}".format(support[(premise,conclusion)]))
#********* End *********#  
#-----请勿删除Begin-End之外的代码框架-----#  
premise = int(input())         #获取条件  
conclusion = int(input())      #获取结论  
print_rule(premise, conclusion, support, confidence, features)

第4关:商品推荐——排序找出最佳规则

input_file = input()   #接收要导入的文件  
import numpy as np   
data_file = input_file  
Data = np.loadtxt(data_file,delimiter=" ")  
from collections import defaultdict  
features = [ "milk", "bread", "apple", "banana","ham"]  #存放商品名称  
valid_rules = defaultdict(int)      #存放所有的规则应验的情况  
invaild_rules = defaultdict(int)    #存放规则无效  
num_occurances = defaultdict(int)   #存放条件相同的规则数量  
#********* Begin *********#  
#-----在此补充算法得到所有规则的置信度和支持度,并输出支持度最高的前5条规则-----#  
for sample in Data:             
    for premise in range(4):  
        if sample[premise] == 0:continue   
        num_occurances[premise] += 1        
        for conclusion in range(len(features)):  
            if premise == conclusion:continue  
            if sample[conclusion] == 1:  
                valid_rules[(premise,conclusion)] += 1  
            else:  
                invaild_rules[(premise,conclusion)] += 1              
support = valid_rules  
confidence = defaultdict(float)  
for premise,conclusion in valid_rules.keys():  
    rule = (premise,conclusion)  
    confidence[rule] = valid_rules[rule] / num_occurances[premise]  
def print_rule(premise,conclusion,support,confidence,features):  
    premise_name = features[premise]  
    conclusion_name = features[conclusion]  
    print("Rule: If a person buys {0} they will also buy {1}".format(premise_name,conclusion_name))  
    print("- Confidence: {0:.3f}".format(confidence[(premise,conclusion)]))    
    print("- Support: {0}".format(support[(premise,conclusion)]))  
from operator import itemgetter   
sorted_support = sorted(support.items(), key=itemgetter(1), reverse=True)
for index in range(5):   
    print("Rule #{0}".format(index + 1))   
    premise, conclusion = sorted_support[index][0]   
    print_rule(premise, conclusion, support, confidence, features)   
#********* End *********#  
#-----请勿删除Begin-End之外的代码框架-----#

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MQiyirs

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值