精华内容
下载资源
问答
  • 连续变量离散化
    2021-08-26 22:39:08

    机器学习特征工程之连续变量离散化:连续变量二值化(Binarizer)

    离散化,就是把无限空间中有限的个体映射到有限的空间中;

    根据用户的听音乐的数据来预测哪些歌曲更受欢迎。

    假设大部分人听歌都很平均,会不停的听新的歌曲,但是有一个用户24小时的不停播放同一首歌曲,并且这个歌曲很偏门,导致这首歌的总收听次数特别高。如果用总收听次数来喂给模型,就会误导模型。这时候就需要使用“二值化”。

    拿每个人的收入举例,大部分人的收入都不高,极少数人的收入极其高,分布很不均匀。有些人月收入3000,有些人月收入30万,跨了好几个数量级。

    这种特征对于模型很不友好。这种情况就可以使用分桶来处理。分箱就是将数值特征分成不同的区间,将每个区间看做一个整体。

    连续数据的离散化结果可以分为两类:

      一类是将连续数据划分为特定区间的集合,例如{(0,10],(10,20],(20,50],(50,100]}

      一类是将连续数据划分为特定类,例如类1、类2、类3

     常见实现针对连续数据化离散化的方法如下。

      分位数法:使用四分位、五分位、十分位等分位数进行离散化处理

      距离区间法:可使用等距区间或自定义区间的方式进行离散化,该方法(尤其是等距区间)可以较好地保持数据原有的分布

      频率区间法:将数据按照不同数据的频率分布进行排序,然后按照等频率或指定频率离散化,这种方法会把数据变换成均匀分布。好处是各区间的观察值是相同的,不

    更多相关内容
  • 连续变量离散化教程

    2022-07-30 21:41:41
    为了分析连续数据,通常需要离散化或分成组。本文介绍pandas包中cut和qcut函数,对连续变量进行使用不同方式进行分组。

    为了分析连续数据,通常需要离散化或分成组。本文介绍pandas包中cut和qcut函数,对连续变量进行使用不同方式进行分组。

    cut函数

    假设有一组人年龄数据,现在需要分为几组,分别为[18,25],[26,35],[35,60]以及60以上。实现代码:

    ages = [20, 22, 25, 27, 21, 23, 37, 31, 61, 45, 41, 32]
    bins = [18, 25, 35, 60, 100]
    cats = pd.cut(ages, bins)
    
    print(cats)
    pd.value_counts(cats)
    
    # (18, 25]     5
    # (35, 60]     3
    # (25, 35]     3
    # (60, 100]    1
    
    

    与数学符合保持一致,圆括号表示不包括,中括号表示包括边界值。我们也可以通过right=False改变右侧编边界:

    right参数

    pd.cut(ages, [18, 26, 36, 61, 100], right=False)
    

    标签参数

    我们也可以传入分组名称作为标签:

    group_names = [' Youth' , ' YoungAdult' , ' MiddleAged' , ' Senior' ]
    pd.cut(ages, bins, labels=group_names)
    

    qcut函数

    如果你给cut函数传入整数表示分组数量,而不是显示指明分组边界,则会根据数据集中最大值和最小值按照等长进行计算。下面示例把均匀分布数据分为四组:

    data = np.random.rand(20)
    pd.cut(data, 4, precision=2)
    
    pd.value_counts(cats)
    
    # (0.26, 0.5]      6
    # (0.74, 0.99]     5
    # (0.011, 0.26]    5
    # (0.5, 0.74]      4
    

    与之类似函数是qcut,基于相同数量进行分组。
    数据分布不同,使用cut不一定分组有相同元素,因此qcut可以实现每组元素相同。代码如下:

    data = np.random.randn(1000) # Normally distributed
    cats = pd.qcut(data, 4) # Cut into quartiles
    pd.value_counts(cats)
    
    # (0.666, 3.23]         250
    # (-0.00942, 0.666]     250
    # (-0.651, -0.00942]    250
    # (-3.186, -0.651]      250
    

    与cut类似,也可以传入自己的数量范围:

    pd.qcut(data, [0, 0.1, 0.5, 0.9, 1.])
    
    
    展开全文
  • 连续变量离散化的几种方法

    千次阅读 2019-12-10 13:56:10
    连续变量离散化有三种方法 1.等宽离散化 2.等频离散化 3.利用聚类进行离散化 import numpy as np import pandas as pd #参数初始化 datafile = './data/discretization_data.xls' #读取数据 data = pd.read_...

    连续变量离散化有三种方法

    1.等宽离散化

    2.等频离散化

    3.利用聚类进行离散化

    import numpy as np
    import pandas as pd

    #参数初始化
    datafile = './data/discretization_data.xls' 
    #读取数据
    data = pd.read_excel(datafile) 
    data = data[u'肝气郁结证型系数'].copy()
    k = 4

    #等宽离散化,各个类比依次命名为0,1,2,3
    d1 = pd.cut(data, k, labels = range(k)) 

    #等频率离散化
    w = [1.0*i/k for i in range(k+1)]
    #使用describe函数自动计算分位数
    w = data.describe(percentiles = w)[4:4+k+1] 
    w[0] = w[0]*(1-1e-10)
    d2 = pd.cut(data, w, labels = range(k))

    from sklearn.cluster import KMeans #引入KMeans
    kmodel = KMeans(n_clusters = k) #建立模型,n_jobs是并行数,一般等于CPU数较好
    kmodel.fit(data.values.reshape((len(data), 1))) #训练模型
    c = pd.DataFrame(kmodel.cluster_centers_).sort_values(0)#输出聚类中心,并且排序(默认是随机序的)
    print(np.shape(c))
    print("-------------")
    print(c)
    w = pd.rolling_mean(c, 2).iloc[1:] #相邻两项求中点,作为边界点
    w = [0] + list(w[0]) + [data.max()] #把首末边界点加上
    print("*****************")
    print(w)
    d3 = pd.cut(data, w, labels = range(k))


    #自定义作图函数来显示聚类结果
    def cluster_plot(d, k): 
      import matplotlib.pyplot as plt
      #用来正常显示中文标签
      plt.rcParams['font.sans-serif'] = ['SimHei'] 
      #用来正常显示负号
      plt.rcParams['axes.unicode_minus'] = False 
      
      plt.figure(figsize = (8, 3))
      for j in range(0, k):
        plt.plot(data[d==j], [j for i in d[d==j]], 'o')
      
      plt.ylim(-0.5, k-0.5)
      return plt

    # 绘图
    cluster_plot(d1, k).show()
    cluster_plot(d2, k).show()
    cluster_plot(d3, k).show() 

    展开全文
  • 连续变量离散化的原因

    千次阅读 2020-01-16 15:58:05
    数据离散化是指将连续的数据进行分段,使其变为一段段离散化的区间。分段的原则有基于等距离、等频率或优化的方法。数据离散化的原因主要有以下几点: 算法需要 比如决策树、朴素贝叶斯等算法,都是基于离散型的...

    一、离散化原因
    数据离散化是指将连续的数据进行分段,使其变为一段段离散化的区间。分段的原则有基于等距离、等频率或优化的方法。数据离散化的原因主要有以下几点:

    • 算法需要
      比如决策树、朴素贝叶斯等算法,都是基于离散型的数据展开的。如果要使用该类算法,必须将离散型的数据进行。有效的离散化能减小算法的时间和空间开销,提高系统对样本的分类聚类能力和抗噪声能力。
    • 离散化的特征相对于连续型特征更易理解,更接近知识层面的表达
      比如工资收入,月薪2000和月薪20000,从连续型特征来看高低薪的差异还要通过数值层面才能理解,但将其转换为离散型数据(底薪、高薪),则可以更加直观的表达出了我们心中所想的高薪和底薪。
    • 可以有效的克服数据中隐藏的缺陷,使模型结果更加稳定

    二、离散化的优势
    在工业界,很少直接将连续值作为逻辑回归模型的特征输入,而是将连续特征离散化为一系列0、1特征交给逻辑回归模型,这样做的优势有以下几点:

    • 离散特征的增加和减少都很容易,易于模型的快速迭代;
    • 稀疏向量内积乘法运算速度快,计算结果方便存储,容易扩展;
    • 离散化后的特征对异常数据有很强的鲁棒性:比如一个特征是年龄>30是1,否则0。如果特征没有离散化,一个异常数据“年龄300岁”会给模型造成很大的干扰;
    • 逻辑回归属于广义线性模型,表达能力受限;单变量离散化为N个后,每个变量有单独的权重,相当于为模型引入了非线性,能够提升模型表达能力,加大拟合;
    • 离散化后可以进行特征交叉,由M+N个变量变为M*N个变量,进一步引入非线性,提升表达能力;
    • 特征离散化后,模型会更稳定,比如如果对用户年龄离散化,20-30作为一个区间,不会因为一个用户年龄长了一岁就变成一个完全不同的人。当然处于区间相邻处的样本会刚好相反,所以怎么划分区间是门学问;
    • 特征离散化以后,起到了简化了逻辑回归模型的作用,降低了模型过拟合的风险。

    三、离散化的方法
    1、无监督学习方法

    • 1.1等宽法

    等宽法即是将属性值分为具有相同宽度的区间,区间的个数k根据实际情况来决定。比如属性值在[0,60]之间,最小值为0,最大值为60,我们要将其分为3等分,则区间被划分为[0,20] 、[21,40] 、[41,60],每个属性值对应属于它的那个区间
      缺点是对离群点比较敏感,不均匀地分布数据。

    • 1.2等频法

    将相同数量的记录放进每个区间。

    缺点是可能将相同的数据分到不同的区间。

    • 1.3基于聚类的方法
      基于聚类的方法分为两个步骤,即:
      选定聚类算法将其进行聚类
      将在同一个簇内的属性值做为统一标记。
      注:基于聚类的方法,簇的个数要根据聚类算法的实际情况来决定,比如对于k-means算法,簇的个数可以自己决定,但对于DBSCAN,则是算法找寻簇的个数。

    2、有监督学习方法:

    • 1R方法
    • 基于信息熵的方法
    • 基于卡方的方法

    四、总结
    模型是使用离散特征还是连续特征,其实是一个“海量离散特征+简单模型” 同 “少量连续特征+复杂模型”的权衡。既可以离散化用线性模型,也可以用连续特征加深度学习。就看是喜欢折腾特征还是折腾模型了。通常来说,前者容易,而且可以n个人一起并行做,有成功经验;后者目前看很赞,能走多远还须拭目以待。

    大多数人都以为是才智成就了科学家,他们错了,是品格。—爱因斯坦

    展开全文
  • 机器学习特征工程之连续变量离散化:等宽分箱 离散化,就是把无限空间中有限的个体映射到有限的空间中; 根据用户的听音乐的数据来预测哪些歌曲更受欢迎。 假设大部分人听歌都很平均,会不停的听新的歌曲,但是...
  • 机器学习特征工程之连续变量离散化:聚类法进行分箱 离散化,就是把无限空间中有限的个体映射到有限的空间中; 根据用户的听音乐的数据来预测哪些歌曲更受欢迎。 假设大部分人听歌都很平均,会不停的听新的歌曲...
  • 机器学习特征工程之连续变量离散化:等频分箱 离散化,就是把无限空间中有限的个体映射到有限的空间中; 根据用户的听音乐的数据来预测哪些歌曲更受欢迎。 假设大部分人听歌都很平均,会不停的听新的歌曲,但是...
  • DataScience:机器学习中特征工程之连续变量离散化—变量分箱的简介、常用方法、案例应用(评分卡模型为例)之详细攻略目录连续变量离散化—变量分箱的简介(1)、评分卡模型中的分箱(2)、客户数据分布变动与分箱的...
  • 连续属性离散化就是在数据的取值范围内设定若干个离散的划分点,将取值范围划分为一些离散化的区间,最后用不同的符号或整数值代表落在每个子区间中的数据值。所以,离散化涉及两个子任务:确定分类数以及如何将连续...
  • R语言——连续向量离散化函数总结 1、 cut函数 这种方式较为简单,函数参数:cut(x, breaks, labels = NULL, include.lowest = FALSE, right = TRUE, dig.lab = 3, ordered_result = FALSE, …) Num_Vector<- c...
  • 在特征工程中,我们常常需要对连续型特征进行离散化处理,那么这么做有什么好处呢?下面做简单的总结: 1.离散特征的增加和减少都很...4.单变量离散化N个后,每个变量有单独的权重,相当于为模型引入了非线性,能...
  • 连续属性变换成分类属性,即连续数据离散化。 在数值的取值范围内设定若干个离散划分点,将取值范围划分为一些离散化的区间,最后用不同的符号或整数值代表每个子区间中的数据值。 连续数据离散化: 等宽法 / ...
  • 这时, 将特征变量进行离散化则能较好地解决这个问题。 本篇为算法系列文章第4篇,由360信息流算法团队投稿。 作者有话说 这个算法是我自己在机器学习领域所接触到的第一个算法。记得当时看了一篇论文:...
  • 连续变量离散化,可以增加模型的“非线性能力” 这句话我在不同的地方看到不少人说过,但这句话总是让我感到困惑——知其然不知其所以然的困惑。今天我就从一个小白的角度尝试着解释一下这句话—— 首先,何为...
  • 针对现有离散化方法在选择断点时没有考虑属性间和属性内断点的互斥性且不能保证保持决策表的不可分辨关系,本研究提出一种新的基于信息熵的粗糙集连续属性多变量离散化算法(PAD)。它以信息熵作为选择断点的衡量...
  • 数据离散化的意义数据离散化是指将连续的数据进行分段,使其变为一段段离散化的区间。分段的原则有基于等距离、等频率或优化的方法。离散化的原因1.模型限制比如决策树、朴素贝叶斯等算法,都是基于离散型的数据展开...
  • 在工业界,很少直接将连续值作为逻辑回归模型的特征输入,而是将连续特征离散化为一系列0、1特征交给逻辑回归模型,这样做的优势有以下几点: ...如果特征没有离散化,一个异常数据“年龄300岁...
  • “分箱法”相信学过统计学的小伙伴们都不会陌生,它的主要作用就在于对噪音数据进行剔除,同时将连续型数据进行离散处理。在模型分析开始前,我们经常需要使用到分箱法来处理和清洗数据。 作为一款功能全面、专业性...
  • 连续特征离散化方法介绍

    千次阅读 2018-01-30 10:48:40
    连续属性的离散化方法也可以被称为分箱法,即将一组连续的值根据一定的规则分别放到其术语的集合中。  离散化技术可以根据如何对数据进行离散化加以分类,可以根据是否使用类信息或根据进行方向(即自顶向下或自底...
  • CART遇到连续变量时不纯度函数是 1.直接计算MSE? 2.连续变量离散化,在计算GINI系数啊? 请问是哪个啊?
  • 特征离散化(一) 之 卡方分箱

    千次阅读 多人点赞 2019-09-09 19:51:52
    特征离散化 之 卡方分箱 离散特征在数据挖掘的过程中具有重要作用,因此特征离散化是构建特征工程的一个很常见、也很重要的环节。 最近做项目需要用到卡方分箱实现特征的离散化,发现这么经典的功能python竟然...
  • 连续特征的离散化:在什么情况下将连续的特征离散化之后可以获得更好的效果? 题主机器学习大白一个。。最近刚接触CTR预估,发现CTR预估一般都是用LR,而且特征都是离散的。为什么一定要用离散特征呢?这样做的好处...
  • 特征离散化 机器学习算法预处理的特征离散化包括信息增益方法和其他频率、距离分割方法
  • 特征的转换_02-连续变量离散化

    千次阅读 2017-02-07 16:02:27
    笔记整理时间:2017年1月17日 笔记整理者:王小草今日记事: ...1. 二元转换BinarizerBinarizer是将连续变量根据某个阀值,转换成二元的分类变量。小于该阀值的转换为0,大于该阀值的转换为1.如下:输入的是0
  • 连续特征的离散化的意义

    千次阅读 2017-05-21 18:09:33
    连续特征的离散化:在什么情况下将连续的特征离散化之后可以获得更好的效果? Q:CTR预估,发现CTR预估一般都是用LR,而且特征都是离散的。为什么一定要用离散特征呢?这样做的好处在哪里? A: 在工业界,很...
  • 机器学习——连续型特征离散化

    万次阅读 2017-01-03 09:38:11
    在特征工程中,特别是logistic regression上,需要把一些连续特征进行离散化处理。离散化除了一些计算方面等等好处,还可以引入非线性特性,也可以很方便的做cross-feature。离散特征的增加和减少都很容易,易于模型...
  • 当用粗糙集算法从连续量决策信息表中提取规则时,首先要对其进行离散化处理。针对连续量决策信息表离散化过程中存在的问题,本文中提出了2个定理并进行了证明。定理表明:在考虑决策信息表中属性值之间不可分关系的条件...
  • 离散化背景连续数据经常采用离散化处理之后再放入模型。离散化可以理解为提取特征的过程,比如在LR模型,由于是广义线性模型表达能力有限,因此通过特征离散化来了提高非线性学习能力主要方法等距离散取值范围均匀划...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 50,811
精华内容 20,324
关键字:

连续变量离散化