1.冰山立方体知识:
waiting...
2.代码实现:
- 实现思路:全程模拟,写的时候理解还不够透彻,第一轮算出频率大于min_sup的集合,然后根据此集合开始不断向下扩展,筛选所有大于min_sup的项直至达到最大维数。
- 实现过程遵循的原则:所有出现在数据中但未出现在满足min_sup的集合中的项一律不予计算
- 未实现:理想地,应当首先处理最有区分能力的维。维应当以基数递减数处理。基数越高,分区越小,因而分区越多,从页为BUC剪枝提供了更大的机会。
代码:
test.csv:
a1,b1,c1,d1
a1,b2,c2,d2
a1,b3,c2,d1
a1,b4,c1,d2
a2,b1,c1,d1
a2,b2,c2,d2
a2,b3,c2,d1
a2,b4,c1,d2
a3,b1,c1,d1
a3,b2,c2,d2
a3,b3,c2,d1
a3,b4,c1,d2
a4,b1,c1,d1
a4,b2,c2,d2
a4,b3,c1,d2
a4,b4,c2,d1
BUC:
with open('test.csv','r') as fr:
data_count = dict()
data = fr.read().splitlines()
for i in range(len(data)):
data[i] = str(data[i]).split(",")
dims = [x[0] for x in data[0]] # record representat