zoukankan      html  css  js  c++  java
  • 特征处理之数据离散化

    二元转换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个区间。

  • 相关阅读:
    软件开发平台正在面临一次重大的升级,java, net比起来简直弱爆了,新型的Html5+JS+JSON开发平台正在形成 人工智能
    Qt编写地图综合应用48地球模式、三维模式、地铁模式
    Qt数据库应用1数据导入导出csv
    Qt编写地图综合应用50获取区域边界
    Qt编写地图综合应用49地图类型(街道图、卫星图)
    Qt数据库应用2数据导出到xls
    Qt编写地图综合应用47经纬度地址互相转换
    C# 线程手册 第七章 网络和线程 系列
    SQL Server Transaction Log Truncate && Shrink
    a href=#与 a href=javascript:void(0) 的区别 打开新窗口链接的几种办法
  • 原文地址:https://www.cnblogs.com/itboys/p/10786265.html
Copyright © 2011-2022 走看看