第11关:布尔数据集构建

任务描述

将以下超市的购买记录: I1:西红柿、排骨、鸡蛋、毛巾、水果刀、苹果 I2:西红柿、茄子、水果刀、香蕉 I3:鸡蛋、袜子、毛巾、肥皂、苹果、水果刀 I4:西红柿、排骨、茄子、毛巾、水果刀 I5:西红柿、排骨、酸奶、苹果 I6:鸡蛋、茄子、酸奶、肥皂、苹果、香蕉 I7:排骨、鸡蛋、茄子、水果刀、苹果 I8:土豆、鸡蛋、袜子、香蕉、苹果、水果刀 I9:西红柿、排骨、鞋子、土豆、香蕉、苹果 转换为布尔数据集,其中数据集用数据框来表示,数据框中的字段名称即为商品名称,如果商品在某个购买记录中出现用1来表示,否则为0。

相关知识

为了完成本关任务,你需要掌握:1.布尔关联规则挖掘,2.事务数据集转化为布尔(0、1)值数据表。

布尔关联规则挖掘

布尔关联规则挖掘是指将事务数据集转化为布尔(0、1)值数据集,并在布尔数据集基础上挖掘关联规则的一种方法。

数据集转化为布尔(0、1)值

算法如下: 1.定义一个空的字典D和包含所有商品的列表tiem=['西红柿','排骨','鸡蛋','茄子','袜子','酸奶','土豆','鞋子']; 2.定义一个长度与数据集长度(事务个数)相同的一维全零数组z,循环操作商品列表tiem,对每一个商品,搜索其所在事务序号(行号),并将事务序号对应的z位置修改为1,同时以商品作为键,z作为值,添加到字典D中; 3.将D转化为数据框。

示例如下:


  1. tiem=['西红柿','排骨','鸡蛋','茄子','袜子','酸奶','土豆','鞋子']
  2. import pandas as pd
  3. import numpy as np
  4. data = pd.read_excel('tr.xlsx',header = None)
  5. data=data.iloc[:,1:]
  6. D=dict()
  7. for t in range(len(tiem)):
  8. z=np.zeros((len(data)))
  9. li=list()
  10. for k in range(len(data.iloc[0,:])):
  11. s=data.iloc[:,k]==tiem[t]
  12. li.extend(list(s[s.values==True].index))
  13. z[li]=1
  14. D.setdefault(tiem[t],z)
  15. Data=pd.DataFrame(D) #布尔值数据表

输出:

,

编程要求

根据提示,在右侧编辑器补充代码,得出布尔值数据表。

测试说明

平台会对你编写的代码进行测试。


开始你的任务吧,祝你成功!

任务代码

#********** Begin **********#
##将以下超市的购买记录(已用一个"超市购买记录.txt"来存放,读取该文件即可)
##注意:文件内容存放与下列展示一致,即顿号分隔,“##”号不是文件内容,文件编码为utf-8):
##  I1、西红柿、排骨、鸡蛋、毛巾、水果刀、苹果
##  I2、西红柿、茄子、水果刀、香蕉
##  I3、鸡蛋、袜子、毛巾、肥皂、苹果、水果刀
##  I4、西红柿、排骨、茄子、毛巾、水果刀
##  I5、西红柿、排骨、酸奶、苹果
##  I6、鸡蛋、茄子、酸奶、肥皂、苹果、香蕉
##  I7、排骨、鸡蛋、茄子、水果刀、苹果
##  I8、土豆、鸡蛋、袜子、香蕉、苹果、水果刀
##  I9、西红柿、排骨、鞋子、土豆、香蕉、苹果
## 将其转换为布尔数据集,其中数据集用数据框Data来表示,数据框中的字段名称即为商品名称,如果商品在某个购买记录中出现用1来表示,否则为0
def return_values():
    tiem=['西红柿','排骨','鸡蛋','茄子','袜子','酸奶','土豆','鞋子']#商品名称,也是数据框的字段名
    import pandas as pd
    import numpy as np
    data=pd.read_table('超市购买记录.txt',engine='python',sep='、',encoding = 'utf-8',header=None)
    data=data.iloc[:,1:]
    D=dict()
    for t in range(len(tiem)):
        z=np.zeros((len(data)))
        li=list()
        for k in range(len(data.iloc[0,:])):
            s=data.iloc[:,k]==tiem[t]
            li.extend(list(s[s.values==True].index))
        z[li]=1
        D.setdefault(tiem[t],z)
    Data=pd.DataFrame(D)  #布尔值数据表
    return Data
#********** End **********#

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐