第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之外的代码框架-----#