博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spark:特征处理之数据离散化
阅读量:6245 次
发布时间:2019-06-22

本文共 1610 字,大约阅读时间需要 5 分钟。

二元转换Binarizer

Binarizer是将连续型变量根据某个阈值,转换成二元的分类变量。

小于该阈值的转换为0,大于该阈值的转换为1。

要求输入列必须是double,int都会报错。

如下:输入的是0.10.80.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/xuejianbest/p/10284999.html

你可能感兴趣的文章
使用组策略与脚本发布Office 2010
查看>>
Open××× 分配固定IP
查看>>
elk+redis centos6.6安装与配置
查看>>
linux下svn命令大全
查看>>
windows server 2008 在vm上安装
查看>>
我的友情链接
查看>>
谷果等手机刷机build.prop解析
查看>>
Vbox虚拟机下 Linux网络配置
查看>>
Vmware vsphere知识中易混淆和忽略的多个概念
查看>>
Android客户端和服务端如何使用Token和Session
查看>>
Python Pycharm导入第三方包
查看>>
Nginx源码安装
查看>>
我的友情链接
查看>>
提升方法---提升方法AdaBoost方法
查看>>
Java语言的流程控制
查看>>
打乱数组(在其全排列中任选一个)Shuffle an Array
查看>>
红帆iOffice HD上线14天,Store排行榜第27位,商业类NO.1.
查看>>
我的友情链接
查看>>
nginx+django+uwsgi部署配置
查看>>
关于HWM的一些测试
查看>>