使用python用递归的方法实现冰山立方体BUC算法(以水果分类数据为例)

本文介绍了如何使用Python递归方式实现冰山立方体BUC算法,以水果分类数据为例。通过离散化处理数据,设置最小支持度进行剪枝,递归构建数据立方体,提高数据处理效率。最后展示了处理结果,但未恢复原始特征名称。
摘要由CSDN通过智能技术生成

冰山立方体BUC算法是一种计算稀疏立方体的构建算法,在构建数据立方体的过程中,如果构建完整的数据仓库可能会花费大量的计算、存储和时间成本。
不过因为在应用过程中大部分的数据都是稀疏的,我们就可以通过冰山立方体的方式简化数据立方体。具体的效果就是,对于本来2^n种排列组合,通过类似BUC的算法,排除过稀疏的数据之后就只剩下很少的一部分,大大提高了数据立方体的效率。
BUC算法的构建有点类似二叉树的剪枝操作。我找到了一些现成的程序,发现基本上都是在操作一些过于简单的数据(只有不超过十组,两三个维度),这里我重新用递归的方法构建了BUC算法,并且针对了水果分类的数据,规模上要更大一些,希望对想要了解BUC算法的同学有所帮助。

数据集

我们用到的水果数据集由爱丁堡大学教授 Iain Murray 所创。他买了很多种类的橙子、柠檬和苹果,并把它们的相关数据记录在表格中。然后密歇根大学的一些学者将这些水果数据编排了格式,点击这里可以下载这些数据:Machine-Learning-with-Python/fruit_data_with_colors.txt

导入库

import numpy as np
import pandas as pd

这里用到了numpy和pandas,是比较基础的python库,安装也很简单,就不多作介绍了。

读数据

fruit = pd.read_table('fruit.txt')

我把原始数据存在了fruit变量里,因为txt文件放在了同目录,这里就直接读取了。

离散化

#离散化mass    width   height  color_score
fruit['mass_bins'] = pd.cut(fruit['mass'],4,labels=False).astype('str')
fruit['width_bins'] = pd.cut(fruit['width'],4,labels=False).astype('str')
fruit['height_bins'] = pd.cut(fruit['height'],4,labels=False)
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值