特征处理之数据离散化

二元转换Binarizer
Binarizer是将连续型变量根据某个阈值,转换成二元的分类变量。
小于该阈值的转换为0,大于该阈值的转换为1。

要求输入列必须是double,int都会报错。
如下:输入的是0.1,0.8,0.2连续型变量,要以0.5为阈值来转换成二元变量(0,1)。

打印结果:

Binarizer output with Threshold = 0.5
+---+-------+-----------------+
| id|feature|binarized_feature|
+---+-------+-----------------+
|  0|    0.1|              0.0|
|  1|    0.8|              1.0|
|  2|    0.2|              0.0|
+---+-------+-----------------+

多了一个新的列,它就是转换后产生的新的特征。

什么时候会用到二元转换?
比如使用朴素贝叶斯做分类预测的时候,输入的特征必须是类别型的,如果在原始的特征数据集中存在连续型的特征变量,就需要将它转换成二元的类别变量。

多元转换(分桶Bucketizer)
同样是连续型变量,如果分成两类还不够,同样也可以分成多类。

二元转换的时候需要给出一个阈值,在多元换转换中,如果要分成n类,就要给出n+1个阈值组成的array,任意一个数都可以被放在某两个阈值的区间内,就像把它放进属于它的桶中,故称为分桶策略。

比如有x,y两个阈值,那么他们组成的区间是[x,y)的前开后闭区间;
对于最后一个区间是前闭后闭区间。

给出的这个阈值array,里面的元素必须是递增的。

如果在转换的过程中有一个数没有被包含在区间内,那么就会当成错误值(对错误值的处理可以通过参数配置)。如果不确定特征值的最小与最大值,那么就添加Double.NegativeInfinity(负无穷)和Double.PositiveInfinity(正无穷)到array的两侧。

Bucketizer output with 4 buckets
+--------+----------------+
|features|bucketedFeatures|
+--------+----------------+
|  -999.9|             0.0|
|    -0.5|             1.0|
|    -0.3|             1.0|
|     0.0|             2.0|
|     0.2|             2.0|
|   999.9|             3.0|
+--------+----------------+

第一列为原始的连续型特征,第二列为转换后的分类索引。

分位数离散化QuantileDiscretizer
与上面两个方法一样,QuantileDiscretizer(分位数离散化)也是将一列连续型的数据转成分类型数据。
通过指定要分为多少类,然后取一个样本数据进行fit,并将其分为每个类别的元素个数大致相等,来得到一个固定阈值array的Bucketizer,其阈值array的下限为-Infinity(负无重大) ,上限为+Infinity(正无重大)。

分级的数量由numBuckets参数决定。
分级的范围有渐进算法决定。
渐进的精度由relativeError参数决定。当relativeError设置为0时,将会计算精确的分位点(计算代价较高)。

但如果样本数据只划分了3个区间,此时设置numBuckets为4,则仍只划分为3个区间。

原文地址:https://www.cnblogs.com/itboys/p/10786265.html

时间: 2024-10-18 18:18:01

特征处理之数据离散化的相关文章

数据离散化-分箱

  变量的延申和筛选-连续变量离散化-特征筛选 WOE编码(最优分箱) WOE一般在0.1~3之间波动,IV值做得特征筛选的操作 一般保留>0.03的特征 IV值体现的时X和Y之间的显著性进行筛选 1.逐列分箱并获得IV值 # 运行自定义函数所在文件 对自定义分箱文件要自己理解 %run smob.py # y进行0,1互换 train_data['SeriousDlqin2yrs'] = -(train_data.SeriousDlqin2yrs-1) #因为与自定义函数中的标签0 1设定正好

数据离散化

对于一组只关心相对大小而与实际值无关的数据,适用于离散化. 将每个数据x的值修改为x在数组a[]中从小到大排序的名次. 这样离散化,缩小了数据之间的间隔,但又不改变其相对于其他数据的大小关系. 可以减少数据的时空复杂度. for(i=1;i<=n;i++){scanf("%d",&a[i]);b[i]=a[i];}//b为a的副本 sort(b+1,b+n+1); int size=unique(b+1,b+n+1)-b; for(i=1;i<=n;i++) ran

hihoCoder #1079 : 离散化 (线段树,数据离散化)

题意:有一块宣传栏,高一定,给出长度,再给出多张海报的张贴位置,问还能见到几张海报(哪怕有一点被看到)?假设海报的高于宣传栏同高. 思路:问题转成“给出x轴上长为L的一条线段,再用n条线段进行覆盖上去,最后还能看到及条线”.长度是0~L,即长度是L,进行离散化的时候,应该用1~L,每个数字表示一个单位长.还有就是按照提示所给的信息实现即可.步骤如下: (1)保存n个数据,做成pair,并将所有出现过的数字在另外找地方排序,去掉重复的,再将数据紧缩化处理,那么大小在1~max.再将紧缩化的数据与原

数据离散化 ( 以及 stl 中的 unique( ) 的用法 )+ bzoj3289:Mato的文件管理

http://blog.csdn.net/gokou_ruri/article/details/7723378 ↑惯例Mark大神的博客 bzoj3289:Mato的文件管理 线段树求逆序对+莫队,但是数据量50000却没有给出范围,既然求逆序对,那么我们关注的只是数据之间的相对大小,此时我们可以把这50000个数据进行简化...嗯看大神的博客就明白了不需要多解释什么了..   下面是博客中未授权截取的大神的代码板子....不过都是自己看应该也没什么吧..... sort(sub_a,sub_a

数据离散化处理

有时候,我们需要使用数组下标来维护某些数据结构(例如并查集),但如果数据范围太大我们开不了这么大的数组,这时候,我们就要将数据进行离散化.例如数据{99844531,75331434,87433476,67542347}我们可以根据相对大小关系67542347<75331434<87433476<99844531来开一个新数组编号,二分查找在新数组里的编号.如b[1]=67542347,b[2]=75331434,b[3]=87433476,b[4]=99844531.当我们要查找998

连续特征离散化达到更好的效果,特征选择的工程方法

http://www.zhihu.com/question/31989952 连续特征的离散化:在什么情况下将连续的特征离散化之后可以获得更好的效果? Q:CTR预估,发现CTR预估一般都是用LR,而且特征都是离散的.为什么一定要用离散特征呢?这样做的好处在哪里? A: 在工业界,很少直接将连续值作为逻辑回归模型的特征输入,而是将连续特征离散化为一系列0.1特征交给逻辑回归模型,这样做的优势有以下几点: 0. 离散特征的增加和减少都很容易,易于模型的快速迭代.(离散特征的增加和减少,模型也不需要

python数据挖掘(从数据集中抽取特征)

大多数数据挖掘算法都依赖于数值或类别型特征,从数据集中抽取数值和类别型特征,并选出最佳特征. 特征可用于建模, 模型以机器挖掘算法能够理解的近似的方式来表示现实 特征选择的另一个优点在于:降低真实世界的复杂度,模型比现实更容易操纵 特征选择 scikit-learn中的VarianceThreshold转换器可用来删除特征值的方差达不到最低标准 的特征. import numpy as np x= np.arange(30).reshape((10,3))#10个个体.3个特征的数据集 prin

数据表达与特征工程

字符串式    的特征称为“类型特征” 数值类型    的特征称为“连续特征” 本节讨论: 如何将不同的特征进行转换 如何合理表达数据 如何进行特征选择 数据表达 1.使用哑变量转换类型特征 哑变量,也称虚拟变量,是一种用来把某些类型变量转换为二值变量的方法 广泛使用于回归分析中 展示get_dummies的使用: #导入pandas import pandas as pd #手工输入一个数据表 fruits = pd.DataFrame({'数值特征':[5,6,7,8,9],'类型特征':[

机器学习:数据准备和特征工程

对于数据挖掘,数据准备阶段主要就是进行特征工程. 数据和特征决定了模型预测的上限,而算法只是逼近了这个上限. 好的特征要少而精,这会使模型更简单.更精准. 一.特征构造 1.’常见提取方式 文本数据的特征提取 词袋向量的方式:统计频率 图像数据的特征提取 像素点RGB 用户行为特征提取 特征提取总结: 特征设计时需要与目标高度相关: 这个特征对预测目标是否有用 如果有用,这个特征的重要程度如何 这个特征的信息是否在其他特征重体现过 特征需要专业领域知识.直觉和一定的数学知识 初始提取的特征后续还