python实现数据离散化
2017-06-21 19:57
155 查看
数据挖掘中有些算法,特别是分类算法,只能在离散型数据上进行分析,然而大部分数据集常常是连续值和离散值并存的。因此,为了使这类算法发挥作用,需要对数据集中连续型属性进行离散化操作。
那么,如何对连续型属性离散化呢?常见的有等宽分箱法,等频分箱法:
等宽分箱法的思想是,将数据均匀划分成n等份,每份的间距相等。
等频分箱法的思想是,将观察点均匀分成n等份,每份的观察点数相同。
在对数据离散化前,需要先处理异常点敏感问题,即我们需要首先设定一个阈值将异常数据移除。有两种思路:
1.设定阈值为90%,将数据从小到大排序,移除全部数据最小的5%和最大的5%数据
2. 设定阈值为90%,将数据从小到大排序,然后对所有数据求和,并计算每个数据占总和的比例,移除占比10%的数据
在这里,我们实现的方法是等宽分箱法,针对连续型数据集,代码比较简单基础,在此抛砖引玉,大家可以在代码的基础上增添自己需要的功能。
def dataDiscretize(dataSet):
m,n = shape(dataSet) #获取数据集行列(样本数和特征数)
disMat = tile([0],shape(dataSet)) #初始化离散化数据集
for i in range(n-1): #由于最后一列为类别,因此遍历前n-1列,即遍历特征列
x = [l[i] for l in dataSet] #获取第i+1特征向量
y = pd.cut(x,10,labels=[0,1,2,3,4,5,6,7,8,9]) #调用cut函数,将特征离散化为10类,可根据自己需求更改离散化种类
for k in range(n): #将离散化值传入离散化数据集
disMat[k][i] = y[k]
return disMat
那么,如何对连续型属性离散化呢?常见的有等宽分箱法,等频分箱法:
等宽分箱法的思想是,将数据均匀划分成n等份,每份的间距相等。
等频分箱法的思想是,将观察点均匀分成n等份,每份的观察点数相同。
在对数据离散化前,需要先处理异常点敏感问题,即我们需要首先设定一个阈值将异常数据移除。有两种思路:
1.设定阈值为90%,将数据从小到大排序,移除全部数据最小的5%和最大的5%数据
2. 设定阈值为90%,将数据从小到大排序,然后对所有数据求和,并计算每个数据占总和的比例,移除占比10%的数据
在这里,我们实现的方法是等宽分箱法,针对连续型数据集,代码比较简单基础,在此抛砖引玉,大家可以在代码的基础上增添自己需要的功能。
def dataDiscretize(dataSet):
m,n = shape(dataSet) #获取数据集行列(样本数和特征数)
disMat = tile([0],shape(dataSet)) #初始化离散化数据集
for i in range(n-1): #由于最后一列为类别,因此遍历前n-1列,即遍历特征列
x = [l[i] for l in dataSet] #获取第i+1特征向量
y = pd.cut(x,10,labels=[0,1,2,3,4,5,6,7,8,9]) #调用cut函数,将特征离散化为10类,可根据自己需求更改离散化种类
for k in range(n): #将离散化值传入离散化数据集
disMat[k][i] = y[k]
return disMat
相关文章推荐
- 数据预处理(2) ——数据变换与数据离散化 使用python(sklearn,pandas,numpy)实现
- python+httplib实现HTTP POST提交数据,使用Basic Authentication(基本验证)做登陆验证
- python实现数据仓库ETL
- 通过python下的socket实现组播数据的发送和接收
- 利用Python实现分布于各工作空间中的分幅数据合并
- Python 网络爬虫5 ---- 第一次实现抓取数据并且存放到mysql数据库中
- python在twisted中实现二进制数据
- python 实现斐波那契数列,动态删除历史数据demo,很久以前写的,分享给大家 推荐
- 海量日志数据提取出访问次数最多的那个IP python实现 总结
- EXCEL-横向数据转换成纵向数据-python脚本实现
- 数据挖掘基础:K-Means算法的原理与Python实现
- 使用python提取html文件中的特定数据的实现代码
- 使用python提取html文件中的特定数据的实现代码
- Python实现:斐波那契数列、交换两个变量的值、从一组数据中找出最大最小值
- python 数据结构之顺序列表的实现
- python 实现页面数据抓取
- python数据结构与算法 4栈的实现
- Python实现简单时间人流数据收集工具
- python 数据结构之双向链表的实现
- 在python中实现数据生成饼图,并且饼图要显示在HTML页面中