精华内容
下载资源
问答
  • 针对形式背景离散化的特殊要求,提出了一种可视化的数据离散化方法。该方法借助可视化方法对数据类别分布进行表示,将连续数据分布转换为图形分布,进一步利用视觉模糊性对图形空间进行处理,进而将决策连续背景离散...
  • 数据处理之连续数据离散化

    万次阅读 2018-08-02 22:10:53
    一些数据挖掘算法,比如Apriori算法等,要求数据是分类属性形式,需要进行连续数据离散化连续数据离散化就是在数据的取值范围内,设定若干个离散的划分点,将取值范围划分为一些离散化的区间,最后用不同的符号...

    一些数据挖掘算法,比如Apriori算法等,要求数据是分类属性形式,需要进行连续数据离散化。

    连续数据离散化就是在数据的取值范围内,设定若干个离散的划分点,将取值范围划分为一些离散化的区间,最后用不同的符号或整数值代表落在每个子区间中的数据值。

    离散化涉及两个子任务:

    1、确定分类数

    2、将连续属性值映射到这些分类值

     

    举例1,先导入数据,如下:

    常用的离散化方法:

    1、等宽法

    将数据的值域分成具有相同宽度的区间。区间的个数根据数据特点或用户指定。

    缺点是对离群点比较敏感,不均匀地分布数据。

    R语言:

    v1 = ceiling(data[,1]*10) #宽度设为1,进行等宽离散化

    Python:

    import pandas as pd
    data = pd.read_excel('discretization_data.xls')
    data = data[u'肝气郁结证型系数'].copy()
    k = 4
    
    d1 = pd.cut(data,k,labels=range(k))

    2、等频法

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

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

    R语言:

    names(data) = 'f' #变量重命名
    
    attach(data)
    
    seq(0,length(f),length(f)/6) 等频分为6组,结果是每组的索引值
    
    v = sort(f) #按大小排序,作为离散化的依据
    
    v2 = rep(0,930) 定义新变量,930个0
    
    for (i in 1:930) v2[i]=ifelse(f[i]<=v[155],1,
     ifelse(f[i]<=v[310],2,
     ifelse(f[i]<=v[465],3,
     ifelse(f[i]<=v[620],4,
     ifelse(f[i]<=v[775],5,6))))) #通过ifelse()条件判断函数分组
    
    detach(data)

    Python:

    w = [i/k for i in range(k+1)]
    w = data.describe(percentiles=w)[4:4+k+1] #计算分位数
    w[0] = w[0]*(1-1e-10)
    d2 = pd.cut(data,w,labels=range(k))

    3、基于聚类分析的方法

    两个步骤:

    (1)将连续属性的值用聚类算法进行聚类,需要用户指定分组个数。

    (2)将聚类得到的簇进行处理,合并到一个簇的连续属性值,并做统一标记。

    R语言:

    result = kmeans(data,6)
    
    v3 = result$cluster

    Python:

    from sklearn.cluster import KMeans
    
    kmodel = KMeans(n_clusters=k,n_jobs=4) #建立模型,n_jobs是并行数,一般等于CPU个数
    kmodel.fit(data.values.reshape((len(data),1))) #训练模型,reshape是数组的方法
    c = pd.DataFrame(kmodel.cluster_centers_).sort_values(by=0) #输出聚类中心,并且排序
    w = c.rolling(2).mean().iloc[1:] #相邻两项求中点,作为边界点
    w = [0] + list(w[0]) + [data.max()] #把首末边界点加上
    d3 = pd.cut(data,w,labels=range(k))

     

    举例2:

    原始数据如下:

    type = 4 #离散化的分组个数
    
    index = 8 #TNM分期数据所在列
    
    typelabel = c("A","B","C","D","E","F") #离散化后的标识前缀
    
    set.seed(1234)
    
    cols = ncol(datafile[,1:6]) 
    
    rows = nrow(datafile[,1:6])
    
    disdata = matrix(NA,rows,cols+1) #初始化为NA
    
    for (i in 1:cols) {
    + cl = kmeans(datafile[,i],type,nstart = 20)
    + disdata[,i] = paste(typelabel[i],cl$cluster)
    + } #分别对单个属性列进行聚类
    
    disdata[,cols+1] = datafile[,index]
    disdata[,cols+1] = paste("H",disdata[,cols+1],sep="") #增加TNM分期数据所在列

     

    展开全文
  • 连续属性离散化方法

    千次阅读 2019-07-18 21:52:59
    离散化方法 由于一些数据挖掘的算法,主要是一些分类算法,要求数据是分类的形式即是离散的。所以就需要将连续的属性变换为分类的属性,即连续的变为离散的。 常用的离散化方法有以下三种:等宽法、等频法、基于聚类...

    离散化方法

    由于一些数据挖掘的算法,主要是一些分类算法,要求数据是分类的形式即是离散的。所以就需要将连续的属性变换为分类的属性,即连续的变为离散的。
    常用的离散化方法有以下三种:等宽法、等频法、基于聚类分析的方法。
    下面来依次简单介绍一下三种方法的原理:
    等宽法主要就是将属性的值域分成具有相同宽度的区间,区间的个数由数据本身的特点决定,可能会导致一些区间数据少,一些区间数据多的情况。
    等频法主要是将数量相同的记录放进每个区间,可能会将相同的数据分到不同的区间以满足每个区间中固定的数据个数。
    基于聚类分析的方法:主要是用聚类算法进行聚类,然后将得到的cluster进行处理,合并到一个cluster的连续属性值做同一标记。
    下面还是通过代码来进行展示:

    #连续元素离散化
    import pandas as pd
    import matplotlib.pyplot as plt
    datafile = 'G:\data\Python\chapter4\demo\data\discretization_data.xls'
    data = pd.read_excel(datafile) 
    data = data['肝气郁结证型系数'].copy()
    k = 4
    d1 = pd.cut(data,k,labels = range(k)) #等宽离散化,各个类比依次命名为0,1,2,3
    #等频率离散化
    w = [1.0*i/k for i in range(k+1)] #生成一个以0.25为间距的列表
    w = data.describe(percentiles = w)[4:4+k+1] #用describe函数自动计算分位数
    w[0] = w[0]*(1-1e-10)
    d2 = pd.cut(data,w,labels = range(k)) #等频率
    #基于聚类分析方法
    from sklearn.cluster import KMeans
    kmodel = KMeans(n_clusters = k,n_jobs = 4)
    kmodel.fit(data.values.reshape((len(data),1))) #训练模型
    c = pd.DataFrame(kmodel.cluster_centers_).sort_values(0)
    w = c.rolling(2).mean().iloc[1:] #相邻两项求中点,作为边界点
    w = [0] + list(w[0]) + [data.max()] #把首末边界点加上
    d3 = pd.cut(data,w,labels = range(k))
    #作图函数
    def cluster_plot(d,k):
        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') #画出d1,d2...属于四类中那类
        plt.ylim(-0.5,k-0.5)
        return plt
    cluster_plot(d1,4)
    cluster_plot(d2,4)
    cluster_plot(d3,4)
    

    运行结果如下:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    上面三个图就是用三种不同的离散化方法处理同一数据集后的图像。

    展开全文
  • 连续特征离散化方法介绍

    千次阅读 2018-01-30 10:48:40
    连续属性的离散化方法也可以被称为分箱法,即将一组连续的值根据一定的规则分别放到其术语的集合中。  离散化技术可以根据如何对数据进行离散化加以分类,可以根据是否使用类信息或根据进行方向(即自顶向下或自底...

    1. 离散化技术分类

    连续属性的离散化方法也可以被称为分箱法,即将一组连续的值根据一定的规则分别放到其术语的集合中。 
    离散化技术可以根据如何对数据进行离散化加以分类,可以根据是否使用类信息或根据进行方向(即自顶向下或自底向上)分类。 
    如果离散化过程使用类信息,则称它为监督离散化(superviseddiscretization);否则是非监督的(unsupervised)。 
    如果首先找出一点或几个点(称作分裂点或割点)来划分整个属性区间,然后在结果区间上递归地重复这一过程,则称它为自顶向下离散化或分裂。自底向上离散化或合并正好相反,首先将所有的连续值看作可能的分裂点,通过合并相邻域的值形成区间,然后递归地应用这一过程于结果区间。

    2.无监督离散化与监督离散化

    根据数据是否包含类别信息可以把它们分成有监督的数据和无监督的数据。有监督的离散化要考虑类别信息而无监督的离散化则不需要。

    2.1 无监督离散化

    假设属性的取值空间为X={X1,X2,,Xn},离散化之后的类标号是Y={Y1,Y2,,Ym},则无监督离散化的情况就是X已知而Y未知。以下介绍几种常用的无监督离散化方法: 
    (1) 等宽算法 
    根据用户指定的区间数目K,将属性的值域[XminXmax]划分成K个区间,并使每个区间的宽度相等,即都等于XmaxXminK。缺点是容易受离群点的影响而使性能不佳。 
    (2) 等频算法 
    等频算法也是根据用户自定义的区间数目,将属性的值域划分成K个小区间。他要求落在每个区间的对象数目相等。譬如,属性的取值区间内共有M个点,则等频区间所划分的K个小区域内,每个区域含有MK个点。 
    (3) K-means聚类算法 
    首先由用户指定离散化产生的区间数目K,K-均值算法首先从数据集中随机找出K个数据作为K个初始区间的重心;然后,根据这些重心的欧式距离,对所有的对象聚类:如果数据x距重心Gi最近,则将x划归Gi所代表的那个区间;然后重新计算各区间的重心,并利用新的重心重新聚类所有样本。逐步循环,直到所有区间的重心不再随算法循环而改变为止。

    2.2 监督离散化

    监督离散化就是事先XY均为已知,然后找到某个函数,利用X值对Y值做预测。可以建立回归或者分类模型。 
    以下介绍的自下而上或者自上而下的分类方法都属于监督离散化方法。

    3. 齐次性的卡方检验

    在介绍两种基于卡方检验的离散化算法之前,先来介绍一下齐次性的卡方检验。 
    数据:有r个总体。 
    从每个总体中抽取一个随机变量,记第i个样本含有的观测数是ni,1ir。 
    每个样本的每个观测值可以归为c个不同类别中的一类。记Oij为样本i的观测值归入类j的个数,所以, 
    ni=Oi1+Oi2++Oic 
    对于所有的样本i,将数据排列成以下的rc列连表:

      类1
    类2 类c 总和
    总体1 O11 O12 O1c n1
    总体2 O21 O22 O21 n2
    总体r Or1 Or2 Orc nr
    总和 C1 C2 Cc N

    假设: 
    pij为随机取到第i个总体划分为第j类的概率,i[1,r],j[i,c]。 
    H0:同一列中所有的概率相等(即对任意的j,p1j=p2j==prj)。 
    H1:每列中至少存在两个概率不相等(即给定j,存在ik,使得pijpkj)。 
    检验统计量χ2为: 
    χ2=i,j(Oijtij)2tij,其中,tij=niCjN 
    或者: 
    χ2=N(i,jO2ijniCj1) 
    零分布: 
    χ2的零分布是渐进自由度为(r1)(c1)的卡方分布。在近似水平α下的临界域对应于χ2值大于X1α,X1α是自由度为(r1)(c1)的卡方分布的1α分位数,当χ2值大于X1α时拒绝原假设H0,否则,接受H0。 
    p值是自由度为(r1)(c1)的卡方分布随机变量大于χ2的概率,即:p=PH0{χ2>t}。当p值小于α,拒绝H0,否则接受H0。 
    例:

      吸烟 不吸烟 总计
    20 5 25
    10 15 25
    总计 30 20 50

    首先假设H0:性别和吸烟相关。 
    根据公式求得χ2=8.33,自由度为1,查表可得p值小于0.005,所以拒绝原假设。

    4. 自上而下的卡方分裂算法

    该分裂算法是把整个属性的取值区间当做一个离散的属性值,然后对该区间进行划分,一般是一分为二,即把一个区间分为两个相邻的区间,每个区间对应一个离散的属性值,该划分可以一直进行下去,直到满足某种停止条件,其关键是划分点的选取。 
    分裂步骤: 
    依次计算每个插入点的卡方值,当卡方值达到最大时,将该点作为分裂点,属性值域被分为两块。 
    然后再计算卡方值,找到最大值将属性值域分成三块。 
    停止准则: 
    当卡方检验显著,即p<α时,继续分裂区间; 
    当卡方检验不显著,即pα时,停止分裂区间;

    5. ChiMerge算法

    ChiMerge算法是一种基于卡方值的自下而上的离散化方法。和上一种算法正好相反。 
    分裂步骤: 
    第一步:根据要离散的属性对实例进行排序:每个实例属于一个区间 
    第二步:合并区间,计算每一对相邻区间的卡方值 
    停止准则: 
    当卡方检验不显著,即pα时,继续合并相邻区间; 
    当卡方检验显著,即p<α时,停止区间合并;

    6. 基于熵的离散化方法

    本方法也是一种自上而下的离散化方法。首先,定义一下熵的概念: 
    ei=kj=1pijlog2pij 
    其中,pij=mijmi是第i个区间中类j的概率。该划分的总熵e是每个区间的熵的加权平均: 
    e=ni=1wiei 
    其中wi=mim是第i个区间的值的比例,n是区间个数。 
    划分过程: 
    首先将属性的取值值域按照值得大小排序。 把每个值看作是可能的分割点,依次把区间分成两部分计算它们的熵值,取熵值最小的作为第一次划分点。 
    然后选取一个区间,通常选择熵值最大的区间重复此过程。 
    当区间个数达到用户指定的个数或某个用户指定的终止条件则停止继续分裂。

    参考资料

    《连续属性的离散化》 
    《数据挖掘导论》

    展开全文
  • 前言 一些数据挖掘算法,特别是某些分类算法,如ID3算法、Apriori算法等,要求数据是分类属性形式。...常用的离散化方法有等宽法、等频法和(一维)聚类。 (1)等宽法 将属性的值域分成具有相同宽

    前言

    一些数据挖掘算法,特别是某些分类算法,如ID3算法、Apriori算法等,要求数据是分类属性形式。这样,常常需要将连续属性变换成分类属性,即连续属性离散化。

    离散化是干啥

    连续属性离散化就是在数据的取值范围内设定若干个离散的划分点,将取值范围划分为一些离散化的区间,最后用不同的符号或整数值代表落在每个子区间中的数据值。所以,离散化涉及两个子任务:确定分类数以及如何将连续属性值映射到这些分类值。

    常用的离散化方法

    常用的离散化方法有等宽法、等频法和(一维)聚类。
    (1)等宽法
    将属性的值域分成具有相同宽度的区间,区间的个数由数据本身的特点决定或者用户指定,类似于制作频率分布表。
    (2)等频法
    将相同数量的记录放进每个区间。 这两种方法简单,易于操作,但都需要人为规定划分区间的个数。同时,等宽法的缺点在于它对离群点比较敏感,倾向于不均匀地把属性值分布到各个区间。有些区间包含许多数据,而另外一些区间的数据极少,这样会严重损坏建立的决策模型。等频法虽然避免了上述问题的产生,却可能将相同的数据值分到不同的区间,以满足每个区间中固定的数据个数。
    (3)根据业务手动离散化,比如把年龄根据少年、青年、中年、老年进行手动区分离散化等
    (4)基于聚类分析的方法 (我一般不会直接上来就用聚类离散化)
    一维聚类方法包括两个步骤:首先将连续属性的值用聚类算法(如K-Means算法)进行聚类,然后再将聚类得到的簇进行处理,合并到一个簇的连续属性值做同一标记。聚类分析的离散化方法也需要用户指定簇的个数,从而决定产生的区间数。

    常见的思想误区

    在python中一说到离散化,所有人都能想到cut和qcut还有类似于sql中case when这样的手动离散化操作。可大部分人对cut和qcut的区别总是模棱两可说不清楚,我看到很多人说cut是用来做等宽离散化的,qcut是用来做等频离散化的,这样的理解显然是错误。其实直接查看官方cutqcut的API既可以明了的知道两者的区别。

    详解常用的离散化操作

    1. cut

    将数据分箱到指定的间隔中。
    api:

    pandas.cut(x, bins, right=True, labels=None, retbins=False, precision=3, include_lowest=False, duplicates='raise', ordered=True)[source]
    

    常用参数讲解:
    x :要被分箱的数据,必须是一维数组
    bins:如果做等宽离散化,则写一个int数值,如果要手动指定分箱间隔则设定要给间隔列表
    right:默认是True,即左开右闭(一般默认即可)
    labels:设置分箱的标签,一般设为False,显示出来就是0、1、2…,也可以自己设定要给列表,写上对应箱子的名称
    precision:精度,即数值保留几位小数

    可以做手动设定间隔、等宽、等频离散化
    (1)手动设定间隔

    df = pd.DataFrame({'age':[20, 22, 25, 27, 21, 23, 37, 31, 61, 45, 41, 32]}) # 创建模拟年龄数据
    bins = [18, 25, 35, 60, 100] # 手动设置分箱间隔
    df['age_bins'] = pd.cut(df['age'],bins,labels=False) # 使用cut离散化
    df
    

    在这里插入图片描述

    (2)等宽离散化

    df = pd.DataFrame({'age':[20, 22, 25, 27, 21, 23, 37, 31, 61, 45, 41, 32]}) # 创建模拟年龄数据
    k=4 # 设置箱子宽度
    df['age_bins'] = pd.cut(df['age'],k,labels=False) # 使用cut进行等宽离散化
    df
    

    在这里插入图片描述
    (3)等频离散化(下面的操作不懂的可以留言)

    df = pd.DataFrame({'age':[20, 22, 25, 27, 21, 23, 37, 31, 61, 45, 41, 32]}) # 创建模拟年龄数据
    df = df['age'].copy()
    #等频率离散化
    k=4
    w = [1.0*i/k for i in range(k+1)]
    w = df.describe(percentiles = w)[4:4+k+1]  # 使用describe函数自动计算分位数
    w[0] = w[0]*(1-1e-10)
    df= pd.cut(df,k,labels=False) # 使用cut进行离散化
    df
    

    在这里插入图片描述

    不少朋友看到这里一定很郁闷,这个cut做等频离散化咋就这么麻烦啊,是啊,连你都能知道这个非常麻烦,官网又岂能不知道呢?所以才有qcut出场的机会嘛。

    2. qcut

    将数据基于分位数进行离散化。(不要问我分位数是什么,不明白的自行百度

    api:

    pandas.qcut(x, q, labels=None, retbins=False, precision=3, duplicates='raise')
    

    q:分位数,比如分为为10、4等等,也可在列表中写上对应的百分数,如四分位数[0,0.25,0.5,0.75,1]

    其他参数和cut含义基本一致。

    其实qcut也可以实现和cut一样的功能如:手动设定间隔、等宽、等频离散化,只不过它在做等频离散化的时候更方便,其他的离散化一律不用考虑qcut

    df = pd.DataFrame({'age':[20, 22, 25, 27, 21, 23, 37, 31, 61, 45, 41, 32]}) # 创建模拟年龄数据
    k=4 #设置等频个数
    df = pd.qcut(df['age'],k,labels=False) # qcut离散化
    df
    

    在这里插入图片描述
    当然也可以把q设置为一个列表

    df = pd.DataFrame({'age':[20, 22, 25, 27, 21, 23, 37, 31, 61, 45, 41, 32]}) # 创建模拟年龄数据
    q = [0,0.25,0.5,0.75,1]
    df = pd.qcut(df['age'],q,labels=False) # qcut离散化
    df
    

    在这里插入图片描述

    3. 实现sql中的 case when …then …else …end(手动离散化)

    有很多种实现的方式

    方式一:

    df = pd.DataFrame({'age':[20, 22, 25, 27, 21, 23, 37, 31, 61, 45, 41, 32,200,-100]}) # 创建模拟年龄数据
    df['b_age'] = -1
    df['b_age'][(df['age']<=25) & (df['age']>=18)] = 0
    df['b_age'][(df['age']> 25) & (df['age']<= 35)] = 1
    df['b_age'][(df['age']> 35) & (df['age']<= 60)] = 2
    df['b_age'][(df['age']> 60) & (df['age']<= 100)] = 3
    df
    

    在这里插入图片描述
    方式二:

    df = pd.DataFrame({'age':[20, 22, 25, 27, 21, 23, 37, 31, 61, 45, 41, 32,200,-100]}) # 创建模拟年龄数据
    df['b_age'] = -1
    df.loc[df['age'].between(18,25,inclusive=True),'b_age'] = 0
    df.loc[df['age'].between(25,35,inclusive=True),'b_age'] = 1
    df.loc[df['age'].between(35,60,inclusive=True),'b_age'] = 2
    df.loc[df['age'].between(60,100,inclusive=True),'b_age'] = 3
    df
    

    在这里插入图片描述

    方式三:(个人比较喜欢,因为这种类似于直接写python函数)

    df = pd.DataFrame({'age':[20, 22, 25, 27, 21, 23, 37, 31, 61, 45, 41, 32,200,-100]}) # 创建模拟年龄数据
    def age_cut(age):
        if age >= 18 and age <= 25:
            b_age = 0
        elif age > 25 and age <= 35:
            b_age = 1
        elif age > 35 and age <= 60:
            b_age = 2
        elif age > 60 and age <= 100:
            b_age = 3
        else:
            b_age = -1
        return b_age
    df['age'] = df['age'].apply(lambda x:age_cut(x))
    df
    

    在这里插入图片描述
    方式四:np.where嵌套(不推荐,只是多一个思路)

    df = pd.DataFrame({'age':[20, 22, 25, 27, 21, 23, 37, 31, 61, 45, 41, 32,200,-100]}) # 创建模拟年龄数据
    df['b_age'] = np.where(
        df['age'].between(18,25,inclusive=True),
        0,
        np.where(df['age'].between(25,35,inclusive=True),1,
        np.where(df['age'].between(35,60,inclusive=True),2,
        np.where(df['age'].between(60,100,inclusive=True),3,-1)
                )
        )
    )
    df
    

    在这里插入图片描述
    方式五:np.select(不推荐,只是提供一个思路)

    df = pd.DataFrame({'age':[20, 22, 25, 27, 21, 23, 37, 31, 61, 45, 41, 32,200,-100]}) # 创建模拟年龄数据
    df['b_age'] = np.select(
        [
            df['age'].between(18, 25, inclusive=True), 
            df['age'].between(25, 36, inclusive=True),
            df['age'].between(35, 60,inclusive=True),
            df['age'].between(60, 100,inclusive=True)
        ], 
        [
            0, 
            1,
            2,
            3
        ], 
        default=-1
    )
    df
    

    在这里插入图片描述

    4.(一维)聚类离散化

    data = pd.DataFrame({'age':[20, 22, 25, 27, 21, 23, 37, 31, 61, 45, 41, 32]}) # 创建模拟年龄数据
    data = data['age'].copy()
    k = 4
    d1 = pd.cut(data, k, labels = range(k))  # 等宽离散化,各个类比依次命名为0,1,2,3
    #等频率离散化
    w = [1.0*i/k for i in range(k+1)]
    w = data.describe(percentiles = w)[4:4+k+1]  # 使用describe函数自动计算分位数
    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 = 4)  # 建立模型,n_jobs是并行数,一般等于CPU数较好
    kmodel.fit(np.array(data).reshape((len(data), 1)))  # 训练模型
    c = pd.DataFrame(kmodel.cluster_centers_).sort_values(0)  # 输出聚类中心,并且排序(默认是随机序的)
    w = c.rolling(2).mean()  # 相邻两项求中点,作为边界点
    w = w.dropna()
    w = [0] + list(w[0]) + [data.max()]  # 把首末边界点加上
    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()
    

    在这里插入图片描述

    后记

    相信看完这篇博客,对于连续数据离散化的问题应该可以很容易的解决了。

    展开全文
  • 数据预处理的作用在于在之后的训练和预测中能够将我们的预测划分在...介绍在python中如何进行连续数据离散化,用到panda.cut函数,分类数为4。 import pandas as pd import numpy as np bins = [0, 5, 10, 20, 80...
  • 详细描述了连续数据离散化方法,阐述的比较详细
  • 1定义: ...每当连续数据离散化时,总会存在一定程度的离散化误差。目标是将数量减少到手头的建模目的可忽略不计的水平。 2.当前状态current status 早期,诸如等宽(equal-width),等频(equal-frequen
  • 连续数据离散化场景: 数据分析和统计的预处理阶段,经常的会碰到年龄、消费等连续型数值,我们希望将数值进行离散化分段统计,提高数据区分度,那么下面介绍一个简单使用的pandas中的 cut() 方法 函数用法: **...
  • 转至http://blog.csdn.net/programmer_wei/article/details/17200085 什么是离散化: ... 为什么要离散化 连续属性离散化的目的是为了简化数据结构,数据离散化技术可以用来减少给定连续属性值的个数。离散化方法...
  • 离散化背景连续数据经常采用离散化处理之后再放入模型。离散化可以理解为提取特征的过程,比如在LR模型,由于是广义线性模型表达能力有限,因此通过特征离散化来了提高非线性学习能力主要方法等距离散取值范围均匀划...
  • 针对机器学习领域中的诸多优秀算法只能处理离散属性的特点,提出一种基于词出现和信息增益相结合的多区间连续属性离散化方法(multi-interval discretization based on term presence and information gain,MTPIG)...
  • 粗糙集理论用于数据挖掘要求连续数据离散化,在分析目前的离散化算法的基础上,提出了一种局部离散化方法,以期降低断点、规则数量。使用此算法在模拟电路故障数据上进行的试验,表明其性能较好。
  • python数据预处理 :数据离散化

    千次阅读 2018-11-26 20:17:49
    何为离散化: 一些数据挖掘算法中,要求数据是分类属性形式。因此常常需要将连续属性的数据通过断点进行划分最后归属到不同的分类,即离散化。 为什么要离散化: ...连续数据离散化方法: 分位数法:使用四分...
  • 为了利用信息系统对象在数据空间中分布,通过对对象的模糊聚类,计算每一类在坐标轴上的统计值。利用正态概率分布特性,引入重叠度和空隙度选取合适的概率,确定最优的区间端点,实现连续属性离散化
  • 本文针对区间型数据离散化问题进行研究,提出一种连续区间属性值离散化的新方法,提出一种新的变量一关联度,通过区间数的关联度来描述对象间的相关性,定义关联度阈度确定离散关系,来实现对区间数据的离散化。...
  • 通过在UCI数据库上选取的4组数据进行实验,首先离散化,再通过粗糙集约简,最后使用k NN(k=10)分类器,并和其他两种离散化方法进行对比.研究结果表明:该方法能够提高离散化的效率,降低实验的复杂度,并有效减少断点数.
  • 我们先回忆一下,连续数据离散化方法中无监督学习方法主要有两种: 等宽法 等宽法即是将属性值分为具有相同宽度的区间,区间的个数k根据实际情况来决定。比如属性值在[0,60]之间,最小值为0,最大值为60,我们要将...
  • 我们先回忆一下,连续数据离散化方法中无监督学习方法主要有两种: 等宽法 等宽法即是将属性值分为具有相同宽度的区间,区间的个数k根据实际情况来决定。比如属性值在[0,60]之间,最小值为0,最大值为60,我们...
  • 数据离散化

    2021-04-05 19:05:01
    连续属性离散化的目的是为了简化数据结构,数据离散化技术可以用来减少给定连续属性值的个数。离散化方法经常作为数据挖掘的工具。 2 什么是数据的离散化 连续属性的离散化就是在连续属性的值域上,将值域划分为...
  • 连续变量离散化的几种方法

    千次阅读 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_...
  • 连续特征离散化常用方法

    千次阅读 2018-04-25 23:05:27
    无监督方法 1、等宽分箱法 比如我们的特征数据在0-100,之间,等宽分成10份,分别为[0-10],[11-20],...,[90-100] 假设有个数据值为11,那么其对应的one-hot向量为[0,1,0,0,0,0,0,0,0,0] 等宽分箱法的缺陷:...
  • 利用粗糙集方法处理数据不需要先验知识的特点,以基于最小描述长度原理的决策系统信息熵作为离散化过程的评价函数,并由属性断点平均重要性确定多连续属性的离散化顺序,构建了自动的离散化方法RSE-Chi2。...
  • Pandas数据离散化

    2020-07-30 13:46:13
    连续属性离散化的目的是为了简化数据结构,数据离散化技术可以用来减少给定连续属性值的个数。离散化方法经常作为数据挖掘的工具。 如何实现数据的离散化: 案例:将上面的例子用pandas实现。 准备数据: data = ...
  • Pandas之数据离散化

    2020-12-22 23:11:08
    连续属性离散化的目的是为了简化数据结构,数据离散化技术可以用来减少给定连续属性值的个数。离散化方法经常作为数据挖掘的工具。 2 什么是数据的离散化 连续属性的离散化就是在连续属性的值域上,将值域划分为若干...
  • 随着数据挖掘和知识发现等技术的迅速发展,出现了很多数据离散的算法,但是,已有的离散化方法大多是针对固定点上的连续属性值的情况,实际应用中大量存在着连续区间属性值的情况。针对这一问题,提出了一种连续区间...
  • 今天学习了将连续数据离散化方法,主要有三个:等宽法、等频法、聚类法 等宽法是将数据的值域等分,每个部分拥有相同的宽度,然后为每个部分打上不同的符号或数值进行离散化; 等频法则是要求每个部分的记录数...
  • 连续属性的离散化就是在数值的取值范围内设定若干点离散的划分点,划分区间,然后用不同的符号去表示落在每个子区间的数据值。 离散化涉及两个任务,确定分类数以及将连续属性值映射到这些分类值。 2.方法 (1)...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 509
精华内容 203
关键字:

连续数据离散化方法